Hallo zusammen,
also ich versuche gerade anhand des Buches "Einstieg in PHP 5.4 und MySQL 5.5" ein wenig php zu erlernen. In dem Buch gibt es eine Lektion mit dem Titel "Ändern eines bestimmten Datensatzes". Folgender Ablauf:
· Dem Benutzer werden alle Datensätze angezeigt (a.php).
· Er wählt denjenigen Datensatz aus, den er ändern möchte (a.php).
· Der gewählte Datensatz wird in einem Formular angezeigt (b.php).
· Der Benutzer gibt die Änderungen ein und führt sie aus (b.php -> c.php).
Zum Problem: Nachdem ein Datensatz in
a.php ausgewaählt wurde und der submit button geklickt wurde öffnet sich
b.php soweit so gut. Nun sollten jedoch in den Eingabe-Feldern bereits Werte drin stehen bzw. : hersteller, typ, gb ... , weil dies ja mit den Values (die ihren inhalt aus einer sql-abfrage beziehen) so festgelegt sein sollte.
Ist aber leider nicht der Fall. Statt dessen die Warnung:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\www\b.php on line 15
Damit kann ich nur irgendwie nich so viel anfangen ... Fehlerbehandlung kommt auch erst s viel später im Buch dran ^^ . Nein, mahl ernsthaft, ich glaube das ich wiedermahl irgendwo ein punkt oder ähnliches nicht gesetzt habe, weswegen wieder das gesammte Programm nicht läuft.
Hoffe wirklich das mir einer nen guten tipp geben kann, habs mir auch natürlich selber schon etwa zehn mahl durchgelesen aber nichts gefunden, weis aber das es eigendlich klappen sollte weil, ein im prinzip selbes aus dem buch -fehler frei- funtioniert.
a.php
PHP-Code:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>Wählen Sie aus, welcher Datensatz geändert werden soll:</p>
<form action = "b.php" method = "post">
<?php
mysql_connect("","root");
mysql_select_db("hardware");
$res = mysql_query("select * from fp");
$num = mysql_num_rows($res);
// Tabellenbeginn
echo "<table border='1'>";
// Überschrift
echo "<tr><td>Auswahl</td><td>Hersteller</td><td>Typ</td>";
echo "<td>GB</td> <td>Preis</td>";
echo "<td>Artikelnummer</td> <td>Datum</td> </tr>";
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td><input type='radio' name='auswahl'";
echo " value='" . $dsatz["artnummer"] . "' /></td>";
echo "<td>" . $dsatz["hersteller"] . "</td>";
echo "<td>" . $dsatz["typ"] . "</td>";
echo "<td>" . $dsatz["gb"] . "</td>";
echo "<td>" . $dsatz["preis"] . "</td>";
echo "<td>" . $dsatz["artnummer"] . "</td>";
echo "<td>" . $dsatz["prod"] . "</td>";
echo "</tr>";
}
// Tabellenende
echo "</table>";
?>
<p><input type="submit" value="Datensatz anzeigen" /></p>
</form>
</body>
</html>
b.php
PHP-Code:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
if (isset($_POST["auswahl"]))
{
mysql_connect("","root");
mysql_select_db("hardware");
$sqlab = "select * from fp where
artnummer = " . $_POST["auswahl"];
$res = mysql_query($sqlab);
$dsatz = mysql_fetch_assoc($res);
echo "<p>Führen Sie die Änderungen durch,<br />";
echo "betätigen Sie anschließend den Button</p>";
echo "<form action = 'c.php' method = 'post'>";
echo "<p><input name='her' value='" . $dsatz["hersteller"] . "' /> Hersteller</p>";
echo "<p><input name='typ' value='" . $dsatz["typ"] . "' /> Typ</p>";
echo "<p><input name='gb' value='" . $dsatz["gb"] . "' />
GB</p>";
echo "<p><input name='pre' value='" . $dsatz["preis"] . "' />
Preis</p>";
echo "<p><input name='art' value='" . $_POST["auswahl"] . "' /> Artikelnummer</p>";
echo "<p><input name='pro' value='" . $dsatz["prod"] . "' /> Geburtstag</p>";
echo "<input type='hidden' name='oriart' value='" . $_POST["auswahl"] . "' />";
echo "<p><input type='submit' value='Anderungen in Datenbank speichern' />";
echo " <input type='reset' /></p>";
echo "</form>";
}
else
echo "<p>Es wurde kein Datensatz ausgewählt</p>";
?>
</body>
</html>
c.php
PHP-Code:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
mysql_connect("","root");
mysql_select_db("hardware");
$sqlab = "update fp set"
. " hersteller = '" . $_POST["her"] . "',"
. " typ = '" . $_POST["typ"] . "',"
. " gb = " . $_POST["gb"] . ","
. " preis = " . $_POST["pre"] . ","
. " artnummer = '" . $_POST["art"] . "'"
. " prod = '" . $_POST["pro"] . "'"
. " where artnummer = " . $_POST["oriart"];
mysql_query($sqlab);
$num = mysql_affected_rows();
if ($num>0)
echo "<p>Der Datensatz wurde geändert</p>";
else
echo "<p>Der Datensatz wurde nicht geändert</p>";
?>
<p>Zurück zur <a href="a.php">Auswahl</a></p>
</body>
</html>
... warum mussn das so kompliziert sein