Autor Zpráva
janek22
Profil *
Ahoj, na webu sem si udělal přátelé a výpis, kdo je online nebo offline. Teď bych chtěl spočítat kolik jich je online celkem, ale bohužel, když je nějaký přitel přihlášený vždy to píše, že je 1 přihlášen i když sou třeba 4. Když není žádnej, přihlášenej, napíše to správně 0.

           		       <?php
           $messages_query2 = mysql_query("SELECT * FROM pratele WHERE id_uzivatele = '$user_id_result'");
         while($messages_row2 = mysql_fetch_array($messages_query2)) {
            $id_pritele = $messages_row2["id_pritele"];
    }  
         	$pocet = MySQL_Query("SELECT * FROM users_sessions WHERE userid = '$id_pritele'");
            
        
           if (MySQL_Num_Rows($pocet)>0){ 

  echo " ".mysql_num_rows($pocet)." ";
} else {  
  echo "0"; 
}	
?>
Tori
Profil
Chcete tedy zobrazit jen počet těch online, nikoli jména? Myslím, že by to šlo i jedním dotazem:
$sql = "SELECT COUNT(*) 
  FROM pratele p 
  INNER JOIN users_sessions s ON s.userid = p.id_pritele
    AND id_uzivatele = $user_id_result"; // předpokládám tady, že sloupec je typu INT a v proměnné je určitě číslo.
$result = mysql_query($sql) or die(mysql_error());
$pocetOnline = mysql_result($result, 0);

Jinak ve vašem skriptu je chyba v tom, že na ř.4 si při každém průchodu cyklem přepisujete proměnnou $id_pritele. Po ukončení cyklu je v ní tedy hodnota z posledního řádku výsledků = jedno ID, a v users_session se k tomu jednomu ID samozřejmě najde jen jeden řádek.
Bertram
Profil
Protože ti první dotaz vrátí vždy jen jeden nebo žádný záznam.
janek22
Profil *
Tori:
Díky, funguje bezvadně :) ještě bych měl takovej dotaz, když je někdo přihlášenej šlo by udělat, aby číslo bylo zelené? A když bude 0 tak černé? předtím sem to totiž řešil
           if (MySQL_Num_Rows($sql)>0){ 

....
} else {  
....
}	
janek22
Profil *
Už nic, už sem nato přišel :)
janek22
Profil *
tak furt nic :( teď mi to ukazuje jinou barvou, ikdyž je 0 přátel online...

$sql = "SELECT COUNT(*) FROM pratele p INNER JOIN users_sessions s ON s.userid = p.id_pritele AND id_uzivatele = $user_id_result";
$result = mysql_query($sql) or die(mysql_error());
$pocetOnline = mysql_result($result, 0);
if (MySQL_Num_Rows($result)>0){
echo "Přátelé(<font color='green'>$pocetOnline</font>)";
} else {
echo "Přátelé(0)";
}
Tori
Profil
janek22:
Ten sql dotaz vrací jeden řádek s jednou hodnotou. Počet přátel online máte přece v proměnné $pocetOnline, na co mysql_num_rows?
janek22
Profil *
nevim, nenapadá mě jiné řešení jak docílit toho, když někdo z pžátel je přihlášenej aby číslo bylo zelené, když nikdo nebude přihlášenej, tak aby byla 0 černě napsaná.
Medvídek
Profil
janek22:
Tak to snad můžete zjistit podle hodnoty v proměnné $pocetOnline, ne?
skrepyKOKO
Profil
ty online bych vyřešil pomocí databáze,
if(isset($online='1')){
...
}

funguje to takhle:
když se někdo přihlásí,změní se online v databázi z 0 na 1,poté podmínka vybere pouze jen hodnoty s 1...
no,a zbytek máš nahoře...
při odhlašování udělej update z 1 na 0...
pcmanik
Profil
skrepyKOKO:
Pre porovnavanie sa v php pouzivaju 2 rovna sa, 1 je pre priradovanie hodnoty, naviac neviem co tam potom robit to isset

A uz dlhsie si vsimam tvoje prispevky, zjavne nemas jasne v tom jazyku, tak prosim davaj tu len rady, ktorymi si si 100% isty.
CZechBoY
Profil
$sql = "SELECT COUNT(1) FROM pratele p INNER JOIN users_sessions s ON s.userid=p.id_pritele AND id_uzivatele=$user_id_result"; 
$result = mysql_query($sql) or die(mysql_error()); 
$pocetOnline = mysql_result($result, 0); 
 if ($pocetOnline>0){ 
 echo "Přátelé(<font color='green'>$pocetOnline</font>)"; 
} 
else { 
 echo "Přátelé(<span style='color:black'>0</span>)"; 
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0