Auswahlliste aus Datenbank ziehen

Den von mir beschrieben Fehler ist da immer noch drin. Das sieht man hier definitv.
Aber du wolltest ja nicht darauf eingehen - dann such mal schön weiter.
 
PHP:
...
<head>
<?php

	mysql_connect("localhost", "root");
	mysql_select_db("test");

	if(isset($_POST["gesendet"])) {
		$sqlab = "INSERT firmen(firmenname, strasse, bundesland) 
				VALUES . "('" . $_POST["fn"] . "', " 
					   . "'" . $_POST["strasse"] . "', " 
					   . $_POST["bl"] . "') ";

        mysql_query($sqlab);
		
		if(mysql_affected_rows() > 0)
            echo "<p>Es wurde 1 Datensatz hinzugef&uuml;gt</p>";
        else
            echo "<p>Es wurde kein Datensatz hinzugef&uuml;gt</p>";
    }
?>
</head>
...
<body>
<form action="test.php" method="post">
    <p><input name="fn" /> Firmenname</p>
    <p><input name="strasse" /> Strasse</p>
    <p><select name="bl" />
        <?php
            $select = "SELECT * FROM bundesland";
            $query = mysql_query($select);
              
            while ($array = mysql_fetch_array($query)) {
                echo '<option value="'.$array["id"].'">'.$array["bundesland"].'</option>';
            }
        ?>
       </select> Bundesland</p>
	<p>
		<input type="submit" name="gesendet" />
		<input type="reset" />
	</p>
</form>
</body>

das ist mein gesamter code! muss ich die ID mit definieren im INSERT befehl? weil ich die laut datenbank automatisch vergebe.
 
Zuletzt bearbeitet von einem Moderator:
Du hast immer noch den gleichen Fehler.
In der folgenden Zeile ist der Fehler. Ein Punkt und ein Anführungszeichen zuviel
SQL:
 -- du hast
               VALUES . "('" . $_POST["fn"] . "', " 
-- so sollte es sein
               VALUES ('" . $_POST["fn"] . "', "
 
Zuletzt bearbeitet von einem Moderator:
muss ich die ID mitreinschreiben oder kann ich die weglassen.. hab die in der datenbank als AUTO_INCREMENT definiert, dass die mir automatisch ne id vergibt.. oder kann ich das weglassen beim insert befehl?
 
ich hab jetzt NULL Werte gegeben.. zb. will ich das man die strasse nicht unbedingt eingeben muss.. was muss ich dann tun?

ich hab meine datenbank so aufgestellt das der firmenname NOT NULL ist also ein wert enthalten muss sowie bundesland.. aber strasse hab ich auf NULL gesetzt.. wenn ich jetzt das formular ausfülle und das textfeld strasse freilasse fügt er mir den datensatz nicht hinzu!?
 
Wenn du einfach $_POST["strasse"] als NULL hast, dann übergibt es den String "NULL" an die DB da du in deinem INSERT den String mit "" umgibst.


Ich würde es irgnediwe so lösen (ungetestet)
PHP:
$fieldDefs[] = array('name' => 'firmenname', 'nullable' => false, 'value' => $_POST['fn']);
$fieldDefs[] = array('name' => 'strasse',    'nullable' => true,  'value' => $_POST['strasse']);
$fieldDefs[] = array('name' => 'bundesland', 'nullable' => false, 'value' => $_POST['bl']);

$fields = array();
$values = array();
foreach($fieldDefs as $fieldDef){
	if(!(is_null($fieldDef['value']) && $fieldDef['nullable']){
		$fields[] = '`' . $fieldDef['name'] . '`';
//WICHITG: Zur Sicherheit alle Werte mit mysql_escape_string() parsen
//ggf nach Fallunterscheidung ob String oder Number
		$values[] = '"' . mysql_escape_string($fieldDef['value']) . '"';
	}
}


$sql = 'INSERT INTO `firmen` (' . implode(',', $fields) . ') VALUES (' . implode(',', $values) . ')
 
Zurück