[PHP/mySQL] Daten anhand einer ID auslesen und in Felder ausgeben

Chichu McNugget

nicht mehr wegzudenken
Daten anhand einer ID auslesen und in Felder ausgeben

Hallo,

ich habe ein Datenbank mit verschiedenen Einträgen erstellt. Nun will ich, dass diese Einträge anhand der ID ausgegeben werden können. Ich gebe in ein Feld also die ID ein. Es wird ein Formular erstellt und die Daten stehen in verschiedenen Feldern.
Nur irgendwie funzt das nicht so ganz. Hier mein Quellcode.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>News Updaten</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<h3>News Updaten</h3>
<?php
$db = @mysql_connect("localhost", "root", "") or die("Verbindung zu MySQL gescheitert!");
@mysql_select_db("news", $db) or die("Datenbankzugriff gescheitert!");
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<table border="1">
<tr><td>Welche ID?</td><td><input type="text" name="id"> <input type="submit" name="laden" value="Daten Laden"></td></tr>
<?php
if (!empty($_POST["laden"])) {
$sql = "SELECT * FROM news WHERE id='$_POST[id]'";
$result = mysql_query($sql);
mysql_close();
}

?>
<tr><td>Titel:</td><td><input type="text" name="Titel" value="<?php echo $row[Titel] ?>" maxlength="60" size="65">Datum: <input type="text" name="Datum" maxlength="20" value="<?php echo date("d:m:Y")?>"></td></tr>
<tr><td>Text:</td><td><textarea cols="110" rows="6" name="Text"><?php echo $row[Text] ?></textarea></td></tr>
<tr><td>E-Mail:</td><td> <input type="text" name="EMail" maxlength="30" size="25" value="<?php echo $row ?>"</td></tr>
</table>
<input type="submit" value="Update durchführen" name="submit">
</form>
<?php

mysql_close($db);
?>
<p><a href="eingabe_adressen.php">News eingeben</a>
- <a href="update_adressen.php">News updaten</a>
</p>
</body>
<table>
<tr valign="top"><td valign="top"></td></tr>
</table>
</html>
 
Zuerst solltest du dir Gedanken machen, wo du das Array $row beschreibst, nämlich gar nicht.
Du führst die DB-Anfrage durch, liest aber nicht wirklich etwas aus.

Also füge die rot gefärbte Zeile in deinen Quellcode ein.
...
$sql = "SELECT * FROM news WHERE id='$_POST[id]'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
mysql_close();
...

Ein weiterer Tipp:
Beim Ausgeben von assoziativen Arrays solltest du den Array-Index in Anführungsstriche setzen, also echo $row['Text'] statt echo $row[Text]
Denn ohne Anführungsstriche ist es zwischen den eckigen Klammern eigentlich eine Konstante. PHP ist zwar so fehlertolerant, dass es trotzdem funktioniert, unschön ist es aber trotzdem.
 
super danke jetzt funzt es.....
ich hatte das vorher dummerweise
mit while geschrieben...
also:

while "$row=mysql_fetch_assoc($result))

keine Ahnung mehr warum mich muss wohl ein ESEL geknuscht haben.....


Nochmals vielen Dank für deine Hilfe......
 
While würde auch funktionieren, bringt bloß nichts wenn man auf einen Primärkey abfragt, da es eh immer nur einen Eintrag als Ergebnis bringt.
 
Oben