Guten Tag,
ich habe das Formular von http://www.tutorials.de/php/381470-formular-daten-eine-datenbank-schreiben-aendern-loeschen.html, dass es ermöglicht, Datensätze in eine Datenbank einzutragen. Diese werden dann sofort angezeigt und es besteht die Möglichkeit, diese zu bearbeiten oder zu löschen. Wenn die Anzahl der Einträge steigt, so ist diese Ausgabe aller Datenbankeinträge sehr unübersichtlich und demzufolge unzweckmäßig.
Meine Absicht ist es, eine Abfrage einzufügen, die es ermöglicht, dass nur noch der eine Eintrag aus der Datenbank angezeigt wird, den man tatsächlich bearbeiten oder löschen möchte.
Vorab der gesamte Quelltext, der mir vorliegt:
Im <head>-Bereich:
Dieses Script ermöglicht es, dass beim betätigen des Eintragen- oder Löschenbutton eine Bestätigungsfrage an den Anwender gestellt wird und führt dann die Aktion aus.
Im <body>-Bereich:
Es handelt sich ersteinmal nur um ein Testscript. Es ist sehr einfach gehalten und hat nicht viele Eingabefelder, um erst einmal die Funktionsweise sicherzustellen. Auch habe ich nicht vor, im laufendem Betrieb Tabellenstrukturen zu verwenden, sondern werde dies entsprechend über <div> tun.
Das Script funktioniert auch ohne Probleme. Jedoch sorgt nachfolgender Bereich dafür, dass alle Einträge aus der Datenbank angezeicht werden:
Dies liegt daran, dass alle Einträge abgefragt werden:
Meine Überlegung war, im ersten Schritt die Abfrage zu ändern:
oder
Bei der Möglichkeit WHERE id = '" . $id . "'' gelingt es mir jedoch nicht, einen gewünschten Eintrag über die URL-Eingabe datei.php?id=15 z.B. abzurufen. Gebe ich in der Abfrage ein, WHERE id = 15, so funktioniert es.
Ich habe nun probiert, ein Eingabefeld und einen Aktionsbutton zu verwenden. Wenn ich also in ein Eingabefeld die Zahl 15 eintrage und auf "Anzeigen" klicke, dass der Eintrag angezeigt wird. Jedoch ist es mir nicht geungen den Wert zu bekommen:
z.B. <a href='javascript:send(3,15);'>
mit:
und:
Ich weiß nicht, wie ich das Eingabefeld und den "Abschicken-Butten" einbauen soll, sodass der eingegebene Wert auch übergeben wird.
Für einen Gedankenanstoß oder einen Lösungsansatz bin ich sehr dankbar. Ich habe auch im Bereich Tutorials (php) geschaut, ob ich diese dort finde. Auch die Suche bei Google hat mich nicht weiter gebracht.
ich habe das Formular von http://www.tutorials.de/php/381470-formular-daten-eine-datenbank-schreiben-aendern-loeschen.html, dass es ermöglicht, Datensätze in eine Datenbank einzutragen. Diese werden dann sofort angezeigt und es besteht die Möglichkeit, diese zu bearbeiten oder zu löschen. Wenn die Anzahl der Einträge steigt, so ist diese Ausgabe aller Datenbankeinträge sehr unübersichtlich und demzufolge unzweckmäßig.
Meine Absicht ist es, eine Abfrage einzufügen, die es ermöglicht, dass nur noch der eine Eintrag aus der Datenbank angezeigt wird, den man tatsächlich bearbeiten oder löschen möchte.
Vorab der gesamte Quelltext, der mir vorliegt:
Im <head>-Bereich:
HTML:
<script type="text/javascript">
function send(action,id) {
if(action==0) {
if (confirm("Datensatz eintragen?"))
document.form.action.value = "insert";
else
return;
}
else if(action==1)
document.form.action.value = "update";
else if(action==2) {
if (confirm("Datensatz mit der ID " + id + " löschen?"))
document.form.action.value = "delete";
else
return;
}
document.form.id.value = id;
document.form.submit();
}
</script>
Dieses Script ermöglicht es, dass beim betätigen des Eintragen- oder Löschenbutton eine Bestätigungsfrage an den Anwender gestellt wird und führt dann die Aktion aus.
Im <body>-Bereich:
PHP:
<?php
/* Datenbank-Verbindungsdaten */
// Aufbau der Datenbankverbindung
$connectionid = mysql_connect ("localhost",
"dmname", "dbpass")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");
mysql_select_db("dbname")
or die ("Die Datenbank existiert nicht.");
/* 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);
}
/* 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='' method='post'>
<input name='action' type='hidden' />
<input name='id' type='hidden' />
<table border="1" width="690">
<tr>
<td>id</td>
<td>Name</td>
<td>Telefonnummer</td>
<td> </td>
</tr>
<tr> <!-- Neuer Eintrag -->
<td><em>wird automatisch vergeben</em></td>
<td><input name='name[0]' /></td>
<td><input name='phone[0]' /></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[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['name']; ?>' /></td>
<td><input name='phone[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['phone']; ?>' /></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>
Es handelt sich ersteinmal nur um ein Testscript. Es ist sehr einfach gehalten und hat nicht viele Eingabefelder, um erst einmal die Funktionsweise sicherzustellen. Auch habe ich nicht vor, im laufendem Betrieb Tabellenstrukturen zu verwenden, sondern werde dies entsprechend über <div> tun.
Das Script funktioniert auch ohne Probleme. Jedoch sorgt nachfolgender Bereich dafür, dass alle Einträge aus der Datenbank angezeicht werden:
PHP:
<?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[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['name']; ?>' /></td>
<td><input name='phone[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['phone']; ?>' /></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
}
?>
Dies liegt daran, dass alle Einträge abgefragt werden:
PHP:
$select = "SELECT id, name, phone FROM names ORDER BY id";
Meine Überlegung war, im ersten Schritt die Abfrage zu ändern:
PHP:
$select = "SELECT id, name, phone FROM names WHERE id = '" . $id . "''";
PHP:
$select = "SELECT id, name, phone FROM names WHERE id = '" . $_POST["id"] . "'";
Bei der Möglichkeit WHERE id = '" . $id . "'' gelingt es mir jedoch nicht, einen gewünschten Eintrag über die URL-Eingabe datei.php?id=15 z.B. abzurufen. Gebe ich in der Abfrage ein, WHERE id = 15, so funktioniert es.
Ich habe nun probiert, ein Eingabefeld und einen Aktionsbutton zu verwenden. Wenn ich also in ein Eingabefeld die Zahl 15 eintrage und auf "Anzeigen" klicke, dass der Eintrag angezeigt wird. Jedoch ist es mir nicht geungen den Wert zu bekommen:
z.B. <a href='javascript:send(3,15);'>
mit:
HTML:
else if(action==3)
document.form.action.value = "show";
PHP:
<?php
/* Eintrag anzeigen */
else if($_POST["action"]=="show") {
$select = "SELECT id, name, phone FROM names WHERE id = '" . $_POST["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[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['name']; ?>' /></td>
<td><input name='phone[<?php echo $dataset['id']; ?>]' value='<?php echo $dataset['phone']; ?>' /></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
}
?>
Ich weiß nicht, wie ich das Eingabefeld und den "Abschicken-Butten" einbauen soll, sodass der eingegebene Wert auch übergeben wird.
Für einen Gedankenanstoß oder einen Lösungsansatz bin ich sehr dankbar. Ich habe auch im Bereich Tutorials (php) geschaut, ob ich diese dort finde. Auch die Suche bei Google hat mich nicht weiter gebracht.
Zuletzt bearbeitet: