mysql_num_rows / COUNT(*)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by wkd-; 12-05-2006, 11: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

    Comment


    • #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.
      Last edited by muh (newbie); 12-05-2006, 14:33.

      Comment


      • #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

        Comment


        • #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.

          Comment


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

            Comment


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

              Comment


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

                Comment


                • #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
                  Last edited by muh (newbie); 12-05-2006, 23:18.

                  Comment

                  Working...
                  X