Einen zufälligen Datensatz aus db anzeigen?

  • Hallo, ich würde gerne aus meiner datenbank bei jedem reload der website eine zufallsgrafik und den dazugehörigen Link zufällig anzeigen lassen...kann mir da jemand helfen? also es soll bei jedem reload ein kompletter datensatz ausgelesen werden...


    danke


    max

  • du kannst die anzahl der datensätze in der tabelle zählen (SELECT count(*) as Anzahl FROM `tabelle` oder so) und dann mit rand eine zufallszahl erzeugen die zwischen 0 und der ausgelesen zahl steht, dann einfach entsprechende datensatz auslesen (SELECT * FORM `tabelle` LIMIT zahl, 1)

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

  • Mein Vorschlag:

    Erstmal mit

    Code
    $query = "SELECT * FROM tabelle";
    $result = mysql_query($query);
    $x = mysql_num_rows($result)


    die Anzahl der Datensätze bestimmen.

    Dann eine Zufallszahl $y zwischen 1 und $x ermitteln und damit dann wie folgt

    Code
    $query = "SELECT * FROM tabelle WHERE id = $y";
    $result = mysql_query($query);


    den Datensatz anhand der ID auslesen.

    So hast du immer einen zufälligen Datensatz.

    EDIT:

    Zitat von Greg10

    du kannst die anzahl der datensätze in der tabelle zählen (SELECT count(*) as Anzahl FROM `tabelle` oder so) und dann mit rand eine zufallszahl erzeugen die zwischen 0 und der ausgelesen zahl steht, dann einfach entsprechende datensatz auslesen (SELECT * FORM `tabelle` LIMIT zahl, 1)

    Genau so! Ist sogar kürzer als meine Variante.

  • 1. nachteil: die erste abfrage wird denke ich mehr resourcen verbrauchen als meine
    2. nachteil: wer sagt, dass die id immer ohne lücken verläuft?
    evtl. wurde ja mal ein bild gelöscht und deswegen gibt es eine lücke in der reihe
    möglichkeit:
    die id's in einen array lesen und dann mit count die anzahl der elemente ermitteln, danach eine zufallszahl ermitteln und die id aus dem array für die abfrage nutzen

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

  • Zitat von Greg10

    1. nachteil: die erste abfrage wird denke ich mehr resourcen verbrauchen als meine
    2. nachteil: wer sagt, dass die id immer ohne lücken verläuft?
    evtl. wurde ja mal ein bild gelöscht und deswegen gibt es eine lücke in der reihe
    möglichkeit:
    die id's in einen array lesen und dann mit count die anzahl der elemente ermitteln, danach eine zufallszahl ermitteln und die id aus dem array für die abfrage nutzen

    Stimmt, fällt mir auch gerade ein.

    Aber noch viel einfacher ist das hier:

    SQL
    SELECT * FROM tabelle ORDER BY RAND() LIMIT 1


    Quelle: http://www.strassenprogrammierer.de/mysql-zuf%E4ll…n_tipp_403.html

  • kannt ich garnicht^^
    man kann doch noch immer was dazu lernen ;)

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)