[MySQL] Alle Einträge zur entsprechenden ID ausgeben

domelle

Grünschnabel
Hallo alle zusammen,

Hab da ein kleines Problemchen, und zwar:

Ich hab mir einen Newsticker mit MySql geschrieben. Dabei kann ich jetz Einträge über ein Script in eine Datenbank speichern bzw. mit einer anderen Datei wieder auslesen. Ist ja nicht weiter schwer. Nur bei einem Ticker ist es ja doof wenn,

1. Nur der Eintrag mit der ID 1 ausgeben wird
- neue Einträge werden dann nicht angezeigt
2. Randomfunktion ist zwar sinnvoll, aber es wird ja immer nur ein Eintrag dabei ausgeben (wie bei Punkt 1)

Code:
<?php
 
 INCLUDE('inc/mysql.config.php');

 $select = "SELECT * FROM `newsticker` order by rand()";
  $result = mysql_query($select);
 $zahl = mysql_num_rows($result);
 echo "Es befinden sich $zahl Einträge im Newsticker.<br>";
 $row = mysql_fetch_assoc($result);

echo "<a href=\"eintragen.html\">In den Newsticker eintragen</a>";
echo '<table width="342" border="0" cellspacing="1" cellpadding="1">';
echo "<tr>";
    echo '<td width="77">Newsticker</td>';
    echo '<td width="258"><marquee>'.$row['name'].' -- '.$row['text'].'</marquee>&nbsp;</td>';
  echo "</tr>";
echo "</table>";

?>

Kann mir einer sagen, wie ich den Code umschreiben muss, damit mir nacheinander die Sachen ausgebenen werden, sprich:

ID + Name + Text

Aussehen sollte es dann so:

"Peter - Hallo schöne Welt Inge - Ach ist das schön Ingo - blablabla"

und wenn ein neuer Eintrag eingetragen wird, das er dann an erster Stelle steht.. (wobei die Reihenfolge der auszugeben ID's dann verkehrt sein muss, im Beispiel id3, id2 und dann id1)


Vielen Dank
Domelle
 
Hi,

daß der neueste Eintrag zuerst angezeigt wird, erreichst Du mittels "ORDER BY id DESC"

das "DESC" besagt, daß die Einträge in absteigender Reihenfolge sortiert werden.


Das andere Problem kannst Du nur mittels einer Schleife lösen:

PHP:
echo '<td width="258"><marquee>';
while($row = mysql_fetch_assoc($result)) {
  echo $row['name'].' -- '.$row['text'];
}
echo '</marquee>&nbsp;</td>';
 
Hey, danke für die schnelle Antwort, funtkioniert wunderbar!

Nur 2 Fehler gibt es noch :confused:

1. Der letzte Eintrag wird nicht angezeigt. Sprich, wenn ich 3 Einträge habe, werden nur 2 angezeigt. (Bei 10 nur die letzen 9, der Neuste wird immer weggelassen)

2. Die News "kleben" wörtlich aneinander. Wo muss ich ein "&nbsp;" einfügen, damit ein Leerzeichen entsteht?
Weinachtsmann -- HohohoRolf -- Hallo ich bin der RolfDomelle -- Hallo schöne Welt

Danke!

domelle
 
1.
Das liegt evtl daran, dass du jetzt zwar die Laufschrift durch die while-Schleife erzeugst, aber immer noch den Befehl "$row = mysql_fetch_assoc($result);" weiter oben in deinem Script hast. Den kannst du jetzt ersatzlos streichen.

2.
Dafür müsstest du hinter das letzte Argument der echo-Funktion mehrere &nbsp; einfügen, also:
PHP:
echo $row['name'].' -- '.$row['text'].'&nbsp;&nbsp;&nbsp;&nbsp;';

edit: Wenn du nachher zu viele Einträge in der Tabelle hast, um alle in der Laufschrift anzuzeigen kannst du die Ausgabe mit LIMIT begrenzen
 
Zuletzt bearbeitet:
Kuuuuuuuhhlll es geht :D

Danke :)

Ehm.. evtl, wo müsste ich das "Limit" einbauen?
Dann wäre eigentlich der Ticker schon fertig und ich würde ihn sogar online Stellen :p

Grüßle
 
Zurück