PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
kuidas kuvamisel andmeid grupeerida???
Postitaja: tarmo 2004-09-15 15:46:48
Tere!

Pealkiri ei ole võib olla kõige parem aga mure selline:
Nimelt on toodete tabel, mis kuvatakse weblehele.
Ja toote tabeli kuvamisel tekkis probleem, kuidas iga tootegruppi(liigi) juurde kuvada just ainult üks seda gruppi iseloomustav pilt.
Pildi fail on mul andmebaasis koos tootegruppi nimega.
Päring on mul selline:
SELECT tooted. * , tooteliik. *
FROM tooteliik
LEFT JOIN tooted ON tooteliik.liik_id = tooted.liik_id
WHERE tooted.liik_id IS NOT NULL order by liiginimi, tootenimi

Tooted - toodete tabel üldise infoga ja koos liik_id, mis on siis seoses toodeteliigi tabeliga, kus on ka pildifaili väli.

Näitlikult peaks asi olema nii
PILT rida1 tooted
rida2 tooted
rida3 tooted
PILT2 rida4 tooted
rida5 tooted

Praegu ta kuramus kuvab iga rea kohta ka pildi :( Muidugi mõnes mõttes ka õige, sest seda kontrolli mul ju peal ei ole.
Kuvan seda praegu läbi tavalise for tsükkli.
Mida ma peaks veel muutma, et saada nüüd iga liigi kohta 1 pilt ja vastavalt nii palju tooteid kui seal grupis on?
Loodan, et saadet aru mida ma mõtlen.

Ette tänades

Tarmo
RE: kuidas kuvamisel andmeid grupeerida???
Postitaja: ave 2004-09-15 17:02:22
Tere ,

proovi nii


PHP kood:
 
  $sql
="SELECT tooted.* , tooteliik.* FROM tooteliik LEFT JOIN tooted ON (tooteliik.liik_id = tooted.liik_id) WHERE tooted.liik_id IS NOT NULL order by liiginimi, tootenimi";
  
$query mysql_db_query ($log_db,$sql);
  
$id1=0;
  while (
$tulem mysql_fetch_array ($query)) {
    
$id2=$tulem[liik_id];
    if (
$id1 <> $id2)
      echo 
"<img src='".$tulem[pilt]."'>  $tulem[liiginimi]  $tulem[tootenimi]<br>";
    else
      echo 
"$tulem[tootenimi]<br>";
    
$id1=$id2;
    }



Jõudu!
RE: kuidas kuvamisel andmeid grupeerida???
Postitaja: Tarmo 2004-09-15 20:49:30
Tänud! Läks tööle kui tõstsin selle rea enne else'i:
$id1=$id2;

TSITEERITUD:
Tere ,

proovi nii


PHP kood:
 
  $sql
="SELECT tooted.* , tooteliik.* FROM tooteliik LEFT JOIN tooted ON (tooteliik.liik_id = tooted.liik_id) WHERE tooted.liik_id IS NOT NULL order by liiginimi, tootenimi";
  
$query mysql_db_query ($log_db,$sql);
  
$id1=0;
  while (
$tulem mysql_fetch_array ($query)) {
    
$id2=$tulem[liik_id];
    if (
$id1 <> $id2)
      echo 
"<img src='".$tulem[pilt]."'>  $tulem[liiginimi]  $tulem[tootenimi]<br>";
    else
      echo 
"$tulem[tootenimi]<br>";
    
$id1=$id2;
    }



Jõudu!
RE: kuidas kuvamisel andmeid grupeerida???
Postitaja: tarmo 2004-10-25 00:31:09
TSITEERITUD:
Tänud! Läks tööle kui tõstsin selle rea enne else'i:
$id1=$id2;


Jälle sama jama otsas :(

SELECT kysimused.kysimus, tulemus_id, kysimused.kysimus_id, vastused.vastus, tulemused.vastus_id, tegevusalad.tegevusala, tulemused.tegevusala_id, count(DISTINCT tulemused.tegevusala_id) as ala FROM tulemused
INNER JOIN kysimused ON tulemused.kysimus_id = kysimused.kysimus_id
INNER JOIN vastused ON kysimused.kysimus_id = vastused.kysimus_id
INNER JOIN tegevusalad ON tulemused.tegevusala_id = tegevusalad.tegevusala_id
INNER JOIN kysitlused ON tulemused.kysitlus_id = kysitlused.kysitlus_id
WHERE tulemused.kysitlus_id =1
GROUP BY tulemused.vastus_id, vastused.vastus,
tulemused.tegevusala_id, tulemused.ip_add, tulemused.kuupaev
ORDER BY tulemused.tegevusala_id, tulemused.tulemus_id,
tegevusalad.tegevusala, kysimused.kysimus_id


Sellise päringuga peaks ta nüüd väljastama kystiluse kaupa kõik kysimused ja vastused, mis kuuluvad selle kystiluse alla, tegevusalade kaupa.
Aga mingil põhjusel ei tee ta seda. Ta kuvab küll tulemusel lehele (kasutan koodi, mis siin ennem antud) aga ta kuvab tegevusala, küsimuse ja kõik vastused sinna alla ja niimoodi kõigiga. :(

$id1=0;
while ($tulem = mysql_fetch_array($sql)) {
$id2=$tulem[tegevusala_id];
if ($id1 <> $id2)
{
echo "$tulem[tegevusala]<br> $tulem[kysimus]<br>: $tulem[vastus]<br>";
$id1=$id2;
}
else
{
echo "$tulem[vastus]<br>";
}
}

Seosed peaksid kõik õiged olema. Tulemuste tabelis väljad:
tulemus_id,kysitlus_id, kysimus_id, vastus_id, tegevusala_id, kuupaev, ip_add.
Lisaks tabelid kysitlused (kystilus_id), kysimused(kysimus_id), vastus(vastus_id), tegevusalad(tegevusala_id).
Kõige muu lisamine/kuvamine on OK aga kuidas ma saaksin mõistlikul viisil kätte tulemuste tabelist, kysitluse tulemused.
Hea kui tuleks kujul:
--tegevusala
-- Küsimus:
--- vastused siia
--uus tegevusala
--küsimuse jne.
Võib olla on kuidagi teistmoodi parem seda teha. Kõik ettepanekud teretulnud.
Poleks osanud arvata et tulemuste kuvamine nõnda keeruline on.



Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.272001028061