MySQL newsscript!

  • MySQL newsscript!

    hallo ich habe mal wieder ein problem!

    ich habe ein newsscript welches seine einträge in eine [coderwiki]Informationen/MySQL[/coderwiki] datenbak speichert. und alle eintraege die in dieser datenbank eingetragen sind nachher ausgibt!

    hier der code

    Quellcode

    1. <?php
    2. include("config.php");
    3. $result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect) or die ("Keine Datenbankverbinung");
    4. while($myrow = mysql_fetch_assoc($result))
    5. {
    6. echo $myrow['text1'];
    7. echo " <a href=\"index.php?page=test&newsid=$myrow[newsid]\">mehr hier zu...</a><br><br><br>";
    8. }
    9. ?>
    Alles anzeigen


    so jetzt habe ich eine weitere seite auf der aber nur immer der neuste newseintrag ausgegeben werden soll. wie mache ich das denn jetzt? Danke schonmal für eure hilfe
  • Hi,
    wie hast du denn die Daten in der Datenbank gespeichert?

    Es gibt mehrere effektive Lösungen dafür:

    Ich mache es immer so: Anhand der News-ID ordnen, denn die höchste News-ID ist die neueste (sofern die automatisch erhöht[auto_increment] wird)
    Dann könntest du schauen ob das hier funktioniert:

    Quellcode

    1. $result = mysql_query("SELECT * FROM news ORDER BY newsid ASC",$connect) or die ("Keine Datenbankverbinung");

    Du hast bei dir ja DESC drin. Das steht für descending ( =absteigend). ASC steht für Ascending ( =aufsteigend).

    Wenn dir das nicht hilft, speicher eine zeitangabe mit und ordne danach.
    Am besten du speicherst einen Unix-Timestamp. Damit kann php und mysql umgehen.

    Quellcode

    1. $zeit = time();

    und dann $zeit mit in die db speichern.

    Wenn du damit auch nicht klar kommst, poste doch mal die relevanten Quelltextstellen für den Eintrag in die DB...

    achso, eins hab ich noch vergessen:
    wenn du nur eine gewisse Anzahl an Einträgen ausgeben willst machst du das mit Limit

    Quellcode

    1. $result = mysql_query("SELECT * FROM news ORDER BY newsid ASC LIMIT 3",$connect) or die ("Keine Datenbankverbinung");

    Beispiel für 3 Einträge

    cya
  • habe es mal ausprobiert aber es werden immer noch alle einträge angezeitg

    also hier ist mal der das script für die db


    Quellcode

    1. <?php
    2. include("config.php");
    3. if($submit)
    4. {
    5. $title = mysql_real_escape_string($_POST['title']);
    6. $text1 = mysql_real_escape_string($_POST['text1']);
    7. $text2 = mysql_real_escape_string($_POST['text2']);
    8. if(!$title){
    9. echo "Fehler: News muessen erst eingegeben werden.";
    10. exit();
    11. $result = mysql_query("INSERT INTO news (title, dtime, text1, text2)
    12. VALUES ('$title',NOW(),'$text1','$text2')",$connect);
    13. //print success message.
    14. echo "<b>Fertig! News erfolgreich hinzugefuegt! !<br>Sie werden in 2 Sekunken zur Newsseite weitergeleitet";
    15. }
    16. ?>
    Alles anzeigen



    Kann mit das mit dem Datum auch nochmal erklaeren vielleicht is das besser!


    Es soll ja hier immer nur ein newseintrag angezeigt werden und zwar der neuste!
  • Also,

    erstmal sehe ich nicht wo die Funktion NOW() steht und was die macht.

    Ich wusste nicht, dass nur ein Eintrag angezeigt werden soll.

    Probiers mal mit folgender Abfrage:

    Quellcode

    1. $result = mysql_query("SELECT * FROM news ORDER BY newsid DESC LIMIT 0,1",$connect) or die ("Keine Datenbankverbinung");


    Das gibt dir auf jeden Fall einen Eintrag aus. Ob das die richtige Ordnung ist, kannst du ja nun an "DESC" oder "ASC" regeln.
    damit ordnest du nur aufsteigend oder absteigend. Ein Beispiel:
    1. Eintrag: Hallo, 12 uhr
    2. Eintrag: Huhu, 13 Uhr
    3. Eintrag: Juhu, 10 Uhr

    Wenn du jetzt absteigend nach der ID (also ORDER BY newsid DESC) ordnen lässt kommt folgendes Ergebnis raus:

    3.
    2.
    1.

    wenn du absteigend nach Datum (also ORDER BY dtime DESC) ordnen lässt, sollte das hier rauskommen:

    2.
    1.
    3.

    Das musst du aber einfach mal testen, kommt auch darauf an WIE das Datum in der db gespeichert wird (also was in der Funktion NOW() steht)

    Hoffe ich konnte dir helfen...

    cya
  • Sorry das ich dir erst jetzt andworte aber ich hatte in den letzten tagen wenig zeit.

    Zu deiner Frage:

    Ja ich habe es verstanden musste noch ein paar kleine änderungen vornehmen dann hat es aber super geklappt das was du mir gepostet hast war genau dass, was mir noch gefehlt hat, worauf ich aber nicht gekommen bin.

    Danke nochmals für deine klasse Hilfe!

    :wink: