tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Flex
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
281
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Hallo!
    Ich habe ein kleines Problem mir einer Datenbankabfrage.
    Ich brauch einen Zufallsgenerator, den ich mit mehreren Werten füttern kann.
    Das heißt, der Zufallsgenerator soll aus einer vorgegeben Liste an IDs auswählen.

    Kleines Beispiel:

    Tabelle:

    Id:
    ------
    1
    2
    3
    4
    5
    ...


    So. Jetzt soll der Zufallsgenerator zufällig zwischen 2 und 5 auswählen.
    Also entweder 2 oder 5.


    Ich hab bisjetzt das:

    PHP-Code:
    $test_res mysql_query("SELECT * FROM aufgaben_abfolge WHERE loesungsid = $_POST[loesung_radio]"); 
    $count mysql_num_rows($test_res); 
    $test2 mysql_fetch_assoc(mysql_query("SELECT * FROM aufgaben_abfolge WHERE loesungsid = $_POST[loesung_radio]")); 
    while(
    $test mysql_fetch_assoc($test_res)) { 
        echo 
    $test[naechsteaufgabeid]." naechste id<br />"

    echo 
    $count." anzahl<br />"
    echo 
    $test2[naechsteaufgabeid][rand(0,$count 1)]." aus array"
    Wenn in der Whileschleife 16, 17 und 18 steht, bekomm ich beim Zufall unten entweder keinen Wert 1 oder 6.
    Das macht allerdings überhaupt keinen Sinn, weil diese Zahlen so nicht in der Tabelle stehen.

    Danke


    mfg
    Azubis
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Warum schiebst du die Arbeit nicht auf MySQL?

    Code sql:
    1
    
    SELECT `field` FROM `table` ORDER BY RAND() LIMIT 1

    Und schon hast du einen generischen Eintrag aus der Tabelle.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Dass löst das Problem glaube ich aber nicht, da dann irgend ein Zufall generiert wird. Oder täusch ich mich.

    Wenn ich z.B. 10 Id's hab, will ich einen Zufall aus 3,7 und 8.
    Bei dir würde er ja einen Zufall aus 1-10 machen.

    mfg
    Azubis
     

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Mein Fehler, aber das geht auch.

    Code sql:
    1
    2
    3
    4
    5
    
    SELECT `field` 
    FROM `table`
    WHERE `id` IN (3, 7, 8)
    ORDER BY RAND()
    LIMIT 1
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Wenn du mir jetzt noch sagen kannst, wie ich den Inhalt einer While Schleife in die Klammer mit 3, 7, 8 reinbekomme, ist mein Problem gelöst

    mfg
    Azubis
     

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Woher kommen denn deine Zahlen?

    Aus einem Formular?
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Die Zahlen kommen aus einer Datenbank.
    Per Formular übertrage ich die LösungsID. Mithilfe dieser finde ich aus der Datenbank die passenden NächsteaufgabeID raus. (Wenn es mehrmals die selbe LösungsID gibt, kommt der Zufallsgenerator zum einsatz, weil eine nächste AUfgabe ausgewählt werden muss.

    Rein theoretisch müsste es so aussehen. Aber das ist ja leider nicht so einfach möglich :P

    PHP-Code:
    $test_res mysql_query("SELECT * FROM aufgaben_abfolge WHERE loesungsid = $_POST[loesung_radio]");
    $lala mysql_query("SELECT * FROM aufgaben_abfolge WHERE naechsteaufgabe IN (while($test = mysql_fetch_assoc($test_res)) {echo $test[naechsteaufgabeid]." ,";}) ORDER BY RAND() LIMIT 1"); 
     

  8. #8
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Doch, das geht sogar

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    SELECT `field`
    FROM `aufgaben_abfolge`
    WHERE `id` IN (
      SELECT `id` 
      FROM `aufgaben_abfolge`
      WHERE `loesungsid` = '1'
    )
    ORDER BY RAND()
    LIMIT 1

    Du solltest unbedingt deine Queries mit mysql_real_escape_string() maskieren, um SQL Injektionen vorzubeugen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  9. #9
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Ahh klar.
    Unterabfragen. Hab ich total vergessen...

    Aber irgendwie will das nicht wie ich...
    PHP-Code:
            $lala mysql_query("SELECT * FROM aufgaben_abfolge WHERE naechsteaufgabeid IN (SELECT * FROM aufgaben_abfolge WHERE loesungsid = $_POST[loesung_radio]) ORDER BY RAND() LIMIT 1 ");
            echo 
    $lala["naechsteaufgabeid"]."AHHHHHH"
    Eigentlich sollte in diesem Fall ein Zufall zwischen 13 und 14 erzeugt werden.
    Als Ergebnis kommt aber nichts raus
    Er gibt einfach nichts aus.

    Meine Konzentration ist aber jetzt auch am Ende.



    Klar escape ich das noch. Solang etwas aber noch nicht funktioniert, mach ich sowas noch nicht, das die Fehlerquelle so klein wie möglich gehlaten werden kann.


    Trotzdem danke.


    mfg
    Azubis
     

  10. #10
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Und wo führst du das Query aus?

    PHP-Code:
    $query mysql_query("SELECT * FROM aufgaben_abfolge WHERE naechsteaufgabeid IN (SELECT * FROM aufgaben_abfolge WHERE loesungsid = '".$_POST['loesung_radio']."') ORDER BY RAND() LIMIT 1 ");
    $result mysql_fetch_assoc($query);
    echo 
    $result["naechsteaufgabeid"]."AHHHHHH"
    Azubis bedankt sich. 
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  11. #11
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Boah... Ich sag ja. Meine Konzentration.
    Wird Zeit das ich Feierabend mache :P

    Jetzt bringt er noch den typischen Fehler:
    Code :
    1
    
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...

    Aber das werde ich hoffentlich noch selbst finden!

    Danke

    mfg
    Azubis
     

  12. #12
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    mysql_error() hilft da ungemein
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  13. #13
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Code :
    1
    
    Operand should contain 1 column(s)
    Das ist jetzt echt seltsam.
     

  14. #14
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Mein Fehler.

    Code sql:
    1
    
    SELECT * FROM

    Da darf kein * hin, sondern nur ein Feld, in dem Fall also die "naechsteaufgabeid", wenn ich deinen Aufbau richtig verstehe.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  15. #15
    Azubis Azubis ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    17
    Danke
    Es funktioniert!

    Weißt du wie lang ich da dran gesessen bin?
    Und du? In ein paar Stunden


    Vielen vilen Dank!

    mfg
    Azubis
     

Ähnliche Themen

  1. Störende Begrenzung
    Von Tigger007 im Forum 3D Studio Max
    Antworten: 6
    Letzter Beitrag: 21.12.07, 00:11
  2. HDD begrenzung
    Von Private Joker im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 03.03.06, 11:25
  3. Begrenzung WHERE IN
    Von Fabia im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 23.11.04, 11:33
  4. Wie GB-Begrenzung umgehen?
    Von Moritz123 im Forum Hardware
    Antworten: 2
    Letzter Beitrag: 10.09.04, 11:54
  5. Begrenzung des MC
    Von Burnymc im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 12.06.04, 09:02