andi: Probleme mit ID beim Auslesen aus db

Hallo zusammen,
Habe folgendes Problem mit dem ich mich jetzt schon länger rumschlage aber bis jetzt keine Lösung gefunden habe:
Ich habe ein Eingabeformular. Die Daten, die in dieses Formular eingetragen werden, werde mit dem Nachfolgenden Script in die DB geschrieben. Soweit kein Problem. Mit dem Link im "header" gleich am Anfang dieser Seite wird automatisch auf eine Folgeseite weitergelinkt wo die soeben in die DB eingetragenen Werte wieder ausgegeben werden. Geht auch. Nur wie kann ich nur den EINEN soeben eingtragenen Datensatz anzeigenlassen? Bei mir funktionierts nur mit allen Datensätzen. Sobald ich eine WHERE Bedingnung für die ID eingebe, wird gar nichts mehr angezeigt.
Danke Euch für Eure Hilfe schon mal im vorhinein.
Andi

test1.php
1. Daten werden eingetragen

<FORM name="frmRegister" action="test2.php" method="post">
<table width="600" border="0" cellspacing="1" cellpadding="3" bgcolor="#336699">
<input type="hidden" name="txtid" value="$sid">
<tr>
<td bgcolor="#336699" colspan="3" align="center"><font size="3" color="#ffffff"><b>KVS-FAQ</b></font><br><font color="#ffffff">Fragen und Antworten</font></td>
</tr>
<tr>
<td bgcolor="#ffffff" width="200">Eingabe1</td>
<td bgcolor="#ffffff" width="200">Eingabe2</td>
<td bgcolor="#ffffff" width="200">Eingabe3</td>
</tr>
<tr>
<td bgcolor="#ffffff" width="200"><input type="text" name="txteingabe1" size="15" maxlenght="15"></td>
<td bgcolor="#ffffff" width="200"><input type="text" name="txteingabe2" size="15" maxlenght="15"></td>
<td bgcolor="#ffffff" width="200"><input type="text" name="txteingabe3" size="15" maxlenght="15"></td>
</tr>
<tr>
<td bgcolor="#ffffff" align="center" colspan="3"><INPUT type="button" value="Nächste Seite" ONCLICK="verify_page()"></TD>
</TR>
</TABLE>
</FORM>

test2.php
2. Daten werden in die DB eingetragen

<?
header("Location: http://".$_SERVER["HTTP_HOST"]."intranet.bfi.wien/scripts/kvs_faq/test3.php");
?>
<html>
<head>
<title>Intranet bfi-Wien - KVS-Fragen und Antworten</title>
<style>
a:link {color:#cc0000; text-decoration:none; font-family:arial,helvetica,sans-serif; font-size:9pt;}
a:active {color:#cc0000; text-decoration:none; font-family:arial,helvetica,sans-serif; font-size:9pt;}
a:visited {color:#cc0000; text-decoration:none; font-family:arial,helvetica,sans-serif; font-size:9pt;}
a:hover {color:#000000; text-decoration:none; font-family:arial,helvetica,sans-serif; font-size:9pt;}
td {font-family:arial,helvetica,sans-serif; color:#000000; font-size:9pt;}
</style>
</head>
<BODY bgcolor="#ffffff">

<br>
<?
include("admin/config1.php");
mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");
// Werte des Formulars
$sid   = $HTTP_POST_VARS["txtid"];
$eingabe1  = $HTTP_POST_VARS["txteingabe1"];
$eingabe2  = $HTTP_POST_VARS["txteingabe2"];
$eingabe3  = $HTTP_POST_VARS["txteingabe3"];
// in DATENBANK einfügen
$sqlInsert  = "INSERT INTO test (eingabe1, eingabe2, eingabe3) VALUES ('$eingabe1', '$eingabe2', '$eingabe3');";
$result = mysql_query($sqlInsert);
if (mysql_error())
{
echo mysql_error();
exit;
}
?>
</BODY>
</html>

test3.php
3.Daten werden wieder ausgelesen

<?
$db = mysql_connect("","","");
mysql_select_db("test_andi",$db);
$result = mysql_query("SELECT id,eingabe1,eingabe2,eingabe3 FROM test",$db);
?>
<table width="500" cellspacing="1" cellpadding="3" bgcolor="#336699">
<TR>
<TD bgcolor="#336699" align="center">
<font size="3" color="#ffffff"> </td>
</tr>
</table>
<br>
<?
while($row=mysql_fetch_array($result))
{
$id=$row["id"];
$eingabe1=$row["eingabe1"];
$eingabe2=$row["eingabe2"];
$eingabe3=$row["eingabe3"];
echo "".$id."  ".$eingabe1."  ".$eingabe2."  ".$eingabe3."<br>";
}
?>

  1. Hallo andi,

    Nur wie kann ich nur den EINEN soeben eingtragenen Datensatz anzeigenlassen?

    dafür ist die Funktion mysql_insert_id() ->http://www.php.net/manual/de/function.mysql-insert-id.php zuständig, dürfte aber nur im gleichen Script funktionieren.

    Bei mir funktionierts nur mit allen Datensätzen. Sobald ich eine WHERE Bedingnung für die ID eingebe, wird gar nichts mehr angezeigt.
    wie sieht die WHERE-Bedingung aus?

    <table width="600" border="0" cellspacing="1" cellpadding="3" bgcolor="#336699">
    <input type="hidden" name="txtid" value="$sid">

    vor dem <input> fehlt noche in <tr> und ein <td> (<input> darf nicht direkt innerhalb von <table> stehen)

    <font size="3" color="#ffffff"><b>KVS-FAQ</b></font><br><font color="#ffffff">Fragen und Antworten</font></td>

    *brr* schmeiß doch die komischen <font>s weg :-)

    <td bgcolor="#ffffff" width="200">Eingabe1</td>

    für bgcolor und width gibt es ebenfalls css

    <?
    header("Location: http://".$_SERVER["HTTP_HOST"]."intranet.bfi.wien/scripts/kvs_faq/test3.php");

    hier leitest du weiter..

    [...]
    mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");

    ...und hier willst du Daten eintragen - bei einem header(...) wird der Code drunter soweit ich weiß nicht mehr ausgeführt.

    $sid   = $HTTP_POST_VARS["txtid"];

    nimm besser $_POST["txtid"] (wenn du eine neuere php-Version hat)

    <table width="500" cellspacing="1" cellpadding="3" bgcolor="#336699">
    <TR>
    <TD bgcolor="#336699" align="center">
    <font size="3" color="#ffffff"> </td>
    </tr>
    </table>

    mhh... für was ist diese Tabelle?

    while($row=mysql_fetch_array($result))

    da fehlt hinter $result noche ein "MYSQL_ASSOC"

    echo "".$id."  ".$eingabe1."  ".$eingabe2."  ".$eingabe3."<br>";

    die zwei Anführungszeichen und den Punkt am Anfang kannst du weglassen.

    Grüße aus Nürnberg
    Tobias