Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

... 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.

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?

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 von Gammagandolf

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.

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.

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)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.