» »

PHP- razvrščanje arraya

PHP- razvrščanje arraya

stankoslo ::

Pozdravljeni,

Za 4. predmet na poklicni maturi sem ustvaril stran za naše Športno društvo. Zakaj vam to govorim, zato da boste približno lahko ocenili moje znanje (ki je mimogrede, prekašalo tudi mentorja...).
SD Vinica
Torej, imam en problem. Če si pogledate lestvico, vidite, da ekipe niso razvrščene po točkah ter po sekundarnem kriteriju po razliki zadetkov. Ne vem, kako bi array izpisal, da bi mi ga razvrstil.
Torej, sam preko obrazca poberem rezultate, nato pa se v datoteki, ki izpisuje lestvico ti rezultati preverijo. Torej če je ekipa A dala več zadetkov kot B, se ji pripišejo 3 točke itd. Torej, hočem povedati da v bazi nimam shranjenih točk, da bi lahko ekipo razvrstil... Bi se dalo kako to naredit v samem izpisu v PHP, morda arrayu?

Za lažje razumevanje prilagam screenshote kode:

Yacked2 ::

Stran ni dosegljiva!
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

c3p0 ::

Ta domena sploh ne obstaja, je pa koda zelo špagetasta, mentor res malo ve...

Yacked2 ::

Za delo z MySQLom raje uporabi PDO (http://php.net/manual/en/intro.pdo.php)

Kar se pa tiče razvrščanja bo najhitreje če razvrstiš kar v podatkovni bazi in s phpjem samo prikazeš.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

stankoslo ::

Domena popravljena, se opravičujem :)

Prosim če se ne spotikate preveč ob kodo, verjamem da je "šlampasto", ampak sem v to vložil veliko ur in truda... Če bi kdo pomagal, bom vesel :)

Yacked2 ::

Še vedno ne dela ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

ragezor ::

Kje pa mas tocke? Predlagam, da si tocke vneses v bazo, tako ti ne bo potrebno racunati tock ob vsakem requestu. Plus tega se ne spodobi v delu kode, ki je zadolzen za prikazovanje podatkov, tudi obdelovati podatke, saj koda hitro postane nepregledna.

Ce bos imel v bazi vse potrebno, bos lahko sortiral s sqlom, ce pa imas podatke v arrayu, pa ga sortiraj z array_multisort.

Pa, ce ves vec kot mentor, se ne pomeni, da dosti ves. Probaj najti drugega mentorja oziroma malo vec googlaj. Array multisort najdes v petih sekundah googlanja ce vtipkas how to sort associative array by multiple keys in php.

stankoslo ::

Yacked2 je izjavil:

Še vedno ne dela ?

ja kako ne? :) Klik

ragezor je izjavil:

Kje pa mas tocke? Predlagam, da si tocke vneses v bazo, tako ti ne bo potrebno racunati tock ob vsakem requestu. Plus tega se ne spodobi v delu kode, ki je zadolzen za prikazovanje podatkov, tudi obdelovati podatke, saj koda hitro postane nepregledna.

Ce bos imel v bazi vse potrebno, bos lahko sortiral s sqlom, ce pa imas podatke v arrayu, pa ga sortiraj z array_multisort.

Pa, ce ves vec kot mentor, se ne pomeni, da dosti ves. Probaj najti drugega mentorja oziroma malo vec googlaj. Array multisort najdes v petih sekundah googlanja ce vtipkas how to sort associative array by multiple keys in php.


Torej v eno tabelo shranjujem še točke in gole ter nato sortiram z multisortom?

Nikakor nisem mislil da dosti vem, verjemi. To je bila bolj graja mentorja. Sicer pa, matura je že mimo, ni nobenga mentorja več ;)

Zgodovina sprememb…

stankoslo ::

aha še to, pač ni varjante da bi v sami PHP kodi izvedel kakšen sort po kriteriju?

black ice ::

Par nasvetov, ki niso povezani s temo: prvo nalaganje traja dokaj dolgo, odstrani napis "spletna stran v izdelavi" ter števec obiskovalcev. To so stvari iz 90ih. Namesto tega raje vključi Google Analytics. Popravi še celoten desen stolpec, ker izgleda zelo grdo.

Yacked2 ::

Aha, deluje, malo boš mogu css še popravt, ker ti desni meniji malo prenizko pridejo.

Sortiranje v phpju dela multisort
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

jos14 ::

Še dobronameren nasvet glede varnosti, ki ti bo koristil tudi v prihodnje: Prepreči mysql injection, ker ti lahko vsak z minuto časa spremeni rezultate in ureja administracijo.

Če pridobivaš uporabniško ime in geslo to za prvo silo lahko storiš na spodnji način z uporabo mysql_real_espace_string:
$varnoUporabniskoIme= mysql_real_escape_string($nezascitenoUporabniskoIme);


Če boš imel težave sporoči.

Yacked2 ::

jos14 je izjavil:

Še dobronameren nasvet glede varnosti, ki ti bo koristil tudi v prihodnje: Prepreči mysql injection, ker ti lahko vsak z minuto časa spremeni rezultate in ureja administracijo.

Če pridobivaš uporabniško ime in geslo to za prvo silo lahko storiš na spodnji način z uporabo mysql_real_espace_string:
$varnoUporabniskoIme= mysql_real_escape_string($nezascitenoUporabniskoIme);


Če boš imel težave sporoči.


kaj pa če bi bil uporabniško ime kar email in potem preveriš ali je res mail ali ne. Geslo pa itak kriptiraš, tako da je to to.
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

jos14 ::

To ni dovolj, saj si lahko zlonamernež izmisli poljuben mail, npr. veseljak@gmail.com, za geslo pa vpiše sql injection z or stavkom, ki se vedno izvede, tudi če uporabniško ime/mail ne bi bil/o pravilen/no. Prijava bi delovala. Mysql_real_escape je minimum za moje pojme.

Yacked2 ::

Geslo se kodira preden sploh prido do SQLa tako da s tem ni problemov ?
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

jos14 ::

Na kakšen način kodira? To v bistvu nima veze, v kolikor ne preprečiš, da posebni znaki za sql povpraševanja (npr. znak ' ) niso dovoljeni, oz. se jih prezre. Razen če te razumem napačno, potem se ti opravičujem. Link do obrazložitve

Yacked2 ::

$psw = hash('sha512',$psw);
Saj valda ne pošleš plain texta v SQL
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

jos14 ::

Pardon, nisem razumel točno kaj si mislil. Ampak kljub temu, če nimaš še uporabniškega imena (vsaj običajno ni tako) kodiranega v bazi bi sql injection lahko deloval.

Zgodovina sprememb…

  • spremenilo: jos14 ()

Yacked2 ::

Hmm kako ?

Jaz imam narejeno takole
if (filter_var($mail, FILTER_VALIDATE_EMAIL)) 
	{
		$psw = hash('sha512',$psw);
		//echo $psw;
naprej delo z SQLom
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

Zgodovina sprememb…

  • spremenil: Yacked2 ()

jos14 ::

kaj če je vrednost spremenljivke $mail = veseljak@gmail.com, to bi ga spustilo v if zanko, kajne? To vrednost lahko vpiše vsak.

Yacked2 ::

Ja res je ja, saj v veseljak@gmail.com ni nobenega čudnega znaka :)
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

jos14 ::

Se posujem s pepelom, ne vem kaj mi je bilo :) Vseeno, kolegi na stackoverflowu ne priporočajo brez uporabe my_real_espace_stringa. Bo pa oboje koristilo našemu uporabniku "stankoslo".

Spura ::

Kaj pa ce bi namesto mysql escape whatever uporabljal prepared statemente tko kot vsi normalni ljudje. A smo leta 2000?
In odgovor na prvo vprasanje, PHP ima kopico array sort funkcij. Verjetno rabis http://php.net/manual/en/function.usort...

Zgodovina sprememb…

  • spremenil: Spura ()

jos14 ::

To je jasno, samo glede na to, da je stankoslo kot kaže še začetnik, bi bilo v redu, če se tega loti postopoma.

stankoslo ::

Hvala vam vsem fantje, bom poizkusil z array sort :)

Glede prijave pa tut upam da uspem naštudirat eno bolj varno različico ki ste mi jo predlagal. Sicer mislim da stran glih ne bo tarča raznih nepridipravov, pa vendar. Gre se tudi za to da se kaj naučim.
Bom poročal kako mi je šlo, če bom mel kakšne težave se pa še javim :)

roko granata ::

Čestitke za projekt. Sploh, ker si postavil ogrodje na suho; verjamem, da ti ni vzelo malo časa. Če se misliš s tem ukvarjati tudi v prihodnje, ti toplo svetujem uporabo katerega izmed popularnih (ker za njih obstaja največ dokumentacije in podpore skupnosti, kar sicer naredi nek čuden začaran krog v katerem se obdržijo tudi manj kvalitetne zadeve) PHP frameworkov.

Katero šolo pa si dokončal in kam si se vpisal, če?

stankoslo je izjavil:

Hvala vam vsem fantje, bom poizkusil z array sort :)

Glede prijave pa tut upam da uspem naštudirat eno bolj varno različico ki ste mi jo predlagal. Sicer mislim da stran glih ne bo tarča raznih nepridipravov, pa vendar. Gre se tudi za to da se kaj naučim.
Bom poročal kako mi je šlo, če bom mel kakšne težave se pa še javim :)


Varnost pa je vedno na prvem mestu! Že s tem, ko si tu objavil povezavo do projekta, obstaja velika verjetnost, da bo kdo preizkusil varnost le tega.

stankoslo ::

roko granata je izjavil:

Čestitke za projekt. Sploh, ker si postavil ogrodje na suho; verjamem, da ti ni vzelo malo časa. Če se misliš s tem ukvarjati tudi v prihodnje, ti toplo svetujem uporabo katerega izmed popularnih (ker za njih obstaja največ dokumentacije in podpore skupnosti, kar sicer naredi nek čuden začaran krog v katerem se obdržijo tudi manj kvalitetne zadeve) PHP frameworkov.

Katero šolo pa si dokončal in kam si se vpisal, če?

stankoslo je izjavil:

Hvala vam vsem fantje, bom poizkusil z array sort :)

Glede prijave pa tut upam da uspem naštudirat eno bolj varno različico ki ste mi jo predlagal. Sicer mislim da stran glih ne bo tarča raznih nepridipravov, pa vendar. Gre se tudi za to da se kaj naučim.
Bom poročal kako mi je šlo, če bom mel kakšne težave se pa še javim :)


Varnost pa je vedno na prvem mestu! Že s tem, ko si tu objavil povezavo do projekta, obstaja velika verjetnost, da bo kdo preizkusil varnost le tega.


Hvala za čestitke. Sem se kar "namatral". Seveda bi bilo bolj enostavno in gotovo z bolj "pravilno" napisano kodo izvesti ta projekt z kakšnim templatom. Vendar sem se, glede na to da je to služilo kot izdelek na maturi odločil da začnem iz ničle.

Dokončal sem program tehnik računalništva v NM, zdej sem pa vpisan na fakulteto za elektrotehniko. Tam smo v prvem semestru jemali HTML in JavaScript, tako da kaj novega se ravno nisem naučil.. :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Branje slik jpg iz MySQL z PHP

Oddelek: Izdelava spletišč
152421 (2039) a-ptuj1
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8512149 (10616) kivi113
»

[php] preverjanje online uporabnikov

Oddelek: Programiranje
262078 (1734) cobrica
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262695 (2214) Binji
»

Raziskava o ranljivosti spletnih strani z SQL bazami podatkov

Oddelek: Novice / Varnost
204942 (4278) sverde21

Več podobnih tem