| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
studidani Neuer User
Anmeldungsdatum: 16.04.2009 Beiträge: 4
|
16.04.2009 18:20 Aus Quickform Datumsfeld in DB eintragen |
|
|
Ich habe mit Hilfe von Quickform und dem Packet DB_Table ein Formular erstellt. U.a. mit einem Datumsfeld. Nun möchte in den Wert des Datumfeldes in die Datenbank schreiben.
Das Formular liefert mir für z.B. Januar - 1 zurück. Aber beim Eintrag in die Datenbank erhalten ich folgenden Fehler: "Insert data not valid for column 'anmeldefrist' ('-00-00')".
In dem SQL-Befehl, welcher an die DB geschickt wird, steht der Wert z.B. 1-1-2010, das würde mysql auch so akzeptieren, aber PEAR akzeptiert das so nicht.
Wähle ich einen Monat im zweistelligem Bereich und auch ein Tag im zweistelligem Bereich, so funktioniert der Eintrag problemlos.
Meine Frage ist nun, muss ich von Hand die fehlende Null hinzufügen oder wie kann ich PEAR es sagen, dass es mir das machen soll. |
|
| Nach oben |
|
 |
matze145 Neuer User

Anmeldungsdatum: 14.04.2009 Beiträge: 3
|
17.04.2009 13:10 |
|
|
Hi,
das müßte sich eigentlich durch Regeln abfangen lassen. Oder du könntest durch eine Funktion die fehlenden Nullen bei den Monaten bzw. Tagen automatisch hinzufügen lassen.
Würde ich mal so spontan sagen .. |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
17.04.2009 19:35 |
|
|
| Zeig uns doch mal die Definiton des Datumsfelds (aus $col). Eigentlich habe ich bei DB_Table bereits recht viele Fälle für Datumsangaben vorgesehen, so dass ein eigenes "Formatieren" der Werte nicht notwendig sein sollte. |
|
| Nach oben |
|
 |
studidani Neuer User
Anmeldungsdatum: 16.04.2009 Beiträge: 4
|
18.04.2009 8:05 |
|
|
| Code: |
'anmeldefrist' => array ('type' => 'date',
'qf_type' => 'date',
'qf_label' => 'Anmeldefrist:',
'qf_opts' => array ('language' => 'de',
'format' => 'dFY',
'minYear' => '2009',
'maxYear' => '2015',
'addEmptyOption' => true,
'emptyOptionValue' => '',
'emptyOptionText' => '----'),
'qf_rules' => array ('required' => 'Bitte legen Sie die Anmeldefrist fest.')),
|
Die Variablen, welche ich dann über das Formular zurück bekommen sind: für Monat 1 und nicht 01. |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
18.04.2009 11:44 |
|
|
| studidani hat folgendes geschrieben: | | Die Variablen, welche ich dann über das Formular zurück bekommen sind: für Monat 1 und nicht 01. |
Okay, das war dann ein Missverständnis. QuickForm sorgt dafür, dass du 1 und nicht 01 zurückbekommst. Wenn du aber die Werte mit DB_Table speicherst, kümmert sich DB_Table darum, dass zwei- oder vierstellige (beim Jahr) Werte zusammengesetzt werden (in der recast()-Methode der DB_Table-Klasse).
Wie speicherst du denn deine Werte und was übergibst du an dieser Stelle? |
|
| Nach oben |
|
 |
studidani Neuer User
Anmeldungsdatum: 16.04.2009 Beiträge: 4
|
18.04.2009 12:16 |
|
|
Ich rufe mit $form->process('formular_verarbeiten'), die Funktion "Formular_Verarbeiten"auf.
Hier erhält man ja die Werte aus dem Formular mit $values, wenn die Funktion wie folgt aufgebaut ist:
| Code: |
function formular_verarbeiten($values)
{ }
|
In dem Array $eintrag, lege ich dann fest, wohin welcher Wert gespeichert wird:
| Code: |
$eintrag = array( 'anmeldefrist' => $values['anmeldefrist']['Y'].'-'.$values['anmeldefrist']['F'].'-'.$values['anmeldefrist']['d']);
|
Um dann mit dem insert-Befehl die Daten in die DB zu schreiben.
| Code: | | $result = $seminartabelle->insert($eintrag); |
Habe nur die wichtigsten Codezeilen geholt. |
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
18.04.2009 12:18 |
|
|
Dann probier bitte mal folgende Zeile aus:
| Code: |
$eintrag = array('anmeldefrist' => $values['anmeldefrist']);
|
DB_Table weiß, dass 'anmeldefrist' ein Datumsfeld ist und baut sich den Datumsstring selbst aus dem Array zusammen. |
|
| Nach oben |
|
 |
studidani Neuer User
Anmeldungsdatum: 16.04.2009 Beiträge: 4
|
18.04.2009 17:36 |
|
|
Dann erhalte ich folgenden Fehlermeldung:
| Code: | | ErrorInsert data not valid for column 'Anmeldefrist' ('-00-00') |
|
|
| Nach oben |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
18.04.2009 18:19 |
|
|
| Bist du sicher, dass du die aktuelle Version von DB_Table installiert hast? Oder hast du vielleicht das "Recasten" abgeschaltet? |
|
| Nach oben |
|
 |
|
|