» »

[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? :\
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Č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.
"Do, or do not. There is no 'try'. "
- 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,...

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.

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 :))

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?
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Č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

Cokolesnik ::

aha, potem pa pardon. :D bom poskusil.
Uporabniki naj pred pisanjem sporočil uporabljajo iskalnik www.google.com.
Č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.
"Do, or do not. There is no 'try'. "
- Yoda ('The Empire Strikes Back')

zerox ::

A PHP vprašanje pa še sledi ? :D

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.
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


Vredno ogleda ...

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

MYSQL vprašanje

Oddelek: Programiranje
131816 (1431) MrBrdo
»

[SQL] Kazalci pri grupiranju

Oddelek: Programiranje
8852 (729) Tody
»

[Mysql]počasen rand in rešitve

Oddelek: Izdelava spletišč
131337 (1094) Tody
»

2002-03-29 -> 29.3.2002

Oddelek: Izdelava spletišč
161630 (1456) cahahopie
»

Še eno mysql vprašanje

Oddelek: Programiranje
5947 (872) lordgreg

Več podobnih tem