Newsgroup: it.comp.www.php
Titolo: carrello php - query mysql

Ciao a tutti. Ho un piccolo dilemma.
Sto facendo un sito in cui sono elencati una marea di oggetti
(attraverso un database mysql). L'utente può inserire alcuni di questi
oggetti in un proprio carrello (attraverso cookies) e in ogni momento
può andare alla pagina del carrello e vederseli elencati.
Ogni oggetto ha un suo id.
Al momento nella pagina dell'elenco carrello ho strutturato di primo
acchito una situazione del genere:
//$array lo si ricava attraverso il cookie e contiene tutti gli id
degli oggetti richiesti
while (count($array) > 0){
				$id = array_shift($array);
				$query = "SELECT * FROM tabelle WHERE 
tabella.id
 = '$id'";
                                if ($lettura = mysql_query($query,
$db)){
					$riga = mysql_fetch_array($lettura);
                                                     ...... codice
vario ......
                                }
}
Per funzionare funziona, shifta dall'array come in una pila l'ultimo
elemento contentente l'id dell'oggetto e trova la sua riga nel
database.
Però a naso mi sembra un po' pesante per mysql, dato che se uno ha nel
carrello cento oggetti, all'apertura di una singola pagina ci sono
altrettante query!
Per cui la mia domanda è: sarebbe più ottimale costruire la cosa nella
seguente maniera?
$query = "SELECT * FROM tabelle WHERE";
while ($c = count($array) > 0){
                           $id = array_shift($array);
                           if ($c > 1){$query = $query." 
tabella.id
 =
'$id' OR";}
                           else {$query = $query." 
tabella.id
 =
'$id'";}
//questo if servirebbe a non mettere un OR a fine query
}
if ($lettura = mysql_query($query, $db)){
                                $riga =
mysql_fetch_array($lettura);
                                while($riga[id] != ""){
                                                     ...... codice
vario ......
                                $riga = mysql_fetch_array($lettura);
                                }
}
In questo modo avrei una sola query per visualizzazione pagina (un bel
risparmio!!!), ma potenzialmente lunghissima. Questo sarebbe un bel
peso nel caso ci fosse un limite di caratteri massimo ammissibile per
una query in sql.
Voi cosa ne pensate? Aspetto pareri!
Buon php a tutti.

 ha scritto nel messaggio 
news:1194012334....@k79g2000hse.googlegroups.com...
Ciao a tutti. Ho un piccolo dilemma.
Sto facendo un sito in cui sono elencati una marea di oggetti
(attraverso un database mysql). L'utente puň inserire alcuni di questi
oggetti in un proprio carrello (attraverso cookies) e in ogni momento
puň andare alla pagina del carrello e vederseli elencati.
Ogni oggetto ha un suo id.
Al momento nella pagina dell'elenco carrello ho strutturato di primo
acchito una situazione del genere:
//$array lo si ricava attraverso il cookie e contiene tutti gli id
degli oggetti richiesti
while (count($array) > 0){
$id = array_shift($array);
$query = "SELECT * FROM tabelle WHERE 
tabella.id
 = '$id'";
                                if ($lettura = mysql_query($query,
$db)){
$riga = mysql_fetch_array($lettura);
                                                     ...... codice
vario ......
                                }
}
Per funzionare funziona, shifta dall'array come in una pila l'ultimo
elemento contentente l'id dell'oggetto e trova la sua riga nel
database.
Perň a naso mi sembra un po' pesante per mysql, dato che se uno ha nel
carrello cento oggetti, all'apertura di una singola pagina ci sono
altrettante query!
Per cui la mia domanda č: sarebbe piů ottimale costruire la cosa nella


 Buon php a tutti.
Spettacolare. Le subquery mi mancavano! Ecco a cosa servono mesi e
mesi a disegnare schemi relazionali a basi di dati!
Mi sei stata di grande aiuto. Grazie e buona continuazione.