Auslese Problem aus DB

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

  • Auslese Problem aus DB

    Arbeite gerade an einem Quiz das per SQL läuft.
    Habe nun ein Problem das jede Frage nur einmal zufällig kommen soll.
    Mein Code

    PHP-Code:
    $check1 mysql_query("SELECT * FROM quiz_temp WHERE ip='$ip'");
    while (
    $rows mysql_fetch_array($check1)) {
    echo 
    "$rows[gameid]";
    $allgames_q0 mysql_query("SELECT * FROM quiz_fragen 
    WHERE id!='
    $rows[gameid]' ORDER BY RAND()");
    }
    while (
    $allgames0 mysql_fetch_array($allgames_q0)) {
    $array = array($allgames0[2],$allgames0[3],$allgames0[4],$allgames0[5]);
    srand((float)microtime()*1000000); 
    Wenn eine Frage durch ist wird in die DB folgendes geschriebe

    PHP-Code:
    $datum time();
    mysql_query("INSERT INTO quiz_temp SET gameid='$id', time='$datum', ip='$ip'"); 
    Jedoch zeigt er mit immer wieder die Fragen an.
    Ein echo "$rows[gameid]"; gibt 132 aus, also Frage 1, 3 und 2 waren schon und sollen eigentlich nicht nochmal kommen.

    Kann mir bitte wer helfen.

    mfg

  • #2
    vllt. im SQL-SELECT per NOT IN testen?

    Ansonsten in die temp_table 1 datensatz pro frage rein und dann joinen.... und die wo es eine entsprechung gibt nicht nehmen...
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      PHP-Code:
      $allgames_q0 mysql_query("SELECT * FROM quiz_fragen
       WHERE id NOT IN ('"
      .str_replace(",""','"$rows[gamid])."') ORDER BY RAND()"); 
      Nur wie bekomme ich aus meinen Ergebnis 132 das 1,3,2 so muß es ja sein das muß ich doch per php machen können?

      Kommentar


      • #4
        wie kommst du denn dazu,

        a) $rows['gameid'] mit so einem quatsch zu füllen? das sieht nämlich nach handarbeit aus.
        b) ids in einem varchar/text o.ä. feld abzulegen? das sind doch ganze zahlen.
        c) ohne E_ALL zu arbeiten? das ist ja wie verdunkelte windschutzscheibe nachts beim autofahrenlernen.
        d) srand() zu benutzen? wozu ist das gut?

        Kommentar


        • #5
          a) $rows['gameid'] mit so einem quatsch zu füllen? das sieht nämlich nach handarbeit aus.
          b) ids in einem varchar/text o.ä. feld abzulegen? das sind doch ganze zahlen.
          c) ohne E_ALL zu arbeiten? das ist ja wie verdunkelte windschutzscheibe nachts beim autofahrenlernen.
          d) srand() zu benutzen? wozu ist das gut?
          a) ???
          b) das habe ich in INT abgeändert
          c) was ist E_ALL
          d) damit laße ich die Antworten immer in zufälliger Reihenfolge anzeigen

          Kommentar


          • #6
            a) wie kommt "123" in dieses feld?
            b) gut
            c) http://php.speedbone.de/manual/en/fu...-reporting.php und http://www.php-resource.de/forum/sho...threadid=50454
            d) und was passiert, wenn du die zeile auskommentierst?

            Kommentar


            • #7
              a) bei jeder Frage die im Spiel beantwortet wurde, wird in die DB die IP und die id der Frage des Users eingetragen. (temp Tabelle)
              c) danke wird nichts angezeigt da ich ja keinen Fehler bekomme
              d) das soll ja so sein und funktioniert auch sonst würde man ja rausbekommen das z.B. die zweite Antwort immer die richtige ist

              Kommentar


              • #8
                a) dann speichere nicht "123", sondern "1,2,3" in die datenbank.
                c) glaube ich dir nicht. z.b. $rows[gamid] müsste ein notice provozieren. zeig mal deinen aktuellen code.
                d) wie sollte man es "rausbekommen"?

                Kommentar


                • #9
                  Das Spiel geht ja komplett richtig nur mein Problem ist das ich es nicht hinbekomme das er mir es mit 1,2,6,7 usw. abspeichert.
                  Habe es per INSERT versucht aber wenn der erste Wert drinne ist muß ich es ja mit UPDATE der Tabelle machen.
                  Das einzige Problem was ich halt habe ist das mit diesem , abspeichern.

                  Kommentar


                  • #10
                    informiere dich über den begriff "normalisierung", im bezug auf die datenbanken (bei wikipedia gibt's da was). glaub mir, es LOHNT sich, die anwendung zu überarbeiten.

                    Kommentar

                    Lädt...
                    X