Forum » Programiranje » [PHP&MySQL] izpis prvih 3, drugih 3, tretjih 3... vnosov iz tabele. Kako?
[PHP&MySQL] izpis prvih 3, drugih 3, tretjih 3... vnosov iz tabele. Kako?
Cokolesnik ::
Če na kratko predstavim strukturo moje tabele z izdelki:
ID / ime / skupina
1 / svečka ANANAS / svečke
2 / svečka BOROVNICA / svečke
3 / svečka JAGODA / svečke
4 / olje SMREKA / olja
46 / svečka VANILIJA / svečke
Problem se pojavi zato, ker imam v eni tabeli izdelke različnih skupin, torej ne morem izpisovati izdelkov po kriteriju IZPIŠI VSE Z ID med 1 in 3 na prvi strani, ID med 4 in 6 na drugi strani itd. saj pri izpisovanju "svečk" lahko, kot kaže zgornji primer, nastopajo ID-ji, ki niso v zaporednem razmerju (torej 1, 2, 3, 46).
Želel bi ohraniti vse izdelke v skupni tabeli.
Kako bi rešil ta problem?
ID / ime / skupina
1 / svečka ANANAS / svečke
2 / svečka BOROVNICA / svečke
3 / svečka JAGODA / svečke
4 / olje SMREKA / olja
46 / svečka VANILIJA / svečke
Problem se pojavi zato, ker imam v eni tabeli izdelke različnih skupin, torej ne morem izpisovati izdelkov po kriteriju IZPIŠI VSE Z ID med 1 in 3 na prvi strani, ID med 4 in 6 na drugi strani itd. saj pri izpisovanju "svečk" lahko, kot kaže zgornji primer, nastopajo ID-ji, ki niso v zaporednem razmerju (torej 1, 2, 3, 46).
Želel bi ohraniti vse izdelke v skupni tabeli.
Kako bi rešil ta problem?
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
- spremenilo: snow ()
DavidJ ::
select * from table where skupina = 'svečka'
Ne vem, kako MySQL ravna s sumniki, zato znas imet tezave.
Poskusi se z
select * from table where skupina = 'sve*ka'
ali
select * from table where skupina = 'sve%ka'
Mal sem ze iz vaje, tako da za zadnja primeroma poglej v dokumentacijo. Ne vem, kako tocno se dela z wildcardi.
Bilo bi boljse, ce bi naredil sifrant skupin in potem ti dve tabeli zdruzil. Ne samo, da bi pri velikih kolicinah podatkov imel lazje urejanje, ampak tudi porabil bi manj prostora.
edit: Pa saj to ni res, se en typo.
Ne vem, kako MySQL ravna s sumniki, zato znas imet tezave.
Poskusi se z
select * from table where skupina = 'sve*ka'
ali
select * from table where skupina = 'sve%ka'
Mal sem ze iz vaje, tako da za zadnja primeroma poglej v dokumentacijo. Ne vem, kako tocno se dela z wildcardi.
Bilo bi boljse, ce bi naredil sifrant skupin in potem ti dve tabeli zdruzil. Ne samo, da bi pri velikih kolicinah podatkov imel lazje urejanje, ampak tudi porabil bi manj prostora.
edit: Pa saj to ni res, se en typo.
"Do, or do not. There is no 'try'. "
- Yoda ('The Empire Strikes Back')
- Yoda ('The Empire Strikes Back')
Zgodovina sprememb…
- spremenil: DavidJ ()
Reso ::
Malo si poglej string funkcije in najdi nekaj kar ti odreze string naprimer do prvega presledka.
Najbolj primitivno kar vem iz glave je
SELECT * FROM table ORDER BY SUBSTRING(stolpec2,0,LOCATE(' ',stolpec2))
kjer je stolpec2 ime stolpca z vrednostmi svecka,olje,...
Najbolj primitivno kar vem iz glave je
SELECT * FROM table ORDER BY SUBSTRING(stolpec2,0,LOCATE(' ',stolpec2))
kjer je stolpec2 ime stolpca z vrednostmi svecka,olje,...
Cokolesnik ::
Niste razumeli mojega problema. Zelim izpisati prve 3 izdelke (na prvi strani), potem na drugi strani naslednje 3 in tako naprej. Problem se pojavi zato, ker izdelki z doloceneno skupino (npr. svecke) nimajo zaporednih IDjev, torej razvrscanje po IDju (prikazi na 1. strani ID od 1 do 3...) odpade.
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
volkec ::
uporabi DavidJ-ov sql stavek in dodaj na koncu LIMIT 1,3, pri čemer se ti bosta 1,3 spreminjala glede na stran na kateri si.
Lahko pa tudi vse prebereš iz baze, shraniš v tabelo in nato na nivoju php-ja izpisuješ stvari glede na to na kateri strani si.
P.S. V sql stavku uporabi še ORDER BY id
Lahko pa tudi vse prebereš iz baze, shraniš v tabelo in nato na nivoju php-ja izpisuješ stvari glede na to na kateri strani si.
P.S. V sql stavku uporabi še ORDER BY id
Zgodovina sprememb…
- spremenil: volkec ()
Cokolesnik ::
Tako bos lahko brez problema izpisal na prvi strani izdelke s skupino "svečke", ce bos imel sreco, da bodo imeli ID-je 1, 2 in 3, kako bos pa naredil izpis ce imajo prvi trije izdelki v skupini "svečke" ID-je 1, 2 in 40? Ce bi definiral po tvoje (LIMIT 1,3), bi mi izpisalo le dva izdelka z ID 1 in 2, tretji z ID 40 pa bi seveda izostal.
Torej?
Torej?
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
no_use4 ::
limit 0, 3
ti izbere prve tri izdelke iz baze, ne gre po id-jih, tako da bi izbral tudi tistega z id-jem 40
ti izbere prve tri izdelke iz baze, ne gre po id-jih, tako da bi izbral tudi tistega z id-jem 40
Cokolesnik ::
aha, potem pa pardon. bom poskusil.
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
Čokolešnik ne vsebuje nobenih aditivov, konzervansov ali umetnih barvil.
DavidJ ::
select * from table where skupina = 'svečka' order by id limit 0, 3
za prvo stran
select * from table where skupina = 'svečka' order by id limit 3, 3
za drugo stran
select * from table where skupina = 'svečka' order by id limit 6, 3
za tretjo stran ...
select * from table where skupina = 'svečka' order by id limit (i-1)*3, 3
za i-to stran.
za prvo stran
select * from table where skupina = 'svečka' order by id limit 3, 3
za drugo stran
select * from table where skupina = 'svečka' order by id limit 6, 3
za tretjo stran ...
select * from table where skupina = 'svečka' order by id limit (i-1)*3, 3
za i-to stran.
"Do, or do not. There is no 'try'. "
- Yoda ('The Empire Strikes Back')
- Yoda ('The Empire Strikes Back')
snow ::
Pa lepo oblikovan topic, kot piše v: PREBERI ME: označevanje topicov v oddelku programiranje!
In kot je že namignil zerox, je vprašanje bolj v zvezi z mysql kot php, ne glede da izvajaš mysql poizvedbo preko php.
In kot je že namignil zerox, je vprašanje bolj v zvezi z mysql kot php, ne glede da izvajaš mysql poizvedbo preko php.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
Zgodovina sprememb…
- spremenilo: snow ()
mHook ::
zakaj pa ne sortiraš kar po skupini?
npr.
SELECT *
FROM table
ORDER BY skupina, id
LIMIT 0, 3
npr.
SELECT *
FROM table
ORDER BY skupina, id
LIMIT 0, 3
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | MYSQL vprašanjeOddelek: Programiranje | 1817 (1432) | MrBrdo |
» | [SQL] Kazalci pri grupiranjuOddelek: Programiranje | 853 (730) | Tody |
» | [Mysql]počasen rand in rešitveOddelek: Izdelava spletišč | 1337 (1094) | Tody |
» | 2002-03-29 -> 29.3.2002Oddelek: Izdelava spletišč | 1630 (1456) | cahahopie |
» | Še eno mysql vprašanjeOddelek: Programiranje | 947 (872) | lordgreg |