Formular - Daten in eine Datenbank schreiben/ändern/löschen

greenslot

Mitglied
Hallo zusammen,

ich habe mir folgendes Formular gebastelt, mit dem man Namen und Telefonnummern in eine Datenbank schreiben soll.

Das Eintragen und Löschen klappt, nur das Ändern leider nicht.

Wenn man einen Eintrag ändern will, bekommt man immer die Fehlermeldung:
Notice: Undefined index: 10 (Zehnter Eintrag, der z.B. geändert werden soll).


HTML:
...
<script type="text/javascript">

function send(action,id) {

	if(action==0) {
		if (confirm("Neuen Namen eintragen?"))
			document.form.action.value = "insert";
		else
			return;
		}

	else if(action==1)
		document.form.action.value = "update";

	else if(action==2) {
		if (confirm("Name mit id " + id + " löschen?"))
			document.form.action.value = "delete";
		else
			return;
		}
	
	document.form.id.value = id;
	document.form.submit();
}

</script>

<body>
<?php

/* Datenbank-Verbindungsdaten */

$mysql_connect = mysql_connect($host, $user, $password);
$mysql_select_db = mysql_select_db($database);

if (!$mysql_connect) {
?>
<p style="color:#f00;">Die Verbindung zur Datenbank konnte nicht hergestellt werden!</p>
<?php
	exit();
}
?>

<?php
/* Aktionen */
if(isset($_POST["action"])) {

/* Neuer Eintrag */
	if($_POST["action"]=="insert") {
		$select = "INSERT INTO names (name, phone) VALUES ('" . $_POST["name"][0] . "', '" . $_POST["phone"][0] . "')";
		mysql_query($select);
		header("Location: input.php"); /* Browser umleiten */
	}

/* Eintrag ändern */
	else if($_POST["action"]=="update") {
		$id = $_POST["id"];
		$select = "UPDATE names SET name = '" . $_POST["name"][$id] . "', phone = '" . $_POST["phone"][$id] . "' WHERE id = '$id'";
		mysql_query($select);
	}
	
/* Eintrag löschen */
	else if($_POST["action"]=="delete")	{
		$select = "DELETE FROM names WHERE id = '" . $_POST["id"] . "'";
		mysql_query($select);
	}

}
?>

<!-- Formular -->

<form name='form' action='index.php' method='post'>
<input name='action' type='hidden'>
<input name='id' type='hidden'>

<table border="1">
	<tr>
		<td>id</td>
		<td>Name</td>
		<td>Telefonnummer</td>
	</tr>
	<tr> <!-- Neuer Eintrag -->
		<td><em>wird automatisch vergeben</em></td>
		<td><input name='name[0]' size='50'></td>
		<td><input name='phone[0]' size='50'></td>
		<td><a href='javascript:send(0,0);'>eintragen</a></td>
	</tr>
<?php
$select = "SELECT id, name, phone FROM names ORDER BY id";
$result = mysql_query($select);
if (!$result) {die('Fehler: ' . mysql_error());}
while ($dataset = mysql_fetch_assoc($result)) {
?>
	<tr> <!-- Einträge anzeigen -->
		<td><?php echo $dataset['id']; ?></td>
		<td><input name='name[$id]' value='<?php echo $dataset['name']; ?>' size='50'></td>
		<td><input name='phone[$id]' value='<?php echo $dataset['phone']; ?>' size='50'></td>
		<td><a href='javascript:send(1,<?php echo $dataset['id']; ?>);'>ändern</a> | <a href='javascript:send(2,<?php echo $dataset['id']; ?>);'>löschen</a></td>
	</tr>
<?php
}
?>
</table>

</form>

</body>
</html>
 
Zuletzt bearbeitet:
Ist eigentlich noch zu früh für so etwas aber ich versuce es trotzdem.

Schau dir einfach mal den Wuelltext deiner Seite an ob z.B. der Link auch wirklich mit den richtigen Angaben so geschrieben wird wie es sein soll.

Dann könnte auch die UPDATE-Anweisung falsch sein:

SQL:
...WHERE id = '$id'"

Muss das nicht so aussehen

SQL:
...WHERE id = '" .$id ."'"

Lass dir einfach mit echo der Wert von $select ausgeben und schau was dabei rauskommt.

Wobei ich mich jetzt mal nur auf den Fehler selber beziehe. Ob der Code so in Ordnung ist weil die $_POST Werte ungeprüft in die Datenbank geschrieben werden usw. dazu sage ich mal jetzt nichts!
 
Zuletzt bearbeitet:
Moin!

Mit der UPDATE Anweisung klappts, der Fehler liegt wo anders und ist schon fast peinlich. :rolleyes:

Hätte ich eben mal mein Wuelltext (War doch zu früh ;)) angeschaut, dann hätte ich gesehen, dass die ids der Einträge ja gar nicht anzeigt werden, sondern nur die Varibale eingetragen wird.

name[<?php echo $id; ?>] anstatt name[$id].

An die Überprüfung der Eingaben will ich mich jetzt machen. Ich komme auf dich zurück, falls was nicht klappt! ;-)
 
Zurück