möchte ein quiz erstellen - abfrage problem ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • möchte ein quiz erstellen - abfrage problem ...

    ich hoffe, ich kann das ganze so einfach wie möglich erklären, was ich da bräuchte ...

    PHP-Code:
    SELECT from quiz WHERE ID NOT IN ('$_SESSION[verbraucht]'order by rand(now()) LIMIT 1 
    so nun zum erklärungsversuch ...

    ich möchte per zufall einen datensatz (eine id) auslesen, nachdem ich zb die id 3 erhalten habe, soll wieder eine zufalls-id ausgelesen werden nur die 3 soll nicht mehr erscheinen ...

    ich dachte nun, wie in der obigen abfrage ersichtlich, dass wenn ich die jeweilige id in eine session ($ session [ verbraucht ] - mit , getrennt) speichere, dass sie dann nicht mehr vorkommt - aber das tut sie doch.

    weiß nicht, ob ich das so recht rüberbringen konnte? hoffe aber doch. weiß vielleicht jemand rat?
    Zuletzt geändert von jeichi; 04.08.2006, 22:17.

  • #2
    Re: möchte ein quiz erstellen - abfrage problem ...

    echo $_SESSION['verbraucht'];
    ?!

    Testausgaben, man ey

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      ('$SESSION[verbraucht]')
      vs.
      echo $_SESSION['verbraucht']; ?!

      sorry, bei meinem Beitrag wurde das _ innerhalb [php] tags verschluckt, das ist alles.

      Testausgaben, man ey
      vs.
      Vorstellungsvermögen
      Zuletzt geändert von nix_wie_weg; 04.08.2006, 22:29.

      Kommentar


      • #4
        Re: Re: möchte ein quiz erstellen - abfrage problem ...

        Original geschrieben von ghostgambler
        echo $_SESSION['verbraucht'];
        ?!

        Testausgaben, man ey
        Testausgaben sind folgendermaßen (hab bisher erst 5 fragen zum testen reingestellt)

        1, 3, 4, 1, 2, 4, ... usw. - das heißt, er nimmt obwohl der datensatz mit der id 1 schon da war, die id nochmals und stellt die gleiche frage nocheinmal? sollte das nicht durch die abfrage

        PHP-Code:
        ID NOT IN ('$_SESSION[verbraucht]'
        ausgeschlossen werden???

        Kommentar


        • #5
          SELECT * from quiz WHERE ID NOT IN ($_SESSION[verbraucht]) order by rand(now()) LIMIT 1


          EDIT:
          das zweifelhafte NOW() wieder zugefügt

          Zuletzt geändert von nix_wie_weg; 04.08.2006, 23:36.

          Kommentar


          • #6
            Original geschrieben von nix_wie_weg
            SELECT * from quiz WHERE ID NOT IN ($_SESSION[verbraucht]) order by rand(now()) LIMIT 1
            was ist da der unterschied zu meiner abfrage?

            bin inzwischen draufgekommen, dass mit dem
            PHP-Code:
            rand(now()) 
            was nicht stimmen kann - ich bekomme immer nur den ersten und den letzten datensatz angezeigt??? da funktioniert irgendwas nicht richtig beim zufalls-id-erzeugen? ist da was falsch?

            Kommentar


            • #7
              das argument zu rand() ist fakultativ, sollte ein integer sein, besser weglassen. Mit NOW(), also einem integer, sollte es aber funktionieren.. in der theorie.. aber NOW() ist so eine grosse Zahl..

              Was ist der Unterschied?? Es ist der Unterschied zwischen richtig und nichtrichtig.
              Zuletzt geändert von nix_wie_weg; 04.08.2006, 22:41.

              Kommentar


              • #8
                Original geschrieben von jeichi
                bin inzwischen draufgekommen, dass mit dem
                PHP-Code:
                rand(now()) 
                was nicht stimmen kann - ich bekomme immer nur den ersten und den letzten datensatz angezeigt??? da funktioniert irgendwas nicht richtig beim zufalls-id-erzeugen? ist da was falsch?
                Für gewöhnlich macht man
                SELECT * FROM tabelle ORDER BY RAND() LIMIT 1

                und wenn die Daten in der Session stimmen, dann lass dir den Query ausgeben und guck ob das drin ist was drin sein soll...

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Original geschrieben von ghostgambler
                  Für gewöhnlich macht man
                  SELECT * FROM tabelle ORDER BY RAND() LIMIT 1


                  hab das now() jetzt rausgenommen, jetzt funktioniert das zufallsschema glaub ich - zumindest das einmal.

                  Original geschrieben von ghostgambler
                  und wenn die Daten in der Session stimmen, dann lass dir den Query ausgeben und guck ob das drin ist was drin sein soll...

                  die ausgabe des query ergibt

                  Resource id #9

                  ich hab aber nur 5 datensätze??? was heißt das nun für mich?

                  Kommentar


                  • #10
                    Original geschrieben von jeichi
                    ich hab aber nur 5 datensätze??? was heißt das nun für mich?
                    Dass Du meiner Version auch noch eine Chance geben sollst...

                    Kommentar


                    • #11
                      Original geschrieben von nix_wie_weg
                      Dass Du meiner Version auch noch eine Chance geben sollst...
                      ich will ja nicht komisch wirken, aber 1. sehe ich noch immer keinen unterschied zwischen meiner abfrage
                      PHP-Code:
                      SELECT from quiz WHERE ID NOT IN ('$_SESSION[verbraucht]'order by rand(now()) LIMIT 1 
                      und zwischen deiner abfrage
                      PHP-Code:
                      SELECT from quiz WHERE ID NOT IN ($_SESSION[verbraucht]) order by rand(now()) LIMIT 1 
                      und 2 funktioniert deine bei mir nicht, weil ich
                      PHP-Code:
                      ('$_SESSION[verbraucht]'
                      schreiben muss und nicht
                      PHP-Code:
                      ($_SESSION[verbraucht]) 
                      da ich sonst einen fehler geliefert bekomme ...

                      und außerdem bin ich dank ghostgambler draufgekommen, dass der zufallsgenerator nur dann bei mir funktioniert, wenn ich
                      PHP-Code:
                      rand() 
                      und nicht
                      PHP-Code:
                      rand(now()) 
                      benutze

                      Kommentar


                      • #12
                        Du hast recht, wenn du in $_SESSION['verbraucht'] folgendes hast, gemäss Deiner Angabe:
                        1, 3, 4, 1, 2, 4, ... usw.

                        dann stören die ... , das usw. und das letzte Komma.

                        OffTopic:
                        geliefert werden pizzas und nicht fehler, und auch diese zB con funghi, quatro stagioni usw. bzw. qualifizierter

                        Kommentar


                        • #13
                          Original geschrieben von jeichi
                          ich will ja nicht komisch wirken, aber 1. sehe ich noch immer keinen unterschied zwischen meiner abfrage
                          Du bist ja hier um etwas neues zu lernen. Unterschied ist.

                          Dein 'verbraucht' = 1 3 4 1 2 4 gibt an, dass nicht nur die erste und letzte Quizfrage gebracht werden.

                          /weiter geändert/
                          RAND(20060805002447), RAND(NOW()) und RAND(0+NOW()) funktionieren korrekt, das heisst sie liefern eine echte Zufallsfolge in einer Query. Daran liegt also nichts.
                          Zuletzt geändert von nix_wie_weg; 04.08.2006, 23:33.

                          Kommentar


                          • #14
                            @jeichi
                            du solltest dich mal mit grundlagen beschäftigen.

                            dann erfährst du warum
                            - "echo mysql_query('bla');" müll ist, vor allem, wenn du "echo 'bla';" ausgeben sollst
                            - stringverkettung wäre auch noch ein thema ... such nach tomstig und klick in dessen signatur
                            - now() in rand() zu verwenden halte ich für sinnfrei
                            Kissolino.com

                            Kommentar


                            • #15
                              so, dank eurer hilfe hab ich es nun geschafft, mein quiz online zu stellen

                              Quiz auf jeichi.com

                              ABER!!! - nun läuft das Quiz erst seit heute bzw. gestern abend und schon ... wurde mein Spiel geknackt - wenn ihr auf die Highscoreliste seht, werdet ihr sehen, dass einer schon 2000 pkt erreicht hat und sich mit dem Namen HackedbyGehring verewigt hat. Man kann aber im Moment 'normalerweise' nur 410 pkt erreichen.

                              nun meine frage, ich habe die punkte nur in einer session gespeichert, weiß von euch jemand wie er das geschafft hat und wo ich die lücke habe? anscheinend hat er nicht lange dafür gebraucht ...

                              wie kann ich soetwas verhindern? sind sessions nicht sicher und habe ich einen simplen fehler übersehen, der nur mir nicht auffällt?

                              ich würde euch bitten, mir zu helfen! danke, jeichi


                              [COLOR=red]ich glaube ich habe das problem bereits gelöst! [/COLOR]
                              bin aber trotzdem dankbar, wenn ihr das ganze noch auf fehler und lücken testen würdet oder könntet
                              Zuletzt geändert von jeichi; 07.08.2006, 13:23.

                              Kommentar

                              Lädt...
                              X