php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wenn Abfrage leer = Hinweis ausgeben


 
michaelxxx
29-11-2008, 14:45 
 
Hallo,

ich hätte ien Frage zu einer Datenbank-Abfrage.

Ich suche mir mit folgender Abfrage Datensätze aus der DB raus und gebe sie aus.


<table>
<!-- Auslesen der Datenbank -->
<?php
$query = sprintf("SELECT * FROM worldlinks WHERE w_country='$land' order by w_name");
$worldmaplinks = mysql_query($query) OR die(mysql_error());
while ($row = @mysql_fetch_array($worldmaplinks))
{
echo "hier erfolgt die Ausgabe der Datensätze...";
}
?>
</table>


Wenn die Datenbank keine Ergebnisse beinhaltet wird nichts ausgegeben. Was ich aber gerne hätte ist, das im Falle von "kein Datensatz da" ein Hinweis ausgegeben wird wie "noch nichts vorhanden - jetzt eintragen".

Wie müsste ich meine Ausgabe denn anpassen?

Grüße
Michael

 
asp2php
29-11-2008, 14:56 
 
mysql_num_rows() ist dein Freund.

 
unset
29-11-2008, 14:57 
 
schau dir mysql_num_rows and

 
michaelxxx
29-11-2008, 15:18 
 
mysql_num_rows() ist dein Freund.

ich möchte jetzt hier keine grundsatzdiskussiuon lostreten, aber wirklich hilfreich ist die antwort für mich nicht. )-:

wenn ich mir die info dazu anschaue http://ro.php.net/mysql_num_rows verstehe ich leider gar nichts.

Für jemanden, der sich mit den ganzen Abfragen etc. super auskennt, ist meine Anfrage sicherlich lachhaft - wenn aber jemand da realtiver Anfänger ist hilft ein solcher Hinweis (auch wenn er gut gemeint ist) nicht wirklich weiter.

 
asp2php
29-11-2008, 15:40 
 
Wenn mysql_num_rows()>0 dann
{
// mach dies, mach das
}
sonst
{
// mach dies, mach das
}


Klarer?

 
michaelxxx
29-11-2008, 18:10 
 
vom verständnis her ja, aber der umsetzung (vom code her) leider nein... )-:

 
Blackgreetz
29-11-2008, 18:15 
 
Kommt für mich so rüber, als ob das Thema eher nach Projekthilfe gehört.

Hast du denn grundlegende Begriffe von PHP gelernt?

"Wenn, sonst" ... Woran würde dich das im englischen erinnern?

mfg

 
michaelxxx
29-11-2008, 18:18 
 
habs durch andere quellen ohne das mysql_num_rows() irgendwie hinbekommen....

@Blackgreetz
lese meine Antwort bitte durch. Ich hab ganz klar geschrieben, dass es NICHT am Verständnis der Problemlösung liegt, sondern lediglich an der Code-Umsetzung!! Das ist ein gewaltiger Unterschied.

 
Blackgreetz
29-11-2008, 18:36 
 
Ich hab sie genau gelesen.

Aber wenn du "Wenn, sonst" ins englische übersetzt, kommst du auch an die Code-Lösung O.o

"Wenn, sonst" = "if, else".

Die Bedingung für if hat dir asp2php doch auch schon verraten.


Hab auch nie gesagt, dass du es nicht verstanden hast.
Grundlagen brauch man zur Umsetzung... da es daran gelegen hat, fehlen die wohl somit...

mfg

 
michaelxxx
29-11-2008, 19:11 
 
wie gesagt, ich weiß das es nicht bös gemeint ist, aber ihr solltet halt einfach auch nicht vergessen, dass nicht jeder hier im Forum auf dem Wissenstand ist wie ihr. Sonst würd ich mir auch nicht die "blöse geben" und so eine vielleicht einfach Frage hier zu posten.

Aber ich hab mich auch zu früh gefreut: Meine Abfrage funktioniert wohl doch nicht, denn er gibt jetzt immer die else Schleife aus:


<!-- Auslesen der Datenbank -->
<?php
$sql = "SELECT * FROM worldlinks WHERE w_country='$land' order by w_name";
$result = @mysql_query($sql);
if(!$result) {
echo "alle Datensätze";
} else {
echo "nix da";
}
?>


if/else ist da drinne, aber ich weiß eben nicht, wie ich die mysql_num_rows()>0 Funktion hier einbinden muss?
:confused:

Grüße
Michael

 
Kropff
29-11-2008, 19:16 
 
$sql = "SELECT * FROM worldlinks WHERE w_country='$land' order by w_name";
$result = mysql_query($sql);
$hits = mysql_num_rows($result);
if ($hits...)

und
$result = @mysql_query($sql);
liefert nur eine referenz auf deine abfrage. die ist also immer vorhanden (wenn kein fehler auftaucht)

peter

da mittlerweile eigene, wenn auch fehlerhafte ansätze vorhanden sind, verschiebe ich es wieder ins php-forum.

 
michaelxxx
29-11-2008, 19:32 
 
danke für die Hilfe. Ich hoffe, ich hab das jetzt so umgesetzt, wie von dir vorgeschlagen?


<?php
$sql = "SELECT * FROM worldlinks WHERE w_country='$land' order by w_name";
$result = @mysql_query($sql);
$hits = mysql_num_rows($result);
if($hits) {
echo "Name".$row[w_name]."<br>";
} else {
echo "nix da";
}
?>
</table>


Allerdings funktioniert jetzt nicht mehr die Ausgabe von .$row[w_name].

Ich hab das attribt "$row" mal ersetzt durch das attribut "$hits", aber auch das klappt nicht. Also irgendwie schein ich noch auf dem Holzweg zu sein.

 
Kropff
29-11-2008, 19:35 
 
wenn die treffer vorhanden sind, musst du dir die ergebnisse noch per mysql_fetch_irgendwas holen. ich empfehle dir, mal dieses tutorial (http://www.peterkropff.de/tutorials/php_mysql_1/php_mysql_1.htm) durchzuarbeiten, da wird alles erklärt.

peter

 
phpguru42
29-11-2008, 20:31 
 
Leute, brecht euch doch keinen ab!

Analog zu: Beispiel #1 Ein ausführliches Beispiel zumysql_fetch_assoc() (http://de3.php.net/manual/de/function.mysql-fetch-assoc.php)


$sql = "SELECT w_name FROM worldlinks WHERE w_country='{$land}' order by w_name";

if(!$result = mysql_query($sql))
{
echo "Anfrage '{$sql}' konnte nicht ausgeführt werden : " . mysql_error();
}
elseif(mysql_num_rows($result) == 0)
{
echo 'Keine Zeilen gefunden';
}
else
{
while($row = mysql_fetch_assoc($result))
{
echo $row['w_name'].'<br />';
}
}

 
michaelxxx
29-11-2008, 21:12 
 
@phpguru42: großes DANKE

 
jmc
30-11-2008, 15:37 
 
Du kannst das auch gleich alles in eine machen ;)
for($i = 0; ($row = mysql_fetch_assoc($result)) !== false; $i++){
echo $row['w_name'] . "<br>";
}
if(!$i){
echo "Keine Zeilen gefunden";
}

Du solltest '($row = mysql_fetch_assoc($result)) !== false' und nicht '$row = mysql_fetch_assoc($result)' verwenden.

 
phpguru42
01-12-2008, 20:55 
 
Original geschrieben von jmc
Du solltest '($row = mysql_fetch_assoc($result)) !== false' und nicht '$row = mysql_fetch_assoc($result)' verwenden.
Und warum sollte man das so machen?

-archiv-

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:26 Uhr.