Abfrage funktioniert nicht

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Hallo Guenni61

    Dein Script bringt folgende Fehlermeldung: in der Zeile
    " while($row=mysql_fetch_array($result, MYSQL_ASSOC)){ "

    mysql_fetch_array() expects parameter 1 to be resource, boolean given

    PHP-Code:
    $result=mysql_query($query);
    while(
    $row=mysql_fetch_array($resultMYSQL_ASSOC)){
     echo 
    $row['id'];

    Kommentar


    • #17
      Und hättest du dich mit den Grundlagen beschäftigt, wüsstest du, dass mysql_query() im Fehlerfall FALSE (also einen boolschen Wert) zurück gibt. Wenn ein Fehler auftritt, kann man sich den Fehlertext mit mysql_error() ausgeben lassen.

      Aber: Lern endlich die Grundlagen oder lass es bleiben.

      Kommentar


      • #18
        Möchte lieber die Hilfe von Guenni61.

        Danke für deinen Komentar h3II

        Kommentar


        • #19
          Zitat von Tastatur Beitrag anzeigen
          Möchte lieber die Hilfe von Guenni61.

          Danke für deinen Komentar h3II
          Klartext: Ich will jemanden, der für mich die Arbeit macht, weil ich selber nicht meiner wertvolle Zeit dafür investieren will.

          Kommentar


          • #20
            Zitat von Tastatur Beitrag anzeigen
            Hallo Guenni61
            Dein Script bringt folgende Fehlermeldung: in der Zeile
            " while($row=mysql_fetch_array($result, MYSQL_ASSOC)){ "
            mysql_fetch_array() expects parameter 1 to be resource, boolean given
            PHP-Code:
            $result=mysql_query($query);
            while(
            $row=mysql_fetch_array($resultMYSQL_ASSOC)){
             echo 
            $row['id'];

            Hi Tastatur,
            . . . nee, nicht mein, sondern dein Script bringt die Fehlermeldung. OK, dann mal ganz vorn vorne.
            Da du diese Zeile: while($row=mysql_fetch_array($result, MYSQL_ASSOC)){ erwähnst, hast du wohl
            die erste Variante benutzt. Das komplette Script sieht dann so aus:
            PHP-Code:
            <?php
            // Deine Datenbankverbindung und Auswahl der DB hier einfügen
            ?>
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head>
            <title>Untitled</title>
            </head>
            <body>
            <form action="" method="post">
            <input type="text" name="zahl1" />
            <input type="text" name="zahl2" />
            <input type="text" name="zahl3" />
            <input type="text" name="zahl4" />
            <input type="text" name="zahl5" />
            <input type="text" name="zahl6" />
            <input type="submit" name="cmd" />
            </form>
            <?php
            /*
            * Formular gesendet? 
            */
            if(isset($_POST['cmd'])){ // cmd ist der Name des Submit-Buttons
             
            $zahl1 $_POST["zahl1"];
             
            $zahl2 $_POST["zahl2"];
             
            $zahl3 $_POST["zahl3"];
             
            $zahl4 $_POST["zahl4"];
             
            $zahl5 $_POST["zahl5"];
             
            $zahl6 $_POST["zahl6"];
             
             
            /*
             * Ein Array der Zahlen bilden, um die Zahlen am Ende auszugeben.
             */
             
            $zahlen = array($zahl1,$zahl2,$zahl3,$zahl4,$zahl5,$zahl6);
             
             
            /*
             * Abfrage:
             * Die Variablen $zahl1 bis $zahl6 sind die gesendeten Zahlen aus dem Formular.
             *
             * Es wird geprüft, ob jede Zahl in einer der Tabellenspalten (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) pro Datensatz vorkommt.
             */
             
            $query="SELECT id FROM lotto WHERE 
             
            $zahl1 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) and
             
            $zahl2 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) and
             
            $zahl3 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) and
             
            $zahl4 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) and
             
            $zahl5 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6) and
             
            $zahl6 in (zahl1,  zahl2,  zahl3,  zahl4,  zahl5,  zahl6)";
             
             
            /*
             * Kontrollausgabe, um die Abfrage auf Syntaxfehler zu überprüfen.
             */
             
            echo "<pre>";
             echo 
            $query;
             echo 
            "</pre>";
             
             
            $result=mysql_query($query);
             if(!
            $result){ // Beachte das ! vor der Variablen $result: Das bedeutet not $result
              
            echo "Fehler in der Abfrage";
              exit;
             }
             
            $treffer 0;
             while(
            $row=mysql_fetch_array($resultMYSQL_ASSOC)){
              
            $treffer+=1;
             }
             echo 
            "Die gesuchten Zahlen ".implode(" | "$zahlen)." wurden ".$treffer." mal gezogen.";
            }
            ?>
            </body>
            </html>
            Voraussetzung, dass das Script funktioniert, ist natürlich die Anpassung des Tabellennamens und der Spaltennamen.
            Tabellenname hier: lotto
            Die Spaltennamen in der Tabelle: zahl1 bis zahl6
            Im Script wird die Abfrageformulierung ausgegeben, um sie auf Fehler zu überprüfen. Das solltest du dir auch angewöhnen.

            Gruß
            Günni
            Angehängte Dateien
            Zuletzt geändert von Guenni61; 20.04.2013, 15:36.

            Kommentar


            • #21
              Hall Guenni61,

              das Script funktioniert, jedoch sind die Resultate nicht richtig.

              Z.B.
              Die Lottozahlen der letzten 40 jahre
              8,11,25,30,40,46 wurdne einmal gezogen = stimmt

              13,13,13,13,13,13 wurden 380 mal gezogen = falsch

              Richtig müsste sein 0, also keinmal gezogen.

              Die Abfrage stimmt nicht.

              Kommentar


              • #22
                Zitat von Tastatur Beitrag anzeigen

                Die Abfrage stimmt nicht.
                Dann mach sie doch so, das sie stimmt.

                P.S.
                *Ironie an:
                Ich arbeite gerade an einer Liga-Verwaltung und hoffe das man sie mir auch hier komplett vorkaut, da ich zu faul bin bzw, keine Zeit habe das selber zu machen.*ironie aus

                Kommentar


                • #23
                  Zitat von Tastatur Beitrag anzeigen
                  13,13,13,13,13,13 wurden 380 mal gezogen = falsch
                  Ist ja auch eine ungültige Lottoziehung. Bei einer Lottoziehung kann die Zahl 13 nicht mehr als einmal vorkommen.

                  Langsam glaube ich, du willst hier einfach nur trollen.

                  Kommentar


                  • #24
                    Zitat von Tastatur Beitrag anzeigen
                    Hall Guenni61,
                    das Script funktioniert, jedoch sind die Resultate nicht richtig.
                    Z.B.
                    Die Lottozahlen der letzten 40 jahre
                    8,11,25,30,40,46 wurdne einmal gezogen = stimmt
                    13,13,13,13,13,13 wurden 380 mal gezogen = falsch
                    Richtig müsste sein 0, also keinmal gezogen.
                    Die Abfrage stimmt nicht.
                    Hi Tastatur,

                    die Abfrage lautet:

                    Ist die Zahl und die Zahl und die Zahl und die Zahl und die Zahl und die Zahl in diesem Datensatz (3,13,24,36,44,47) enthalten?

                    Wenn du nun 6 mal die gleiche Zahl eingibst, so wird auch 6 mal [COLOR=black]nur[/COLOR] nach dieser einen Zahl gesucht. Du machst also nichts anderes als:

                    Ist die 13 und die 13 und die 13 und die 13 und die 13 und die 13 in diesem Datensatz (3,13,24,36,44,47) enthalten?

                    Verkürzt hieße das: Ist die 13 in diesem Datensatz (3,13,24,36,44,47) enthalten? Somit macht die Abfrage genau das, was du wolltest.

                    Sie zählt, wie oft die Zahl 13 in deiner Statistik vorkommt.

                    Gruß
                    Günni

                    Kommentar


                    • #25
                      Hallo Guenni61

                      Du hast ja recht.
                      Allerding soll die gewünschte Zahlenkombination (also die 6 gezogenen Zahlen), für jeden Datensatz durchsucht werden.

                      So das bei der Kombination 9, 14, 22, 22, 35, 49 das Ergebnis 0 sein muss, weil die Zahl 22 zweimal drin vorkommt. Und das ist beim Lotto ja nicht möglich.

                      Daher muss die Datenbank Abfrage anders gestaltet werden.

                      Kommentar


                      • #26
                        Hallo,

                        wie wär's mit

                        PHP-Code:
                        $query="SELECT id FROM lotto WHERE zahl1=$zahl1 AND zahl2=$zahl2 AND zahl3=$zahl3 AND zahl4=$zahl4 AND zahl5=$zahl5 AND zahl6=$zahl6"
                        Dabei sollte darauf geachtet werden, dass die Zahlenfolgen sowohl in der Datenbank als auch bei der Eingabe jeweils aufsteigend geordnet sind.

                        Kommentar


                        • #27
                          Ja jetzt funktionierts richtig.

                          Wie kann man das gestallten das das die Werte in den Eingabefeldern erhalten bleiben (drin stehen bleiben).
                          Damit wäre es möglich nachträglich nur eine Zahl zu ändern, ohne das man immer alle 6 Zahlen eintippen muss.
                          Zuletzt geändert von Tastatur; 21.04.2013, 18:34.

                          Kommentar


                          • #28
                            Zitat von Tastatur Beitrag anzeigen
                            Hallo Guenni61
                            Du hast ja recht.
                            Allerding soll die gewünschte Zahlenkombination (also die 6 gezogenen Zahlen), für jeden Datensatz durchsucht werden.
                            So das bei der Kombination 9, 14, 22, 22, 35, 49 das Ergebnis 0 sein muss, weil die Zahl 22 zweimal drin vorkommt. Und das ist beim Lotto ja nicht möglich.
                            Daher muss die Datenbank Abfrage anders gestaltet werden.
                            Hi Tastatur,

                            entschieden ein NEIN. Die Abfrage durchsucht die Tabelle nach einer bestimmten Regel: Die 6 gesuchten Zahlen müssen unterschiedlich sein.
                            An diese Regel hat sich der Formularbenutzer zu halten. Also muß das gemacht werden, was man üblicherweise macht: Man prüft die Eingaben.

                            Zitat von Tastatur Beitrag anzeigen
                            Ja jetzt funktionierts richtig.
                            Wie kann man das gestallten das das die Werte in den Eingabefeldern erhalten bleiben (drin stehen bleiben).
                            Damit wäre es möglich nachträglich nur eine Zahl zu ändern, ohne das man immer alle 6 Zahlen eintippen muss.
                            Ja jetzt funktionierts richtig. Ja, mag sein. Aber auch nur, wenn der Benutzer sich wieder an eine Regel hält:

                            Nämlich, dass er die Zahlen auch so einträgt, wie sie in der Tabelle gespeichert sind. Sonst wird es nämlich nichts mit dem direktem Vergleich,
                            textfeld1=zahl1 und textfeld2=zahl2 . . . usw., wie mephisto111 vorgeschlagen hat. Also musst du auch hier wieder die Eingabe prüfen.

                            Zu der anschließenden Frage: Wie kann man das gestallten das das die Werte in den Eingabefeldern erhalten bleiben (drin stehen bleiben).

                            Ganz einfach:
                            - Die gesendeten Zahlen sind in $_POST['zahl1'], $_POST['zahl2'], $_POST['zahl3'], . . . usw. enthalten.
                            - Textfeldern kann man über den Parameter value einen Wert zuweisen.

                            Denk mal ein bißchen nach, mach' selber mal einen Vorschlag, der "wenigstens" ansatzweise richtig ist. Dann zeig' ich dir, wie du doppelte Eingaben
                            überprüfen kannst und den Rest.

                            Gruß
                            Günni

                            Kommentar


                            • #29
                              Das Problem das die Zahlen drin stehen bleiben habe ich so gelöst.

                              <input type="text" name="zahl1" value="<?php echo $_POST['zahl1']; ?>" />

                              Zahlen Array abfragen
                              Wie kann ich einen Zahlen Array bei einer Datenbank Abfragen?
                              Es soll unten stehende 12 Datensätze bei einer bestehenden Datenbank
                              die auch solche Datensätze enthält abgefragt werden.

                              Wer hat hier eine Lösung wie die Abfrage gestaltet werden kann?

                              11,49,35,34,1,26
                              36,9,28,3,37,32
                              17,39,6,18,26,35
                              36,40,1,44,19,25
                              28,2,4,35,5,27
                              43,20,48,42,10,4
                              37,34,18,2,10,22
                              20,27,34,43,24,47
                              37,49,28,3,24,23
                              10,25,29,14,12
                              36,25,7,21,29,5
                              37,35,1,17,48,4

                              Elegant wäre es, wenn man in eine Eingabefeld die Zahlenkolonnen mit paste und copy
                              einfügen könnte.

                              Kommentar


                              • #30
                                Was sind denn "solche Datensätze"? Was unterscheidet die denn von anderen?

                                Kommentar

                                Lädt...
                                X