Ciao a tutti
Sto gestendo un albero con categorie e sottocategorie e visualizzo il contenuto a destra dell'albero.
Il mio scopo e' inserire una paginazione ai risultati delle query.
Qui mi si apre un grande cruccio.
Questa e' la mia funzione per visualizzare in modo ricorsivo tutti i prodotti figli.
Da notare e' che seleziono la cartella la funzione visualizzera' tutti i figli delle sotto cartelle.
Codice PHP:
public function visualizzaSelez($ownerEl)
{
$p = new Paging;
// numero massimo di risultati per pagina
$max = 10;
$inizio = $p->paginaIniziale($max);
$count = 0;
if ($ownerEl == null) {
$ownerEl = 0;
}
else {
$ownerEl = (int) $ownerEl;
}
$sql = sprintf("SELECT Id, name,codice, slave,img,descrizione,prezzo FROM " . TREE_TABLE_PREFIX . "_elements WHERE ownerEl = ".$ownerEl. " AND attivo=1 ORDER BY RAND() ",$ownerEl);
$str = FAILED;
$result = $this->db->query($sql);
if ($result !== false)
{
$str = NULL;
while ($row = $this->db->fetchObject($result))
{
$id_ret = $row->Id;
$supp = NULL;
if ($row->slave == 1){
$str .= " <div class='article'>"
."<a href='".$_SERVER['PHP_SELF']."?id_child=".$row->Id."' style='float:left;padding-right:15px;'>"
." [img]../img/". $row->img."[/img]</a>"
." <div style='width:50px;float:left;' >[img]../images/info.png[/img]Dettagli</div>"
." [img]images/disponibile.png[/img]"
."
[b] ". $row->codice."[/b]</p>"
."
[b] [url='".$_SERVER[']Id."' >". $row->name."[/url][/b]</p>"
."
".$row->descrizione. " <div class='prezzo'>€ ". number_format($row->prezzo,2,",",".")."<span> (iva esclusa)</span></div></p>"
."</div>";
}else{
echo $this->visualizzaSelez($id_ret);
}
}
}
return $str;
}
il db e' semplice
Id name ownerEl parent(id del padre) slave(0 = cartella e 1 = ramo figlio)
(ho tralasciato i campi inutili come img...etc...)
Il mio problema e' che quando seleziono una cartella che contiene altre sottocartelle , vengono chiamate dalla funzione piu' query e non so come applicare il LIMIT alle query in modo da avere un limite su tutti i risultati.
esempio :
Animali -->grossi
| |->orso
| |->tirannosauro
|--->piccoli
|->topo
|->gatto
se seleziono "grossi" non si sono problemi , la query viene chiamata 1 sola volta e restituisce 2 risultati
menre pero' se seleziono "animali" ho 3 query.... La prima restituisce 2 risultati (grossi, piccoli) e poi ricorsivamente la seconda restituisce 2 (orso e tirannosauro) e l'altra 2 (topo e gatto).
Come faccio a limitare i risultati quando seleziono "animali" ...vorrei uscissero solo 2 risultati a random .... e non come succede ora : orso - tirannosauro - topo - gatto.
Spero di esser stato chiaro.... anche se ho dei dubbi...
grazie a chi mi dedichera' un po di tempo..
ciao