php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 14-03-2010, 14:49
Nordlicht123
 Registrierter Benutzer
Links : Onlinestatus : Nordlicht123 ist offline
Registriert seit: Mar 2010
Beiträge: 23
Nordlicht123 befindet sich auf einem aufstrebenden Ast
Standard 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
Mit Zitat antworten
  #2 (permalink)  
Alt 14-03-2010, 15:08
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Abfragen wieviele Einträge das Ergebnis hat, und wenn die Anzahl 0 ist einen Text ausgeben.
Mit Zitat antworten
  #3 (permalink)  
Alt 20-03-2010, 11:27
Nordlicht123
 Registrierter Benutzer
Links : Onlinestatus : Nordlicht123 ist offline
Registriert seit: Mar 2010
Beiträge: 23
Nordlicht123 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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
Mit Zitat antworten
  #4 (permalink)  
Alt 20-03-2010, 11:32
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Kannst du bitte ein Beispiel zeigen? Irgendwie ergibt das für mich nicht wirklich Sinn.
Mit Zitat antworten
  #5 (permalink)  
Alt 20-03-2010, 11:59
Nordlicht123
 Registrierter Benutzer
Links : Onlinestatus : Nordlicht123 ist offline
Registriert seit: Mar 2010
Beiträge: 23
Nordlicht123 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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
Mit Zitat antworten
  #6 (permalink)  
Alt 20-03-2010, 12:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 20-03-2010, 12:55
Nordlicht123
 Registrierter Benutzer
Links : Onlinestatus : Nordlicht123 ist offline
Registriert seit: Mar 2010
Beiträge: 23
Nordlicht123 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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
Mit Zitat antworten
  #8 (permalink)  
Alt 20-03-2010, 13:01
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
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.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #9 (permalink)  
Alt 20-03-2010, 14:37
Nordlicht123
 Registrierter Benutzer
Links : Onlinestatus : Nordlicht123 ist offline
Registriert seit: Mar 2010
Beiträge: 23
Nordlicht123 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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
Mit Zitat antworten
  #10 (permalink)  
Alt 20-03-2010, 14:42
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht weil du keinen INNER sondern einen LEFT JOIN machst?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS - Wenn Ergebnis > als X dann Y vom Ergebnis abziehen checkbox HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 6 29-06-2009 21:24
Tabelle Grafik und Grafiktext - will Ergebnis auch wenn kein Text vorhanden BMN777 SQL / Datenbanken 3 18-02-2008 22:44
Cronjob?! Aufruf ohne Ergebnis chrisphp PHP Developer Forum 5 24-10-2005 00:35
Wenn Abfrage kein Ergebnis liefert, dann... bastian SQL / Datenbanken 2 23-12-2003 12:36
Wenn kein Ergebnis dann... whoda SQL / Datenbanken 3 16-10-2003 11:41

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:40 Uhr.