Php group by és order by hiba
Sziasztok!8 találat lenne a táblában, de csak kettőt ad vissza, egy olyat ahol az év 2015, és egy olyat, ahol 2016. Pedig 2015-ösből van vagy 7 sor.
Mit rontok el?
■ $get_osztalyzatok = mysqli_query($kapcs, "SELECT * FROM jegy WHERE jegy_diak = '$id' GROUP BY jegy_ev ORDER BY jegy_honap ASC") or die(mysqli_error($kapcs));
Mit rontok el?
Ennek semmi köze PHP-hoz, ez
Minekutána azt mondtad, hogy csoportosítsa jegy_ev, természetesen az adott mező egyedi értékeit adja vissza.
Pontosabban mi is a célod?
A diákok minden hónapra
És kiíratáskor csoportosítva szeretném kirakni, év szerint csökkenőben, és azon belül a hónap szerint növekvő sorrendben.
Pl:
Dátum Osztályzat
2016-01-30 - 4
2015-10-30 - 3
2015-11-30 - 3
2015-12-30 - 4
Ezek szerint te egyszerűen
Nagyon jó, köszöntem szépen a
szerintem amúgy a group by
így most épp semmit nem
A diákok minden hónapra
És kiíratáskor csoportosítva szeretném kirakni, év szerint csökkenőben, és azon belül a hónap szerint növekvő sorrendben.
Elvileg minden hónapra csak egy osztályzat van, így, ahogy szabo.b.gabor írja, felesleges a
GROUP BY
. Valamint a "kiíratáskor év szerint csökkenő, hónap szerint növekvő sorrendű csoportosításból" is az jön le, hogy ez csak rendezés. Ehhez még hozzájön, hogy ha nincs semmi aggregáló függvény a lekérdezésben (mint a már említett átlag), akkor ha több jegy lenne egy hónapban (de elvileg csak egy van), akkor értelmetlen a jegy ilyen módú lekérdezése (hacsak nem az a kérdés, hogy melyik hónapokra kapott valaki bármilyen jegyet).Ah, hogy itt kapott hangsúlyt
sql injection
illetve erősen javaslom hogy térj át a PDO-ra. (és ott is védekezz az sql injection ellen)
A fenti kódot törhető.Én ez
mysqli_real_escape_string()
-et a $id változóra?tippeltem
- keverve használ magyar, és angol szavakat/kifejezéseket.
- nincs beformázva a kódja.
- kérdése is kezdőre utal.
- deprecated függvényt használ.
ezekből.
Illetve elnézést elszoktam a mysqli_ hülyeségtől, elég régóta keretrendszerhez, pdo-hoz (bind-oláshoz) szoktam ahol nincs kézzel aposztrofálás a queryben. (vagyis ott ez a jegy_diak = '$id' nem annyira működik bindolva)
Jelzem hogy nem baj hogy kezdő, és örülünk (örülök) hogy még járnak kezdők (is?) a weblabor-ra, és hajrá!
Deprecated?
Ettől függetlenül még igaz, hogy prepared statementekkel (akár mysqli, akár pdo) nehezebb lábonlőni magunkat egy elfelejtett escape-eléssel.
hm. megkövetem magam.
nem tudom mit néztem, vagy tényleg a mysql_ vagy valamelyik mysqli_ amit tényleg deprecated/removed. (most megnéztem nem sok de tényleg van pár függvény ami az)
Szerkesztve: megnézem, még csak szavazás se volt arról hogy kivezessék a mysqli_ globálisan. - és valószínűleg a mindenre legyen sima függvényes alternatíva php-ban mániának hála egy jó darabig nem is lesz kivezetve. (sajnos)
Sőt a mysql_ kivezetése se a "mindenki megszavazta" kategória volt. (bár azért egyértelmű többséggel szavazták meg vagy inkább ki:))
"Honnan tudod, hogy két
Nálam alaptézis, hogy ha tudnom/néznem/keresnem kell, akkor rossz a kód.
pp