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.
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?
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.
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?
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
_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.
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.
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)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden