Hilfe: MySql - Datenbankzugriff mit php

Skaterfranky

Grünschnabel
Hi,
ich bin leider nicht sehr erfahren, was php & co angeht und jede Zeile, die ich schreibe ist ungefär ne halbe Stunde Arbeit ;) .

Ich versuche im Moment ein kleines Newsscript zu schreiben was auch so halbwegs gut gelingt: Klick to see!
Allerdings gibt er immer nur eine News aus, obwohl im moment 3 in der Datenbank sind und ich weiß nicht wieso - deshalb frag ich hier um Rat :) - Hier erst mal der Code:
PHP:
<body>
<table width="500" border="0">
  <tr>
    <td>
<?
$db_connect = @mysql_connect ("localhost", "xXx", "xXx");
    if (!db_connect) {
	    echo ("Möp - dat lüppt nit :D");
	exit ();
}

$db_news = @mysql_select_db ("usr_web28_3", $db_connect);
    if (!$db_news) {
	    echo ("Das  au nit ..");
	exit ();
}

$list = @mysql_query ("SELECT userid, topic, subtopic, text, catid FROM News_news");

    while ($show = mysql_fetch_array($list)) {
	    $topic = $show["topic"];
	    $s_topic = $show["subtopic"];
	    $mess = $show["text"];
	    $banner = $show["catid"];
                    $uid = $show["userid"];
}


$name = @mysql_query ("SELECT username, email FROM News_user WHERE userid = $uid");
     
    while ($show3 = mysql_fetch_array($name)) {
	    $autor = $show3["username"];
	    $mail = $show3["email"];

}

?>
</td>
  </tr>
  <tr>
    <td>
<?
if ($banner == 1) {
    echo ("<img src=News/banner/other.gif>");
}

if ($banner == 2) {
    echo ("<img src=News/banner/schule.gif>");
}

if ($banner == 3) {
    echo ("<img src=News/banner/klasse.gif>");
}

if ($banner == 4) {
    echo ("<img src=News/banner/news.gif>");
}

if ($banner == 5) {
    echo ("<img src=News/banner/abschluss.gif>");
}

if ($banner == 6) {
    echo ("<img src=News/banner/lehrer.gif>");
}

if ($banner == 7) {
    echo ("<img src=News/banner/event.gif>");
}

if ($banner == 8) {
    echo ("<img src=News/banner/update.gif>");
}
?>
<hr>
</td>
  </tr>
  <tr>
    <td><strong>Autor:</strong>
<?
echo ("<a href='mailto:$mail'>$autor</a>");
?>
      <strong></strong></td>
  </tr>
  <tr>
    <td><strong>Topic:</strong>
      <?
echo ("$topic");
?></td>
  </tr>
  <tr>
    <td><strong>Kurzbeschreibung:</strong><em> <br>
        <?
echo ("$s_topic");
?>
    </em></td>
  </tr>
  <tr>
    <td><strong>Messeage:</strong> <br>
      <?
echo ("$mess");
?></td>
  </tr>
</table>
<hr>
<br>
</body>

So bitte macht euch nicht über den Code oder die Seite lustig ich möcht nur den Fehler behoben haben =)
Das ganze basiert auf einem fertigen Newsscript, dem ich ne eigene Ausgabe verpassen will, weils sonst meist eher mäßig ausschaut.

Hoffe ihr habt mein Problem vertanden und könnt mir weiterhelfen

Mfg

Franky
 
Zuletzt bearbeitet:
Ich kann zwar im Moment nix konstruktives zu Deinem Problem beitragen, ist einfach zu spaet um noch gescheit zu denken, aber ich find das Leuchtreklame-Menue echt cool.
 
Naja, das ist wohl ein kleiner Denkfehler!
PHP:
   while ($show = mysql_fetch_array($list)) {
	    $topic = $show["topic"];
	    $s_topic = $show["subtopic"];
	    $mess = $show["text"];
	    $banner = $show["catid"];
                    $uid = $show["userid"];
}
Hier durchläuft er jedes Ergebnis, also jede Zeile die er aus der Datenbank liest und weißt dann bei jedem Durchlauf die aktuellen Werte den Variablen zu. So hast du am Ende in jeder Variable nur die Werte, die bei dem letzten Durchlauf zugewiesen wurden.
Die Lösung ist recht einfach, du musst die Ausgabe auch in dieser Schleife vollziehen.
PHP:
while ($show = mysql_fetch_array($list)) {
...
  echo "<tr>
  <td><strong>Topic:</strong>";
  echo $show["topic"];
  echo "</td>
  </tr>
  <tr>
    <td><strong>Kurzbeschreibung:</strong><em> <br>";
    echo $show["subtopic"];
    echo "</em></td>
  </tr>";
...
}
 
Zurück