mysql "while"

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

CaTaLinU
Average Member
Mesaje: 73
Membru din: Vin Feb 10, 2012 2:26 pm
Localitate: Braila

mysql "while"

Mesajde CaTaLinU » Sâm Sep 29, 2012 7:29 pm

am facut si eu un cod pentru o tabela care sa-mi afiseze si sa-mi sorteze dupa AVERAGE la un anumit rand al acelei tabele

Cod: Selectaţi tot

<?php
include('../source/config.php');
$cs_rank = "0";
$mc_rank = "0";
$samp_rank = "0";



$day = date("j");
$month = date("m");
$year = date("Y");
$hour = date("H");
$minute = date("i");

$result = mysql_query("SELECT * FROM average WHERE year = '$year' AND month = '$month' ORDER by AVG(players_on) DESC");
while($row = mysql_fetch_array($result))
{
   $avg = $row['AVG(players_on)'];
   if($row['game'] == "cs")
   {
      $cs_rank=$cs_rank+1;
      echo $row['ip'].":".$row['port']."  -> AV=".$avg."  -> Rank=".$cs_rank."</br>";
   }
   else if($row['game'] == "samp")
   {
      $samp_rank=$samp_rank+1;
      echo $row['ip'].":".$row['port']."  -> AV=".$row['AVG(players_on)']."  -> Rank=".$samp_rank."</br>";
   }
   else if($row['game'] == "minecraft")
   {
      $mc_rank=$mc_rank+1;
      echo $row['ip'].":".$row['port']."  -> AV=".$row['AVG(players_on)']."  -> Rank=".$mc_rank."</br>";
   }
}
?>


in tabela sunt foarte multe randuri dar la echo afiseaza doar cine e pe locu 1 dupa AVG ...

iar ceea ce-mi afiseaza este

Cod: Selectaţi tot

89.44.246.31:27015 -> AV= -> Rank=1


dupa cum vedeti nici *avg nul afiseaza in acel echo ...



quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Sâm Sep 29, 2012 8:20 pm

Cod: Selectaţi tot

   $average = mysql_query("SELECT `row`, `row`, AVG(players_on) as AveragePeople FROM `average`
   WHERE `year` = '$year' AND `month` = '$month' ORDER BY AveragePeople DESC") or die(mysql_error()); //Intotdeauna mysql_error la interogare,update,delete etc
   


Si in conditii "$row['AveragePeople']" .

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

CaTaLinU
Average Member
Mesaje: 73
Membru din: Vin Feb 10, 2012 2:26 pm
Localitate: Braila

Mesajde CaTaLinU » Sâm Sep 29, 2012 8:29 pm

am incercat

am pus ceva mai simplu

Cod: Selectaţi tot

$avgx = mysql_query("SELECT `game`, `ip`, `port`, `players_on`, `players_max`, `year`, `month`, `day`, AVG(players_on) as AveragePeople FROM `average`
    WHERE `year` = '$year' AND `month` = '$month' ORDER BY AveragePeople DESC") or die(mysql_error()); //Intotdeauna mysql_error la interogare,update,delete etc
while($row = mysql_fetch_array($avgx))
{

   echo $row['ip'].":".$row['port']."  -> AV=".$row['AveragePeople']."  -> </br>";
}



iar pe site afiseaza
89.44.246.31:27015 -> AV=21.5021 ->

e bine pt ca acum afiseaza averageul dar tot la fel doar 1 arata
nu arata toate randurile din tabela ...

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Mesajde quadmachine » Dum Sep 30, 2012 5:26 pm

Cod: Selectaţi tot

$avgx = mysql_query("SELECT `game`, `ip`, `port`, `players_on`, `players_max`, `day`, AVG(players_on) as AveragePeople ,
year AS An, month as LunaInCurs FROM `average` WHERE An = '$year' AND LunaInCurs = '$month' ORDER BY AveragePeople DESC") or die(mysql_error()); //Intotdeauna mysql_error la interogare,update,delete etc
while($row = mysql_fetch_array($avgx))
{
  //Schimba numele la year si month,pune si tu an si luna.Presupun ca daca sunt functii mysql le ia ca atare.

   echo $row['ip'].":".$row['port']."  -> AV=".round($row['AveragePeople'])."  -> </br>";
}

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

CaTaLinU
Average Member
Mesaje: 73
Membru din: Vin Feb 10, 2012 2:26 pm
Localitate: Braila

Mesajde CaTaLinU » Dum Sep 30, 2012 6:24 pm

Cod: Selectaţi tot

$avgx = mysql_query("SELECT `game`, `ip`, `port`, `players_on`, `players_max`, `year`, `month`, `day`, AVG(players_on) as AveragePeople FROM `average`
     WHERE `year` = '$year' AND `month` = '$month' ORDER BY AveragePeople DESC") or die(mysql_error()); //Intotdeauna mysql_error la interogare,update,delete etc
while($row = mysql_fetch_array($avgx))
{

    echo $row['ip'].":".$row['port']."  -> AV=".$row['AveragePeople']."  -> </br>";
}


faza e ca daca bag
order by players_on imi arata toate randurile
dar daca dau
order by AVG(players_on) arata doar 1 rand din tabela

Reventon
Average Member
Mesaje: 68
Membru din: Lun Ian 31, 2011 5:07 pm

Mesajde Reventon » Sâm Oct 06, 2012 2:48 pm

pai, din cate stiu eu, AVG iti returneaza media pe coloana respectiva.

se aduna toate valorile din coloana (in cazul de fata players_on) si se imparte la numarul de inregistrari.
deci vei avea o valoare fixa, indiferent de ceea ce faci, iti va rezulta o singura linie.

poate am inteles eu gresit ceea ce vrei sa faci.

ADAUGAT:
incearca sa faci o grupare
ex:

GROUP BY year, month


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 10 vizitatori