Newsgroup: it.comp.www.php
Titolo: Un ciclo dentro un altro

Qualcuno perchè sa dirmi per quale motivo se metto un cilo while dentro un 
altro ciclo while non funziona la pagina?
esempio:
while($array){
        while($array2) {
        }
}
non mi apre nessuna pagina nel browser, mi resta tutto bianco.. 

Forse il problema è quello che fai all'interno dei cicli... Com'è lo
script completo?
Se gli array che usi non vengono eliminati con il ciclo, entri in un
ciclo infinito e la pagina si blocca.

 ciclo infinito e la pagina si blocca.
Ah ma poi questo bug č stato risolto?
Se non ricordo male, facendo un:
while(){
}
Ovvero un ciclo infinito, andava letteralmente in crash internet explorer.
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
NUOVISSIMO SITO!!! The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS 

entri in un ciclo infinito e la pagina si blocca.
Fip il ciclo è come ti ho fatto vedere nell'esempio, quello proprio completo 
lo dovrei riscrivere, come posso fare? come faccio ad eliminare l'array con 
il ciclo? grazie 1000

Com'č lo script completo?
L'ho rimesso su al volo era strutturato cosě:
if ($nomevar==""){
        $sql = "SELECT * FROM tabella1 ORDER BY id DESC LIMIT 0 , 10";
        $risultato = mysql_query ($sql, $conn);
        while($ris1=mysql_fetch_array($risultato)){
                $info1 = $ris1[0];
                $info2 = $ris1[1];
                $sql2 = "SELECT * FROM tabella2 WHERE nome='$info1'";
                $risultato2 = mysql_query ($sql2, $conn);
                while($ris2=mysql_fetch_array($risultato2)){
                ...qualcosa...
                }
        }
}
da cosa puň dipendere? 

Non ci siamo...
Il ciclo a cosa serve? Perchè se tu cicli, sarà per fare qualcosa,
no?
Significa: 'finchè rimane in memoria la variabile (o array) X, allora
fai questo...'
Se non ho capito male tu vuoi fare qualcosa ripetutamente, finchè
persiste l'array. Se l'array continua a persistere indefinitamente,
allora il ciclo non finisce mai.
Se l'array contiene dei dati su cui vuoi operare - ad uno ad uno -, ti
conviene usare 'foreach':
foreach ($array as $x){
   foreach ($array2 as $y){
      // fai qualcosa...
   }
}
In questo modo viene 'snocciolato' l'array, elemento per elemento, e
per ogni elemento viene eseguito il comando all'interno. Ovviamente
l'elemento corrente è la variabile $x, o$y, a seconda di quale ciclo
consideri.
Se invece vuoi usare per forza 'while', devi eliminare l'array. Questo
lo puoi fare in tanti modi, dipende da quello che vuoi realizzare. Puoi
eliminarlo in una sola volta al verificarsi di una condizione con
'unset($array)', oppure puoi eliminare un elemento alla volta, ma
dipende, se è un associativo usi 'unset($array['chiave'])', altrimenti
ci sono funzioni come array_pop, array_shift...
Insomma, qual'è il codice completo? Cosa deve fare il ciclo?

Aaaaahhhhnnn... Scusa, non avevo visto quest'ultima risposta.
Mi pare che sostituendo il while con foreach possa andare. Prima cacci
i risultati della query in $risX, e poi foreach ($risX as $a){ ... }

Come non detto, mea culpa. Dovrebbe andare benissimo il while.
Io uso while($ris=mysql_fetch_array($risultato,MYSQL_ASSOC)), che mette
tutto in un associativo, così posso riferirmi direttamente ai nomi dei
campi come chiavi dell'array.
Forse il problema sta nella query?

 Ovvero un ciclo infinito, andava letteralmente in crash internet explorer.
cosa centra Internet Explorer?
-- 
www.iuz-lab.info

Fip  ha scritto:
Io uso while($ris=mysql_fetch_array($risultato,MYSQL_ASSOC)), che mette
tutto in un associativo, cosě posso riferirmi direttamente ai nomi dei
campi come chiavi dell'array.
Forse il problema sta nella query?
Non so.. so solo che cosě non andava... la query mi sembra ben fatta.
Questo comando che tu usi:
while($ris=mysql_fetch_array($risultato,MYSQL_ASSOC));
se ho capito bene questo comando mi permette di usare direttamente i nomi 
dei campi della tabella come varibili??
se č cosě č geniale...
Grazie
Marco

campi come chiavi dell'array.
Ho trovato nella guida un'istruzione ancora meglio:
while ($riga=mysql_fetch_assoc($risultato));
fà la stessa cosa di:
while($ris=mysql_fetch_array($risultato,MYSQL_ASSOC))
ma è più compatto.. 

 cosa centra Internet Explorer?
Che se uno visualizzava la pagina con questo client questo si bloccava...
