Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

sortiranje nizova po velicini jednog elementa niza

PHP
  • 8 odgovora
  • 5.675 pregleda

Najnovija ↓

sortiranje nizova po velicini jednog elementa niza 09.03.2007. u 15:55 · pre 239 meseci
izmenjeno 1 put, poslednji put Nemanja Avramović 07.03.2008. u 09:55
  1. Nemanja Avramović07.03.2008. u 09:55zapis iz teksta poruke
#1
Iz MySQL uzimam podatke (npr. o svim ucenicima: ime, prezime, odeljenje, razred, ocena(1..n), prosecna ocena (koju nemam u bazi, vec se izracunava od podataka koji stizu iz baze).

Code:
$ucenik=mysql_query("select * from ucenik");
while($upit=mysql_fetch_array($ucenik){
 
//    izracunava prosecnu ocenu

$niz= array("$upit[ime]", "$upit[prezime]", "$upit[ocene]", "$upit[prosecna_ocena]");

//***

}


Treba da napravim niz u koji ce biti smesteni svi $niz, da bih mogao da ih razvrstam po prosecnoj oceni (da prvi u tabeli bude ucenik sa najvecim prosekom). Formiram tabelu, ali su ucenici rasporedjeni po redosledu ucitavanja iz baze.

Hvala unapred!
Re: sortiranje nizova po velicini jednog elementa niza 10.03.2007. u 10:45 · pre 239 meseci #3
Prosecnu ocenu nemam u bazi, vec se izracunava od ocena koje su u bazi.

Treba mi niz koji je sastavljen od nizova koji se prave u svakom krugu petlje.
Znaci, razvrstavanje nizova po promenljivoj koje NEMA u MySQL bazi.
Re: sortiranje nizova po velicini jednog elementa niza 10.03.2007. u 11:59 · pre 239 meseci #4
Prvi način: u samom select upitu sračunaš vrednost proseka za svakog učenika pa to upotrebiš u "order by", ide nešto sa "group by" ali ne znam napamet, pogledaj mysql manual.

Drugi način: kad dodaješ učenika u glavni niz dodaj ga sa:
Code:
 $tmp= round($prosek*1000); 
 while(isset($niz[$tmp])) $tmp= "$tmp#"; 
 $niz["$tmp"]= array("$upit[ime]", "$upit[prezime]", "$upit[ocene]", $prosek);

i posle samo primeniš ksort();
Potpis
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
Re: sortiranje nizova po velicini jednog elementa niza 12.03.2007. u 11:02 · pre 239 meseci
izmenjeno 1 put, poslednji put sale83 12.03.2007. u 11:17
  1. sale8312.03.2007. u 11:17zapis iz teksta poruke
#6
AVG() :)

Recimo da je ovako:
ucenikID = Svaki ucenik ima svoj ID ....
Code:

SELECT ucenikID, AVG(ocene) FROM student GROUP BY ucenikID ORDER BY ocene


Ako za svaku ocenu imas posebnu kolonu onda ovako: ( Tj kao sto je WHOIS napisao)

Code:

SELECT ime, (ocena0+ocena1+ocena2...ocenaN)/N AS prosek FROM studenti ORDER BY prosek


PS
Ovo je valjda bilo pitanje za MYSQL :)
Potpis
Sto mozes danas ne ostavljaj za sutra!
Re: sortiranje nizova po velicini jednog elementa niza 13.03.2007. u 11:18 · pre 239 meseci #7
Hvala na pomoci.

Trebala mi je pomoc oko skripta koji razvrstava nizove koji su vec formirani

usort($niz, rang)

gde je

function rang($a, $b){
if($a[broj_elementa_u_nizu] == $b[broj_elementa_u_nizu])
return 0;
else if ($a[broj_elementa_u_nizu] < $b[broj_elementa_u_nizu])
return 1;
else
return -1;
}

gde je, opet, broj_elementa_u_nizu = 9, npr.

Ovo mi razvrstava nizove u opadajucem redosledu prema 9. elementu niza.
Problem, 2.deo:
Ako zaboravimo MySQL, i ako treba da posle razvrstavanja prema elementu 9, razvrstava i po elementu 8 (ako ima vise istih proseka, na vise mesto u listi se stavlja ucenik sa vecom ocenom iz nekog izbornog predmeta, na primer)?
Re: sortiranje nizova po velicini jednog elementa niza 07.03.2008. u 00:31 · pre 227 meseci #8
imam i ja jedno pitanje...Ako imam u jednoj tabeli id, učenik ... a u drugoj id, brojocena , zbir .. kako sada da spojim te dve tabele i napravim ispis 5 ucenika sa najvecom ocenom poredjnom po opadajucem nizu. id je isti u obe tabele tj govori o kom se uciniku radi.. znaci zelim ovako...

tabela 1
-------
1. Marko
2. Ivan
3. Mirko
...itd

tabela 2
-------
1. 29 84
2. 23 50
2. 45 140
...itd



jel moze neko da mi pomogne .. kapiram ja da prvo ide konekcija na bazu vadim podatke o uceniku i delim ocenu sa brojem glasanja i dobijem prosecnu ocenu, ali ne znam kako to da uradim za vise njih i ogranicim ispis za 5...
molim ljude dobre volje za konkretnu pomoc (ne ono, ti zelis ceo kod)..verujem da nije nista strasno...

unapred se zahvaljujem!
Potpis
www.Tjuner.com
www.Canj-montenegro.com
Re: sortiranje nizova po velicini jednog elementa niza 07.03.2008. u 00:42 · pre 227 meseci #9
@zrnoo - Probaj ovako:

Code:

SELECT t1.*, t2.* FROM tabela1 AS t1 INNER JOIN tabela2 AS t2 ON t1.ID = t2.ID ORDER BY t2.zbir DESC LIMIT 0,5


Pitanje za MySQL Forum ....
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme