mysql_num_rows > kein ergebnis .. und dann?

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

  • mysql_num_rows > kein ergebnis .. und dann?

    hallo!

    ich habe hier folgende situation:

    die sql db wird angefragt, anschliessend sollen mit mysql_num_rows die anzahl der gefundenen datensätze gezählt werden...



    while ($data = mysql_fetch_array($sql_result)){
    $counted=mysql_num_rows($sql_result);


    das klappt auch soweit ganz gut , so lange er auch welche findet .. ich möchte aber dann in php eine unterscheidung vornehmen : wenn kein datensatz gefunden wurde, dann soll eben auch eine entsprechende meldung ausgegeben werden ... nur klappt das überhaupt nicht ...

    vielleicht hat jemand ein bisschen code für mich?

    vielen dank,

    tm

  • #2
    PHP-Code:
    if ( $counted=mysql_num_rows($sql_result) ) {
       while (
    $data mysql_fetch_array($sql_result)){
       ...
       }
    } else echo 
    "KEIN DATENSATZ ... !"
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      oh my god

      schläfst du nie ? ich danke dir vielmals! genau das wars!
      wenn du noch kurz zeit hast, kannst du das hier

      if ( $counted=mysql_num_rows($sql_result)

      aus deinem code mal kurz erläutern? das versteh ich nicht wenn ich ehrlich bin (auch wenns funktioniert)

      viele grüße und nochmals dank,

      tm

      Kommentar


      • #4
        Ganz einfach ... in PHP (genau wie in C) liefert jeder Ausdruck ein Ergebnis ... $counted = mysql_num_rows($sql_result) ... weist also nicht nur der Variablen $counted einen Wert zu ... sondern liefert als Ausdruck insgesamt auch ein Ergebnis ...

        Ein Boolean ist definiert als 0 = FALSE bzw. !FALSE = TRUE (! als Negation [NOT]) ... also ist jedes Ergebis das ungleich 0 ist Wahr ... jedes Ergebnis 0 ist Falsch ...

        IF () erwartet nun einen Boolean Ausdruck ...

        Wird also in diesem Falle von mysql_num_rows() ein Wert ungleich 0 zurückgegeben (wurde also mindestens ein Datensatz gefunde), so ist der Ausdruck im IF-Vergleich Wahr .. wird 0 zurückgeliefert ist er Falsch ...

        PS.: Nein ... schlafen ist ineffektiv ... genaugenommen mußte ich gerade noch 'ne Datenbank reparieren ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          hallo!

          ich danke dir für die ausführliche erklärung! habs verstanden!
          wünsche dir noch viel erfolg beim db reparieren .. (keine ahnung von sowas .. aber bei deiner effektivitätsverteilung sicherlich machbar ...

          thanks again!

          tm

          Kommentar


          • #6
            Hallo!
            Ich habe ein ähnliches Problem wie Typomaniac...
            PHP-Code:
             $res=mysql_query("select * from tipps_$id where {$spieltag}_heim is not null");
            if(
            $counted=mysql_num_rows($res)) echo "Spieler Nr. $id hat getippt.<br>";
            else{...} 
            Bei mir gibt es 3 Möglichkeiten:
            1. SELECT liefert einen oder mehrere Datensätze zurück (erfolgreiche Suche)
            2. SELECT liefert keinen Datensatz zurück (erfolglos)
            3. SELECT sucht in einer Spalte, die nicht existiert.
            Habe es jetzt so versucht wie hier empfohlen.
            Die Abfrage funktioniert zwar, allerdings wird mir immer die folgende Fehlermeldung ausgegeben, wenn der 2. oder 3. Fall eintritt.
            PHP-Code:
            Warningmysql_num_rows(): supplied argument is not a valid
            MySQL result resource in 
            /home/andreas/html/tippspiel/admin/mail-no_tipp.php
            on line 13 
            Beste Grüße, Andreas
            Zuletzt geändert von el muesli; 07.02.2005, 16:39.
            andreas.mkq.de

            Kommentar


            • #7
              Hmmm.
              evtl. versteh ich Dich nicht richtig, aber ich würde das so machen:

              PHP-Code:
              $res=mysql_query("SELECT * from tipps_".$id." WHERE ".$spieltag."_heim IS NOT NULL");
              $anz=mysql_num_rows($res);
              if(
              $anz>0)
              {
              echo 
              "Spieler Nr. ".$id." hat getippt.<br>";
              }
              else{...} 
              Wenn Du natürlich mit dem SELECT auf eine Spalte zugreifst, die nicht existiert, läufts in einen Fehler.... Den kannste aber unterdrücken.

              Kommentar


              • #8
                Ich hab schon viel damit rumprobiert. Wie man die Fehler unterdrücken kann weiß ich leider nicht... Deshalb bleibe ich immer bei einer Fehlermeldung hängen, wenn die Spalte nicht existiert.
                Aber ich glaube, dass mysql_num_rows auch was zurückgibt, wenn ein Fehler aufgetreten ist (wenn das ein negativer Wert wäre, dann würde das ja mit deinem Vorschlag hinhaun).
                Kann mir jemand genau sagen, was mysql_num_rows in welchen Fällen zurückgibt? ...hab das nirgendwo ausführlich gefunden.
                Danke, Andreas
                andreas.mkq.de

                Kommentar


                • #9
                  mysql_num_rows gibt immer nur zahlenwerte zurück....

                  Wenn aber die Tabelle
                  PHP-Code:
                  tipps_".$id." 
                  ,oder halt die Spalte nicht existiert gibts einen Fehler.

                  den Fehler kannste mit einem @ unterdrücken.

                  Kommentar


                  • #10
                    Sorry, ich kanns grad nicht testen und frag deshalb vorsichtshalber direkt nochmal nach.
                    Wo genau muss das @ hin? Liefert mysql_num_rows dann 0 zurück wenn die Tabelle bzw. Spalte nicht existiert?
                    andreas.mkq.de

                    Kommentar


                    • #11
                      Wo genau muss das @ hin?
                      vor den befehl, dessen error du unterdrücken willst.
                      Liefert mysql_num_rows dann 0 zurück wenn die Tabelle bzw. Spalte nicht existiert?
                      ja, bringt dir also garnix.

                      mysql_query müßte FALSE liefern, wenn fehlerhaft ...

                      eventuell solltest du auch das verkorkste db-design anpassen
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Danke, ich hab das mit dem @ jetzt hinbekommen - funzt wunderbar.
                        An die Umstrukturierung meiner Datenbank hab ich auch schonmal gedacht, es ist allerdings ein bisschen schwierig, weil es sich um ein Tippspiel handelt und die Spieler ständig Daten abfragen oder eintragen. Gibt es bestimmte Strategien für so eine Umstrukturierung? Ich befürchte ja, dass man sich die für jede Datenbank speziell ausdenken muss...
                        Mein Problem ist z.B., dass in manchen Tabellen einfach Spalten fehlen (wenn ein Spieler Tipps für einen Spieltag abgibt, dann werden die Spalten angelegt - wenn er das nicht tut, dann fehlen die Spalten).
                        Wenn jemandem was dazu einfällt, dann soll ers schreiben, ansonsten bedanke ich mich schonmal für die Hilfe mit dem @ - das war wirklich klasse!
                        Beste Grüße!
                        andreas.mkq.de

                        Kommentar


                        • #13
                          Du solltest Dir evtl überlegen icht alles in eine Tabelle zu stopfen.
                          Wenn Du die erforderlichen Spalten auf mehrere Tabellen verteilst ist Dir schob geholfen.

                          Nimm Dir einfach einen großen Zettel und entwerf ein gutes DB Layout.

                          Eine Abfrage auf eine Spalte, die evtl. gar nicht existiert halte ich für mehr als ungünstig.

                          Kommentar

                          Lädt...
                          X