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)
count() bzw mysql_num_rows in while schleife ?! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
count() bzw mysql_num_rows in while schleife ?!


 
ccuser
05-03-2004, 19:00 
 
Hallo ;)

Keine ahnung ob dieses das richtige forum ist oder das mysql ... aber da es zum großteil um php geht poste ich das mal hier ;)

Mein Problem:

Habe folgenden Code, der erst die "onlinetabelle" in ein array lädt und dann die daten in einer While schleife mit der "freundesliste" abgleicht.

Mein problem ist das ich wissen möchte wieviele "treffer" er gefunden hat.

,
while($temp = mysql_fetch_array($query))
{
$onname = $temp[0];
$getf = mysql_query("SELECT * FROM friends WHERE name = '$username' AND freundname = '$onname'");
$count = mysql_num_rows($getf);
echo(" $ergb1 || $alle");
while($da = mysql_fetch_array($getf))
{
$friend = $da[freundname];
$temp = mysql_query("SELECT * FROM $logintab WHERE name= '$friend'");
$data = mysql_fetch_row($temp);
echo("<font style=\"color: $data[3];\">$friend </font><br>");
}
}


Wenn ich nun die treffer zähle, gibt er mir für jeden treffer eine eins aus ...
was ja logisch ist ...


$zaehl = mysql_query("SELECT count(*) FROM friends WHERE name = '$username' AND freundname = '$onname'");
$us = mysql_fetch_row($zaehl);
$erg = $us[0];



Aber wie rechne ich das nun zusammen ? Ich würde wetten wieder mit einer schleife .. das problem ist nur das ich ja keinen Endwert weiss :confused:

Vielleicht hat hier jemand nen lösungansatz ?!

Grüße Bjoern

 
TobiaZ
05-03-2004, 19:07 
 
da du ja im php-forum gepostet hast, möchte ich erstmal deinen code was verbessern.

zwei verschachtelte while-schleifen mit jeweils noch einem sql-query drin, ist mit sicherheit nicht gesund für den rechner.

vom pronzip her musst du es so machen

1. auslesen der online-user
=> array mit userids

2. auslesen der boddylist
=> if isset($onlineusers[$row['buddy_id']]) echo online; else echo offline;


in diesem sinne!

 
ccuser
06-03-2004, 10:36 
 
So nochmal überarbeitet :)


Meintest du vielleicht so in etwa ?


$query = mysql_query("SELECT * FROM temp_online");
while($temp = mysql_fetch_array($query))
{
$onname = $temp[0];
$getf = mysql_query("SELECT * FROM friends WHERE name = '$username' AND freundname = '$onname'");
$on = mysql_fetch_row($getf);
if (strtolower($onname) == $on['2'])
{
echo("".$on['2']." ->online<br>");
}


Erstmal danke für den performance tipp ... nun bleibt nur noch das zählen ... und ich habe noch immer keinen schimmer wie ich die gesamtzahl herausbekomme :dontknow:

Ok hat sich erledigt .. $count = 0; vor der schleife und in der schleife ein $count++; ist die lösung gewesen ...

 
TobiaZ
06-03-2004, 15:06 
 
Naja, hast immer noch ne Abfrage in der While-Schleife. Macht bei 100 onlineusern ganze 101 querys, nur für die anzeige. Kann nicht die Lösung sein.

Denk nochmal über meinen Tipp nach ;)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:11 Uhr.