Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Textausgabe wenn eine Datenbankabfrage ohne Ergebnis ist. [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Textausgabe wenn eine Datenbankabfrage ohne Ergebnis ist.


 
Nordlicht123
14-03-2010, 15:49 
 
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

 
h3ll
14-03-2010, 16:08 
 
Abfragen wieviele Einträge das Ergebnis hat, und wenn die Anzahl 0 ist einen Text ausgeben.

 
Nordlicht123
20-03-2010, 12:27 
 
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.

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

 
h3ll
20-03-2010, 12:32 
 
Kannst du bitte ein Beispiel zeigen? Irgendwie ergibt das für mich nicht wirklich Sinn.

 
Nordlicht123
20-03-2010, 12:59 
 
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?


$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

 
AmicaNoctis
20-03-2010, 13:03 
 
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

 
Nordlicht123
20-03-2010, 13:55 
 
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

 
AmicaNoctis
20-03-2010, 14:01 
 
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.

 
Nordlicht123
20-03-2010, 15:37 
 
Ü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



$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

 
h3ll
20-03-2010, 15:42 
 
Vielleicht weil du keinen INNER sondern einen LEFT JOIN machst?

- -

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