Probleme mit SQL-String

noxid`-

Mitglied
Ich bin erst vor kurzem mit php angefangen und möchte mir n kleines Gästebuch mit Benutzung einer mysql-datenbank basteln. Unter anderem wollte ich so ne Seite zu freischalten/sperren/löschen von Einträgen haben, und auf folgender kam dann mein "Problemchen"...Hab noch nicht die Ahnung und bin sehr dankbar für Hilfe ;)
PHP:
<?php

//löschen
if ($flag==1)
{
$tabellenname = "gastbuch";
$sql = "DELETE FROM $tabellenname WHERE ID=$ID";
$link = mysql_connect("localhost", "cordman", "");
mysql_select_db("page", $link);
$result = mysql_query($sql, $link);
}

//freischalten
if ($flag==2)
{
$tabellenname = "gastbuch";
$sql = "UPDATE FROM $tabellenname SET check=1 WHERE ID=$ID";
$link = mysql_connect("localhost", "cordman", "");
mysql_select_db("page", $link);
$result = mysql_query($sql, $link);
}

//sperren
if ($flag==3)
{
$tabellenname = "gastbuch";
$sql = "UPDATE FROM $tabellenname SET check=-1 WHERE ID=$ID";
$link = mysql_connect("localhost", "cordman", "");
mysql_select_db("page", $link);
$result = mysql_query($sql, $link);
}

// einträge auswählen, die durchgesehen wurden
$tabellenname = "gastbuch";
$sql = "SELECT absender,betreff,message,datum FROM * ORDER BY datum DESC";

//verbinden zur db

$link = mysql_connect("localhost", "cordman", "");
mysql_select_db("page", $link);
$result = mysql_query($sql, $link);
for ($i=0;$i<mysql_num_rows($result);$i++)   <<<<<< 42..
{
$ergebnis[$i]=mysql_fetch_array($result);
}





?>
<html>
<head>
<title>Admin</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<table class="standard" align="center" cellpadding="10" width="400">
<tr>
<td valign="top">



<span class="h_1"><center>Gästebuch</center></span>


<?php

// ausgabe der einträge
for ($i=0;$i<count($ergebnis);$i++)
{

// zeilenumbruch in <br>
$text = nl2br($ergebnis[$i][message]);

//smileys durch gfx ersetzen
$text = str_replace(':-)','<img scr=\"gfx\smile.gif\">', $text);
$text = str_replace(':)','<img scr=\"gfx\smile.gif\">', $text);
$text = str_replace('=)','<img scr=\"gfx\bigsmile.gif\">', $text);
$text = str_replace('8-)','<img scr=\"gfx\eyes.gif\">', $text);
$text = str_replace('8)','<img scr=\"gfx\eyes.gif\">', $text);
$text = str_replace(':-(','<img scr=\"gfx\frown.gif\">', $text);
$text = str_replace(':(','<img scr=\"gfx\frown.gif\">', $text);
$text = str_replace(':-))','<img scr=\"gfx\happy.gif\">', $text);
$text = str_replace(':))','<img scr=\"gfx\happy.gif\">', $text);
$text = str_replace(':-P','<img scr=\"gfx\tongue.gif\">', $text);
$text = str_replace(':P','<img scr=\"gfx\tongue.gif\">', $text);

echo "<table border=\"1\" width=\"400\" align=\"center\"><tr><td  class=\"gb_eintrag\"> ".$ergebnis[$i][datum]."</td><td  class=\"gb_eintrag\"> ".$ergebnis[$i][absender]. "</td></tr>";
echo "<tr><td  class=\"gb_eintrag\" colspan=\"3\"> ".$ergebnis[$i][betreff]." </td></tr>";
echo "<tr><td  class=\"gb_eintrag\" colspan=\"3\"> ".$ergebnis[$i][message]." </td></tr></table>";
echo "<tr><td  class=\"gb_eintrag\" colspan=\"3\"><a href='".$PHP_SELF."?ID=".$ergebnis[$i][ID]."&flag=1'>Eintrag löschen</a></td></td></td>";

if ($ergebnis[$i][check]==-1)
{
echo "<td  class=\"gb_eintrag\" colspan=\"3\"><a href='".$PHP_SELF."?ID=".$ergebnis[$i][ID]."&flag=2'>Eintrag freischalten</a></td></tr></table>";
}
else
{
echo "<td  class=\"gb_eintrag\" colspan=\"3\"><a href='".$PHP_SELF."?ID=".$ergebnis[$i][ID]."&flag=3'>Eintrag sperren</a></td></tr></table>";
}


}
?>

</td>
</tr>
</table>
</body>
</html>

folgende Fehlermeldung : Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\scripte\gb_db\edit.php on line 42
 
Also ich habe jetzt hier keine Lust bis 42 zu zählen, aber diese Fehlermeldung sagt dir, dass dein MySQL_Query kein vernünftiges Ergebnis liefert. Du wirst in dieser Zeile wahrscheinlich irgendwie darauf zugreifen wollen, wo nix ist. Also check mal deine Tabellennamen und Co oder paste entweder nur die unmittelbare Umgebung der betreffenden Zeile oder den gesamten Code bei http://nopaste.php-q.net da hat man nämlich dann Zeilenangaben. In diesem Sinne. Wir bekommen das schon hin :)


mfG
Leuchte
 
Also der Fehler liegt meines Erachtens hier:

PHP:
$sql = "SELECT absender,betreff,message,datum FROM *  ORDER BY datum DESC";

Das sollte wohl dann so heißen:
PHP:
$sql = "SELECT absender,betreff,message,datum FROM $tabellenname ORDER BY datum DESC";

oder so:

PHP:
$sql = "SELECT * FROM $tabellenname ORDER BY datum DESC";
 
Zurück