Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular mit Datumsfeld...
php-anfaenger 16-07-2004, 05:27 Hallo,
wie kann ich bei einem Insert oder Update eines Feldes einen "0" oder NULL wert festlegen ?
Die DB verlangt immer eine korrekt Datumseingabe ansonsten kriege ich nen Convertion String error from " " weil ja nix drin steht ?!?
Ergo muss ich leider dieses Feld mit einem Pseudodatum füllen wasich eigentlich irgendwie verhindern möchte.
Danke für die Hilfe
wie sieht den die Tabellendefinition (create table ...) aus?
php-anfaenger 16-07-2004, 09:06 grml..... ist ne Interbase SQL DB.
CREATE TABLE T_USERS
ADD DATUM DATE
Mehr net...
normalerweise wenn du NULL bei der Definition zulässt, dann brauchst du die Spalte in INSERT/UPDATE nicht anzugeben, wenn du die Spalte nicht befüllen willst, das ist bei jedem DBMS so. Es sei denn du hast NOT NULL definiert. Prüfe das bitte mal, fragt den Database-Admin, wenn du dich nicht aus kennt ;)
php-anfaenger 16-07-2004, 09:52 Naja asp ich gebe ja im Update set alle table an da man alle ändern kann,
zumindest an der Zahl ca. 5...
Und gerade davon 3 Datumsfelder... grml
Kann ich ein Feld wenn es leer bleibt von dem Update/Insert ausgrenzen ?
Original geschrieben von php-anfaenger
Kann ich ein Feld wenn es leer bleibt von dem Update/Insert ausgrenzen ?
Aber ja doch.
php-anfaenger 16-07-2004, 10:04 if $_POST['datum'] == 0 {
nix ist mit update oder wie ?
dann müsste ich aber mehrere Updates definieren oder ?
boah ist früh am morgen kann wohl noch nicht klar denken.
ChristianM. 16-07-2004, 10:05 0000-00-00 <= Das ist der standart Wert wenn das Feld leer ist.
php-anfaenger 16-07-2004, 10:07 No chance bei 0000-00-00 bekomme ich nen Convertion error from String...
Original geschrieben von ChristianM.
0000-00-00 <= Das ist der standart Wert wenn das Feld leer ist. erkläre mal warum. :confused:
Original geschrieben von php-anfaenger
if $_POST['datum'] == 0 {
nix ist mit update oder wie ?
dann müsste ich aber mehrere Updates definieren oder ?
boah ist früh am morgen kann wohl noch nicht klar denken.
warum mehrere Updates?
z.B. du hast in der Tabelle field1 bis field5
du kannst ohne weiteres update tblTable set field1='bla', field3='blabla' where field2='blablabla', wenn die Definition der Feldern 4 und 5 zulässt.
php-anfaenger 16-07-2004, 10:26 Ja aber sobald ich nix drin stehen haben krieg ich wieder den
Convertion Strin error from ''....
das heisst ich hab das Update set aber sobald ein Feld ganz leer bleibt,
bis auf das eine text feld was varchar ist gehts nicht.
liegt das an dem Feld ?
wenn ja habe ich nen Problem weil ne andere Auswahl als DATE gibts leider net im IB Manager...
ChristianM. 16-07-2004, 10:40 Date hat eine vorgeschriebene Formatierung YYYY-MM-DD. Wenn du nun einen leeren Eintrag erstellen möchtest musst du dich trots dem an die Formatvorgabe halten. Daraus resultiert eine Eingabe von 0000-00-00
php-anfaenger 16-07-2004, 10:44 Naja die DB möchte ich sehen...ka obs bei MySQL so geht...
Aber ich habe mal nen Update gefahren auf 0000-00-00 und das kommt
dabei raus:
Warning: ibase_query(): value exceeds the range for valid dates in F:\WEB\xampp\htdocs\test\adodb\drivers\adodb-ibase.inc.php on line 351
0: value exceeds the range for valid dates
Soviel zu Intelligenten Datenbanken !
;) :D
ChristianM. 16-07-2004, 11:13 phpMyAdmin:
[ich hätte gerne eine hr]
Affected rows: 1
SQL-query : [Edit] [Create PHP Code]
UPDATE `test` SET `datum` = '0000-00-00' WHERE `datum` = '2004-07-06' LIMIT 1 ;
Showing rows 0 - 0 (1 total, Query took 0.0015 sec)
SQL-query : [Edit] [Explain SQL] [Create PHP Code]
SELECT *
FROM `test` LIMIT 0 , 30
datum
Edit Delete 0000-00-00
[/ich hätte gerne eine hr]
bei mir fluppt das wunderbar.
php-anfaenger 16-07-2004, 13:20 Hast du ne MySQL DB ?
Also ich hab immernoch ne Interbase SQL DB...;)
ChristianM. 16-07-2004, 13:27 ohh :)
willste ne mysql mieten :readthis: ;)
php-anfaenger 16-07-2004, 13:51 Ne freeware DB mieten ? ;)
ChristianM. 16-07-2004, 15:21 :D Man kanns ja mal versuchen.
php-anfaenger 17-07-2004, 12:13 asp wie meinst du das genau mit dem ausgrenzen der betroffenen felder eines Updates auf einen Table ?
genau wie ich im Bsp. gezeigt habe, liest nochmals ;).
Das geht, wenn z.B. du in der Tabellendefinition sowas wie:
...
field4 datetime NULL
field5 datetime NULL
...
php-anfaenger 17-07-2004, 14:59 Hi asp,
leider bekomme ich egal wie ich das Feld festlege immer wieder
diesen Convertion String error.
Als wenn er wirklich keine leeren felder und auch keine "0" oder NULL
akzeptiert.
Angehängt ist mal nen Screenie für die Werte die ich dem Feld geben kann.
selbst wenn du "not NULL" nicht angekreuzt hast?
php-anfaenger 17-07-2004, 15:16 jupp leider :(
php-anfaenger 17-07-2004, 18:51 Okay nochmal anders gefragt asp wie könnte ich ihm sagen
im PHP Script das er aus meinem Form die Datumsfelder die
leer sind aus dem Update SET rauslassen soll... ?
weil dann hätte ich das Problem ja nicht mehr. ;)
So wie es jetzt ist macht er das Feld ja auch mit auch wenn ich nix
eintrage oder nur 0 aber das geht ja leider nicht.
Du prüfst einfach auf Gültigkeit des Formularfeldes. Ich schlage vor, du benennst die Formularfelder genauso wie die Tabellenspalten, dann kannst du den ArrayKey als Spaltennamen und dessen Inhalt als Wert nehmen. etwa so
foreach ($_POST as $key => $value)
if (...) // prüfe auf Gültigkeit, wenn ja
$updateFieldList[] = $key."='".$value."'";
$sql = 'update deineTabelle set '.implode(',',$updateFieldList).' where <deineBedingung>';
...
php-anfaenger 22-07-2004, 08:36 Die Idee ansich ist super asp...
Aber er nimmt das implode nicht an bei mir...
Fehler: Token unknown char implode....
ich habe irgendwie das Gefühl, dass dein Entwicklungsrechner 'ne Macke hat :p
php-anfaenger 22-07-2004, 09:16 lol ...
:D
|