Gammagandolf Geschrieben 26. Januar 2011 Geschrieben 26. Januar 2011 Hallo an alle, bin ein Anfänger was PHP angeht. Deshalb wende ich mich an euch. Ich habe eine MySQL - DB (mit tablle 'haustier) mit folgenden werten erstellt: Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | besitzer | varchar(20) | YES | | NULL | | | gattung | varchar(20) | YES | | NULL | | | geschlecht | char(1) | YES | | NULL | | | geburtstag | date | YES | | NULL | | | todestag | date | YES | | NULL | | So, nun habe ich ein HTML Formular geschrieben und mit diesem Formular schreibe ich über PHP in die Tabelle haustier... Folgendes Problem: Ich will, dass wenn in das Formular keine Werte angegeben werde, das PHP - Script der Datenbank den Wert "NULL" übergibt. Danke für eure Hilfe. Zitieren
R1I9C8H5I Geschrieben 26. Januar 2011 Geschrieben 26. Januar 2011 ... dann musst du das in deinem SQL-Statement entsprechend berücksichtigen... reicht es aber nicht einfach auch auf einen Leerstring zu prüfen? Zitieren
Gammagandolf Geschrieben 26. Januar 2011 Autor Geschrieben 26. Januar 2011 ... dann musst du das in deinem SQL-Statement entsprechend berücksichtigen... reicht es aber nicht einfach auch auf einen Leerstring zu prüfen? Wenn das Feld leer ist schreibe NULL... soweit ist es mir klar. Einzelne Felder kann ich auch mit eine simplen IF-Anweisung prüfen. Wenn ich aber mehrere Felder habe, die leer sind, geht das nicht mehr. Mir fehlt leider der Ansatz (und natürlich auch die erklärung zu einem passenden Quellcode) wie ich das einfach realisieren kann. Zitieren
Toothrot Geschrieben 28. Januar 2011 Geschrieben 28. Januar 2011 Einzelne Felder kann ich auch mit eine simplen IF-Anweisung prüfen. Wenn ich aber mehrere Felder habe, die leer sind, geht das nicht mehr. Warum? Was hindert Dich daran, jedes Feld zu prüfen? Wie genau sieht Dein Ansatz aus und was funktioniert nicht? Zitieren
Gammagandolf Geschrieben 28. Januar 2011 Autor Geschrieben 28. Januar 2011 (bearbeitet) Hallo ich nochmal, hier ist mein aktueller Lösungsansatz. Ich hab aber keine Ahnung ob der Funktioniert. Hab jetzt übers WE nicht die Möglichkeit es zu testen. Ist der Weg richtig oder bin ich auf dem falschen Pfad. Hier der Code: <?php include ("dbconnect.php"); $name = $_POST["name"]; $besitzer = $_POST["besitzer"]; $gat = $_POST["gattung"]; $ges = $_POST["geschlecht"]; $geb = $_POST["geburtstag"]; $tod = $_POST["todestag"]; switch ($name) { case ($name = ""); $insert = "INSERT INTO haustier (name) values (NULL)"; $toinsert = mysql_query($insert); break; case ($name != ""); $insert = "INSERT INTO haustier (name) values ('$name')"; $toinsert = mysql_query($insert); break; } switch ($besitzer) { case ($besitzer = ""); $insert = "INSERT INTO haustier (besitzer) values (NULL)"; $toinsert = mysql_query($insert); break; case ($besitzer != ""); $insert = "INSERT INTO haustier (besitzer) values ('$besitzer')"; $toinsert = mysql_query($insert); break; } switch ($gat) { case ($gat = ""); $insert = "INSERT INTO haustier (gat) values (NULL)"; $toinsert = mysql_query($insert); break; case ($gat != ""); $insert = "INSERT INTO haustier (gat) values ('$gat')"; $toinsert = mysql_query($insert); break; } switch ($ges) { case ($ges = ""); $insert = "INSERT INTO haustier (ges) values (NULL)"; $toinsert = mysql_query($insert); break; case ($ges != ""); $insert = "INSERT INTO haustier (ges) values ('$ges')"; $toinsert = mysql_query($insert); break; } switch ($geb) { case ($geb = ""); $insert = "INSERT INTO haustier (geb) values (NULL)"; $toinsert = mysql_query($insert); break; case ($geb != ""); $insert = "INSERT INTO haustier (geb) values ('$geb')"; $toinsert = mysql_query($insert); break; } switch ($tod) { case ($tod = ""); $insert = "INSERT INTO haustier (tod) values (NULL)"; $toinsert = mysql_query($insert); break; case ($tod != ""); $insert = "INSERT INTO haustier (tod) values ('$tod')"; $toinsert = mysql_query($insert); break; } ?> [/PHP] Gruß Bearbeitet 28. Januar 2011 von Gammagandolf Zitieren
_n4p_ Geschrieben 28. Januar 2011 Geschrieben 28. Januar 2011 Ist der Weg richtig oder bin ich auf dem falschen Pfad. falscher pfad. switch ($name) { case ($name = ""); $insert = "INSERT INTO haustier (name) values (NULL)"; $toinsert = mysql_query($insert); break; case ($name != ""); $insert = "INSERT INTO haustier (name) values ('$name')"; $toinsert = mysql_query($insert); break; } [/PHP] zunächst: PHP: switch - Manual außerdem legst du pro feld einen datensatz in der tabelle haustiere an, was sicher nicht gewünscht ist. Zitieren
Gammagandolf Geschrieben 31. Januar 2011 Autor Geschrieben 31. Januar 2011 Hallo und danke erstmal an alle. Natürlich, der Code war Quatsch. Wie gesagt bin blutiger Anfänger und versuch mich da nur bischen durchzukämpfen. Trotzdem stehe ich nun auf dem Schlauch und weis nicht, wie ich das Problem lösen kann. Welche Lösungsansätze hättet ihr? Wie gesagt, müsst kein Code posten, allerdings wäre eine Beschreibung der Herangehensweise sinnvoll. Ich danke euch. Zitieren
flashpixx Geschrieben 31. Januar 2011 Geschrieben 31. Januar 2011 Du musst das Statement passend zusammen bauen. Wenn Du was fertiges möchtest nimm ADODB oder PDO. Ansonsten benutze eben z.B. assoziative Arrays in die Du die Feldnamen + Inhalte ablegst und zum Schluss generierst Du daraus dann das fertige SQL Statement (String Konkatination der einzelnen Array Elemente) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.