PEAR-Forum.de Übersicht Thema anzeigen - Aus Quickform Datumsfeld in DB eintragen

Aus Quickform Datumsfeld in DB eintragen


 

PEAR-Forum.de Übersicht » Database
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
studidani
Neuer User


Anmeldungsdatum: 16.04.2009
Beiträge: 4

Beitrag16.04.2009 18:20    Aus Quickform Datumsfeld in DB eintragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
matze145
Neuer User


Anmeldungsdatum: 14.04.2009
Beiträge: 3

Beitrag17.04.2009 13:10     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
mark
Power User


Anmeldungsdatum: 31.05.2004
Beiträge: 970

Beitrag17.04.2009 19:35     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen PEAR-User
studidani
Neuer User


Anmeldungsdatum: 16.04.2009
Beiträge: 4

Beitrag18.04.2009 8:05     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
mark
Power User


Anmeldungsdatum: 31.05.2004
Beiträge: 970

Beitrag18.04.2009 11:44     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen PEAR-User
studidani
Neuer User


Anmeldungsdatum: 16.04.2009
Beiträge: 4

Beitrag18.04.2009 12:16     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
mark
Power User


Anmeldungsdatum: 31.05.2004
Beiträge: 970

Beitrag18.04.2009 12:18     Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen PEAR-User
studidani
Neuer User


Anmeldungsdatum: 16.04.2009
Beiträge: 4

Beitrag18.04.2009 17:36     Antworten mit Zitat

Dann erhalte ich folgenden Fehlermeldung:

Code:
ErrorInsert data not valid for column 'Anmeldefrist' ('-00-00')
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mark
Power User


Anmeldungsdatum: 31.05.2004
Beiträge: 970

Beitrag18.04.2009 18:19     Antworten mit Zitat

Bist du sicher, dass du die aktuelle Version von DB_Table installiert hast? Oder hast du vielleicht das "Recasten" abgeschaltet?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen PEAR-User
Beiträge der letzten Zeit anzeigen:   
Diese Seite übersetzen
PEAR-Forum.de Übersicht » Database
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
   Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Zu Deinen Favoriten hinzufügen

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen