PDA

Vollstndige Version anzeigen : Spaltentrouble


revere
30-07-2004, 22:30
Hallo Forum,
ich versteh die Welt nicht mehr. Mir scheint, php mag einige Tabellenspalten einfach nicht.
Also folgendes ist passiert:
es gibt eine Tabelle fr ein Gstebuch, artig nach Einfhrungsbuch angelegt und mit Inhalt bestckt. Darin gibt es die Spalten absender, betreff, message, id, datum und check. Check ist per default auf -1 gesetzt und meint, ob ich als GB-Moderator den Eintrag berprft und fr ok befunden habe (-1 = nicht geprft, 1 = berprft). Das soll dann das Anzeigekriterium WHERE sein.

Der Haken ist, dass das Skript ausm Buch nicht funktionert. Ich bekomme diese Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:minixampphtdocsfbgaestebuch_lesen.php on line 11

auch lsst sich diese Spalte nicht mit SELECT anzeigen - im Gegensatz zu allen anderen Spalten. Die kann ich auch als Anzeigekriterium angeben und die funktionieren auch.

Das verflixte Skript ist dies hier:


<?php

$tabellenname="gaeste";
$sql="SELECT absender, betreff, message, datum FROM $tabellenname WHERE check=1 ORDER BY datum DESC";
$link = mysql_connect("localhost", "xyz", "lala");
mysql_select_db("gaestebuch", $link);
$result = mysql_query($sql, $link);



for($i=0;$i<mysql_num_rows($result);$i++) //das ist hier Zeile 11
{
$ergebnis[$i]=mysql_fetch_array($result);
}

?>



Ich hab schon alles mgliche ausprobiert, aber sobald dieses check-Feld ins Spiel kommt, kriege ich immer diese Fehlermeldung. Der reine html-Code wird aber trotzdem ausgefhrt.

Wr fein, wenn sich das mal jemand anschauen knnte und mir sagt, was da nicht stimmt...

Ren_M
30-07-2004, 22:52
$sql = 'SELECT `absender`, `betreff`, `message`, `datum` FROM `' . $tabellenname . '` WHERE `check` = '1' ORDER BY `datum` DESC';

revere
30-07-2004, 23:43
jetzt klappts. Danke!!
Nur verstehen tu ich es immer noch nicht, denn vorher ging es ja auch, nur mit dem check-Feld halt nicht...

revere
30-07-2004, 23:59
hm, also ich hatte deinen Code mit copy&paste bernommen - alles fein. Aber wenn ich alle geraden Anfhrungszeichen durch doppelte und alle schrgen durch einfache ersetze, geht es schon wieder nicht :-(
nach ein paar kleinen Vernderungen schaffe ich es immerhin ohne Fehlermeldung. Nur die Tabelle mit den Daten werden nicht angezeigt...
Das Skript dazu kommt hier:


<?php

for($i=0;$i<count($ergebnis);$i++)
{
echo "<table border=1 width=600><tr><td width=100> ".$ergebnis[$i][datum]." </td><td> ".$ergebnis[$i][absender]." </td></tr>";
echo "<tr><td colspan=2> ".$ergebnis[$i][betreff]." </td></tr>";
echo "<tr><td colspan=2> ".$ergebnis[$i][message]." </td></tr></table>";
}

?>


hab mit den Gnsefen schon ein bisschen rumprobiert, aber erfolglos.
das kann doch nicht so schwer sein, oder?

Ren_M
31-07-2004, 00:25
<?php

$link = mysql_connect('localhost', 'xyz', 'lala');
mysql_select_db('gaestebuch', $link);

$tabellenname = 'gaeste';

$sql = 'SELECT `absender`, `betreff`, `message`, `datum` FROM `' . $tabellenname . '` WHERE `check` = '1' ORDER BY `datum` DESC';
$result = mysql_query($sql, $link);

while ($ergebnis = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo '<table border="1" width="600">' . "rn";
echo ' <tr>' . "rn";
echo ' <td width="100">' . $ergebnis['datum'] . '</td>' . "rn";
echo ' <td>' . $ergebnis['absender'] . '</td>' . "rn";
echo ' </tr>' . "rn";
echo ' <tr>' . "rn";
echo ' <td colspan="2">' . $ergebnis['betreff'] . '</td>' . "rn";
echo ' </tr>' . "rn";
echo ' <tr>' . "rn";
echo ' <td colspan="2">' . $ergebnis['message'] . '</td>' . "rn";
echo ' </tr>' . "rn";
echo '</table>' . "rnrn";
}

?>