Textausgabe wenn eine Datenbankabfrage ohne Ergebnis ist.

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

  • Textausgabe wenn eine Datenbankabfrage ohne Ergebnis ist.

    Hallo,

    wenn ich eine Datenbankabfrage mit einer Tabelle ausgebe und aufgrund nicht vorhandener Ergebnisse ein Text ausgegeben werden soll, wie wird das gemacht.

    Danke und Gruß,
    Norbert

  • #2
    Abfragen wieviele Einträge das Ergebnis hat, und wenn die Anzahl 0 ist einen Text ausgeben.

    Kommentar


    • #3
      Zitat von h3ll Beitrag anzeigen
      Abfragen wieviele Einträge das Ergebnis hat, und wenn die Anzahl 0 ist einen Text ausgeben.
      Hallo,

      das habe ich mir schon in etwa gedacht, dass das so geht. Leider funktioniert die Umsetzung nicht so wie ich das möchte.

      PHP-Code:
      if (mysql_num _rows ($ergebnis) == '0'
      Mein Problem ist, dass die Abfrage natürlich Ergebnisse hat.

      Die Ergebnisse sollen jedoch nur auf bestimmten Seiten angezeigt werden.
      Das funktioniert auch.

      Auf den Seiten auf denen keine Ergebnisse stehen sollen, soll nun ein Text ausgegeben werden.
      Das Funktioniert leider nicht. Es erscheinen zwar keine Zeilen in der Tabelle, was auch richtig ist, allerdings wird der Text nicht ausgegeben.

      Ich denke, dass liegt daran, dass die Abfrage sehr wohl Ergebnisse im Speicher hat.

      Wie kann ich das lösen?
      Gruß,
      Norbert

      Kommentar


      • #4
        Kannst du bitte ein Beispiel zeigen? Irgendwie ergibt das für mich nicht wirklich Sinn.

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          Kannst du bitte ein Beispiel zeigen? Irgendwie ergibt das für mich nicht wirklich Sinn.
          Hallo,
          mit der Abfrage hole ich alle Veranstaltungen aus der Datenbank.

          Mit einer WHERE Klausel sorge ich dafür, dass auf der Seite "Europa" nur die Veranstaltungen angezeigt werden, die dort auch stattfinden.

          Jetzt möchte ich erreichen, dass auf der Seite "Asien", sofern da keine Veranstaltungen stattfinden, ein Text ausgegeben wird.
          Es ist auch so, dass aufgrund der Abfrage auf dieser Seite keine Tabellenzeile ausgegeben wird. Das ist ja auch so gewollt.

          Leider wird jedoch der gewünschte Text nicht angezeigt?


          PHP-Code:
              $ergebnis mysql_query("SELECT veranstaltung.veranstaltung_id, DATE_FORMAT(datum, '%d.%m.%Y') AS datum_formatiert, DATE_FORMAT(datumend, '%d.%m.%Y') AS datumend_formatiert, 
                                              veranstaltung.turnier_id, veranstaltung.hp_index,
                                              turnier.turnier_name,
                                              homepage.hp_link,
                                              GROUP_CONCAT(DISTINCT sportartenmenu.sportartenmenu_name SEPARATOR ', ') AS sportart,
                                              GROUP_CONCAT(DISTINCT land.land_name SEPARATOR ', ') AS land,
                                              GROUP_CONCAT(DISTINCT stadt.stadt_name SEPARATOR ', ') AS stadt
                                             
              FROM veranstaltung
              LEFT JOIN turnier        ON turnier.turnier_id = veranstaltung.turnier_id
              LEFT JOIN homepage       ON homepage.hp_index = veranstaltung.hp_index
              LEFT JOIN event          ON event.veranstaltung_id = veranstaltung.veranstaltung_id
              LEFT JOIN sportartenmenu ON sportartenmenu.sportartenmenu_id = event.sportart_id
              LEFT JOIN land           ON land.land_index = event.land_id 
              LEFT JOIN stadt          ON stadt.stadt_index = event.stadt_id 
              WHERE datumend >= CURDATE()
              AND '
          $pk_iD' = event.kontinent_id
                  ORDER BY datum ASC
                  "
          );


                  while(
          $row mysql_fetch_object($ergebnis))
                          if (
          mysql_num_rows($ergebnis) == '0')
              
                      {
                      echo 
          "<p>F&uuml;r den Kontinent $thisPage liegen uns leider keine Veranstaltungstermine vor.
                      <br /></p>"
          ;
                      }

                       else
                       {
                       echo 
          "<tr>        
                       <td>"
          .$row->datum_formatiert."</td>"."
                       <td>"
          .$row->datumend_formatiert."</td>"."
                       <td><a href="
          .$row->hp_link." target=_blank>".$row->turnier_name."</a></td>"."
                       <td>"
          .$row->sportart."</td>"."
                       <td>"
          .$row->disziplin."</td>"."
                       <td>"
          .$row->land."</td>"."
                       <td>"
          .$row->stadt."</td>"."
                       <td><a class=tix href=/Sportarten"
          .$row->sportartenmenu_link.">Tickets</a></td>"."
                       </tr>"

                       } 
          Gruß,
          Norbert

          Kommentar


          • #6
            Hallo,

            überleg mal, wann PHP den Körper der while-Schleife durchläuft, vor allem, wenn keine Datensätze da sind und an welcher Stelle du überhaupt danach fragst, wieviele es sind. Fällt dir da was auf?

            Gruß,

            Amica
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              Hallo,

              überleg mal, wann PHP den Körper der while-Schleife durchläuft, vor allem, wenn keine Datensätze da sind und an welcher Stelle du überhaupt danach fragst, wieviele es sind. Fällt dir da was auf?

              Gruß,

              Amica

              Hallo,
              verstehe ich nicht ganz?
              Wenn ich die Bedingung mit der Textausgabe ans Ende stetze oder vor "while-Schliefe", dass Probem bleibt bestehen.
              Auch auf den Seiten die keine Ergebnisse anzeigen erscheint der Text nicht.

              Gruß,
              Norbert

              Kommentar


              • #8
                Zitat von Nordlicht123 Beitrag anzeigen
                oder vor "while-Schliefe", dass Probem bleibt bestehen.
                Überzeug mich davon! Die Bedingung muss vor der Schleife stehen, weil die Schleife ja nicht ein einziges Mal durchlaufen wird, also kommt PHP auch nie zu deiner Bedingung.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Zitat von AmicaNoctis Beitrag anzeigen
                  Überzeug mich davon! Die Bedingung muss vor der Schleife stehen, weil die Schleife ja nicht ein einziges Mal durchlaufen wird, also kommt PHP auch nie zu deiner Bedingung.
                  Hallo,

                  ja aber ich glaube das Problem ist, das das Ergebnis nicht 0 ist obwohl es das sein müßte?

                  Ich habe nur einen Datensatz, wo die WHERE Bedingung erfüllt ist und zwar dann, wenn ich mich auf der Seite Europa befinde.
                  Denn hier stimmen event.kontinent_id und pk_iD überein.

                  pk_iD ist die Seiten iD für den Kontinent Europa.

                  Aber leider werden auf den Seiten Afrika, Asien, etc auch Spalten und Felder angezeigt, die allerdings keine Daten beinhalten.

                  Wo kann der Fehler liegen?

                  PHP-Code:
                          <?php
                          
                         

                      $ergebnis 
                  mysql_query("SELECT veranstaltung.veranstaltung_id, DATE_FORMAT(datum, '%d.%m.%Y') AS datum_formatiert, DATE_FORMAT(datumend, '%d.%m.%Y') AS datumend_formatiert, 
                                                      veranstaltung.turnier_id, veranstaltung.hp_index,
                                                      turnier.turnier_name,
                                                      homepage.hp_link,
                                                      GROUP_CONCAT(DISTINCT sportartenmenu.sportartenmenu_name SEPARATOR ', ') AS sportart,
                                                      GROUP_CONCAT(DISTINCT land.land_name SEPARATOR ', ') AS land,
                                                      GROUP_CONCAT(DISTINCT stadt.stadt_name SEPARATOR ', ') AS stadt,
                                                      event.kontinent_id
                                                     
                      FROM veranstaltung
                      LEFT JOIN turnier        ON turnier.turnier_id = veranstaltung.turnier_id
                      LEFT JOIN homepage       ON homepage.hp_index = veranstaltung.hp_index
                      LEFT JOIN event          ON event.veranstaltung_id = veranstaltung.veranstaltung_id
                      LEFT JOIN sportartenmenu ON sportartenmenu.sportartenmenu_id = event.sportart_id
                      LEFT JOIN land           ON land.land_index = event.land_id 
                      LEFT JOIN stadt          ON stadt.stadt_index = event.stadt_id 
                      WHERE datumend >= CURDATE()
                      AND '
                  $pk_iD' = event.kontinent_id
                          ORDER BY datum ASC
                          "
                  );
                          
                              if (
                  mysql_num_rows ($ergebnis) == '0')
                          {
                          echo 
                  "<p>F&uuml;r den Kontinent $thisPage liegen uns leider keine Veranstaltungstermine vor.
                          <br /></p>"
                  ;
                          }
                    
                              while(
                  $row mysql_fetch_object($ergebnis))
                            
                              {
                               echo 
                  "<tr>        
                               <td>"
                  .$row->datum_formatiert."</td>"."
                               <td>"
                  .$row->datumend_formatiert."</td>"."
                               <td><a href="
                  .$row->hp_link." target=_blank>".$row->turnier_name."</a></td>"."
                               <td>"
                  .$row->sportart."</td>"."
                               <td>"
                  .$row->disziplin."</td>"."
                               <td>"
                  .$row->land."</td>"."
                               <td>"
                  .$row->stadt."</td>"."
                               <td><a class=tix href=/Sportarten"
                  .$row->sportartenmenu_link.">Tickets</a></td>"."
                               </tr>"

                          
                              }
                           
                  ?>
                  Gruß,
                  Norbert

                  Kommentar


                  • #10
                    Vielleicht weil du keinen INNER sondern einen LEFT JOIN machst?

                    Kommentar

                    Lädt...
                    X