Abfrage funktioniert nicht

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

  • Guenni61
    antwortet
    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

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    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, 17:34.

    Einen Kommentar schreiben:


  • mephisto111
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    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.

    Einen Kommentar schreiben:


  • Guenni61
    antwortet
    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

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    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.

    Einen Kommentar schreiben:


  • Wasser_Wanderer
    antwortet
    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

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    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.

    Einen Kommentar schreiben:


  • Guenni61
    antwortet
    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, 14:36.

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    Möchte lieber die Hilfe von Guenni61.

    Danke für deinen Komentar h3II

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    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'];

    Einen Kommentar schreiben:


  • Guenni61
    antwortet
    Zitat von Tastatur Beitrag anzeigen
    Abfrage funktioniert nicht.
    Bin nicht sichr ob ber Syntax richtig ist.
    PHP-Code:
    $abfrage SELECT FROM lotto WHERE
    zahl1 in 
    ("$zahl1","$zahl2","$zahl3","$zahl4","$zahl5","$zahl6"); 
    Hi Tastatur,

    warum benutzt du die Abfrage: http://www.php-resource.de/forum/sql...tml#post665874
    nicht einfach so, wie ich sie gepostet habe?

    Oder das Script in http://www.php-resource.de/forum/sql...tml#post665895
    unter "Eine andere Variante wäre noch . . .".

    Ich poste keine Scripts, die ich selber nicht programmiert und getestet habe. Und beide Varianten funktionieren.
    Wenn dir dabei etwas unklar ist, dann frag' einfach nach.

    Gruß
    Günni

    Einen Kommentar schreiben:


  • Tastatur
    antwortet
    Geht klar Peter

    Morgen hab ich noch mal Zeit dafür.

    Einen Kommentar schreiben:

Lädt...
X