PHP random ?

  • Hallo stagetwo :)


    Ich wollte nun mal an meinem Generator weiterarbeiten und ein paar neue Sachen einbauen.
    Als erstes eine "random" funktion, dass wenn man den Knopf Random drückt er aus der Datenbank irgendein eintrag nimmt und diesen in die daneben stehende Inputbox einträgt.


    Hier ist mal meine Seite, wenn Code erforderlich ist schreibe ich ihn hier rein.


    http://generator.the-franky.de/


    Freue mich auf positive antwort.

  • Ich gehe mal davon aus das deine Datenbank eine Spalte als ID hat.


    Zum generieren nimmst du einfach die PHP-Funktion rand().
    http://php.net/manual/de/function.rand.php


    Am besten gibst du den Minimal und Maximal Parameter an.


    Dann liegt die generierte Zufallszahl innerhalb dieses Bereiches.
    Idealerweise nimmst du als Maximum die Anzahl der Zeilen der Tabelle (nicht die höchste ID).
    Wenn du die höchste ID nehmen würdest, und löschst eine Zeile, dann ist die ID zwar immernoch z.B. 5 aber Zeile mit ID=3 fehlt somit hättest du da ein Problem.


    Zunächst, wie kommt man an die Anzahl:
    Eine Möglichkeit ist die Funktion mysql_num_rows() die du bereits kennen solltest.
    Das ist nicht gerade der schönste Weg (natürlich geht das auch), da du jede Zeile ausliest und zwischenspeicherst, was bei größeren Datenbanken sehr Zeit und Rechenaufwendig ist und vor allem auch (Arbeits)Speicher benötigt.


    Alternative:

    SQL
    1. SELECT COUNT(id) AS Anzahl
    2. FROM tabelle


    Das dann verarbeiten mit dem üblichen PHP-Code (in ein Array fetchen usw.) Der Spaltenname lautet "Anzahl" (ohne "")



    Dann holst du mit:

    SQL
    1. SELECT *
    2. FROM tabelle
    3. LIMIT ZufallsZahl, 1


    eine Zeile aus der Tabelle. Mit LIMIT begrenzt du aus Ausgabe auf eine bestimmte Anzahl von Zeilen. In diesem Fall fängst du bei der Zeile mit der Nummer der Zufallszahl an und liest genau eine Zeile aus.


    Wie du das ganze dann auf der Seite ausgibst, is deine Sache. So wie du es beschreibst, würde JavaScript bzw. AJAX dazu ganz gut passen, aber da kann ich dir nicht helfen. Mein JavaScript Kenntnisse sind weniger als schlecht.



    BTW: Was soll das eigentlich bezwecken? Spielerei?


    Gruß
    florian0