mysql_num_rows / COUNT(*)

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

  • mysql_num_rows / COUNT(*)

    Guten Tag!

    Ich habe folgendes Problem:

    PHP-Code:
    include("includes/var.inc.php");
    $sql "SELECT bugs, gewettet, user, COUNT(*) AS Genommen FROM matches,
    bets, user WHERE matches.mid='"
    .$_GET['m']."' AND bets.matchid='".$_GET['m']."' 
    AND bets.winner='"
    .$winnerteam."' 
    GROUP BY matchid"
    ;
    $result mysql_query($sql) OR die(mysql_error());
    while(
    $row mysql_fetch_assoc($result)) {
    if(
    $row['Genommen'] == 0) {
    echo    
    "jetzt wird ebe keine gwünne";
    }
    else {
    echo    
    $row['Genommen']; 
    }

    Die Tabellen sind in diesem Fall hier nicht relevat, ich schreib die Struktur der Datenbank hier nicht.

    Wenn ich bei meinem Wettsystem was gewettet hab, trägt es die Wette ein mit den Werten:
    user
    matchid (bei welchem match gewettet wurde)
    gewettet (wieviel bugs)
    winner (welches team, oder ob draw gewettet wurde)

    Ich setze mit 2 Usern auf team2. Gewonnen hat aber team1!

    Also sollte es hier ausgeben: jetzt wird ebe keine gwünne

    Es gibt mir aber gar nichts aus. Wie sollte die If-Abfrage denn lauten?:
    PHP-Code:
    if(empty($row['Genommen'])) {

    ? :S

    Wenn ich ne Wette auf team1 mach ( gewinnerteam ) sollte es mir ausgeben, wieviele Leute auf eben team1 gesetzt haben.

    Ich hab nur EINE wette eingetragen, und es zeigt mir die Zahl 3 an. :S

    Ich hab auch schon das COUNT(*) AS Genommen rausgenommen und dafür VOR der while-Schleife ein:
    PHP-Code:
    $anzahl mysql_num_rows($result); 
    gesetzt und dann in der while schleife mit if($anzahl == 0) abgefragt. Hat auch net funktioniert.

    Wenn ich jetzt mal keine Wette mache (respektive ist der Count auf0, sollte es mir einen kleinen Text ausgeben (siehe Code). Machts aber nicht. es zeigt mir einfach nix an. :S

    Kann mir da jemand helfen?

    Vielen Dank für die Hilfe und mit freundlichen Grüssen

    Luca Peter

    EDIT: Ausserdem wennj ich mal nur die Anzahl der Wetten (egal ob mit COUNT(*) oder mit mysql_num_rows()) gibt es mir die Zahl oder den Text 3 mal aus :S.

    Oben im Code wäre es bei EINER wette auf das gewinnerteam die Zahl 1! es gibt mir aber die Zahl 3 aus! :S
    Einmal kam sogar 333 :S
    Zuletzt geändert von wkd-; 12.05.2006, 10:23.

  • #2
    if($row['Genommen'] == 0) {
    echo "jetzt wird ebe keine gwünne";
    }
    wenn du kein Ergebnis hast, dann existiert $row['Genommen'] einfach nicht.
    wenn du die Vorschläge für die Fehlerbehandlung gefolgt hättest, dann würdest du selber schnell fündig.
    und dazu gehören,
    mysql_error(), error_reporting(E_ALL), print_r(), oder einfach echo.
    ausser dem deine Abfrage hat kein einzige verbund von Tabellen(sieh Inner Join, Left join) und kann kein vernünftige ergebnis liefern
    Slava
    bituniverse.com

    Kommentar


    • #3
      Du multiplizierst mit der Anzahl user, when die Query ein Resultat hat.

      Wenn die Query kein Resultat hat, geht sie nicht die While-Schleife, somit bekommst Du keine echo-Ausgabe.

      @vorangehender Poster: doch er hat joins, sogar zuviele.
      Zuletzt geändert von muh (newbie); 12.05.2006, 13:33.

      Kommentar


      • #4
        Original geschrieben von muh (newbie)

        @vorangehender Poster: doch er hat joins, sogar zuviele.
        wie ist dann die Tabelle "user" verknüpft?
        Slava
        bituniverse.com

        Kommentar


        • #5
          Original geschrieben von Slava
          wie ist dann die Tabelle "user" verknüpft?
          er hat einen join (Verknüpfung) der drei tabellen matches, bets, user . See mysql manual, es steht dort.

          Kommentar


          • #6
            Hm, ich frag mich, ob user nun eine Tabelle, eine Spalte oder ein reserviertes Wort ist.

            Kommentar


            • #7
              USAGE, USE, USING sind reservierte Worte. Der Rest ergibt sich aus dem Zusammenhang. Bist Du mit dem "Multiplikationseffekt" einverstanden?

              Kommentar


              • #8
                Du meinst FROM a, b, c? Klar.

                Kommentar


                • #9
                  Warten wir, ob OP nochmals kommt - und sagt, er habe die guten Räte nicht begriffen, oder im Gegenteil.

                  @ OP: es braucht im WHERE .... AND bets.user=user.userid
                  Für den Spruch verwende mysql_num_rows($result)==0
                  Zuletzt geändert von muh (newbie); 12.05.2006, 22:18.

                  Kommentar

                  Lädt...
                  X