Newsgroup: it.comp.lang.perl
Titolo: due for annidati e table da chiudere

Salve rieccome (ammazza che pippaccia che so!!!
cmq il problema è questo ho 2 cicli for uno dentro l'altro
schematizzando cosi:
for (i=0;i>n;i++){
           creo una tabella
           for (j=0;i<a;i++){
                     inserisco le righe di una tabella usando gli
indici di j
                     qui devo fare altre cose ma  !!!!!! se le scrivo
qui mi finiscono nella tabella aperta il ciclo prima
                  ho provato con next (if  a== 0) ma nulla
            }
qui devo chiudere table
}
come faccio a non fare entrare i print (eccetto le righe della
tabella) del ciclo interno (quello di a per capirci) nella tabella
stessa?
mi sto impazzendo è meglio che vado a prendere un po d'aria sperando
che qualche buon anima mi aiuti a capire....
Saluto

 stessa?
Lo pseudo-codice che hai mostrato mi pare corretto, a parte
i rilievi di Sembro.
Sarebbe però difficile il contrario, visto che con il pensiero
funziona, ma bisogna estrarlo da lì ed esprimerlo in Perl.
È più semplice aiutarti se ci fai vedere un pezzo di codice Perl,
spiegando cosa ottieni e cosa invece vorresti ottenere.
ciao,
S.


wrote:

for ($i=0;$i<$num_val;$i++)  {
	print "\n<h3 align=center>DETTAGLIO BOX $valori[$i]</h3>\n";
	print "\t<table border=1 align=center>\n";
	print "\t<caption><h5>Visualizzazione squadre</h5></caption>\n";
	print "\t<tr><td>SERVER</td><td>SQUADRA</td><td>Linee attive /
Totale</td><td>Ultima attività</td></tr>\n";
	%hash_sq = &restituisci_hash_squadre($key[$i]);
	@keysq= keys %hash_sq;
	$num_keysq= @keysq;
	@valsq= values %hash_sq;
	%hash_srv = &restituisci_hash_server($key[$i]);
	@keysrv = keys %hash_srv;
 	@valsrv = values %hash_srv;
	for ($j=0;$j<$num_keysq;$j++){
		$sq_srv = "SELECT server.identificatore FROM server LEFT JOIN
squadre on squadre.id_server=server.id_server where
squadre.id_squadra='$keysq[$j]'";
		$ex_sq_srv=$connect->query($sq_srv);
		$nome_srv=$ex_sq_srv->fetchrow();
		$num_las=&linatt("linee", $keysq[$j]."'");
		$num_las_s=&linatt("linee_storico", $keysq[$j]."'");
		$num_las_t=$num_las+$num_las_s;
		$app=$num_las;
		if ( $app == 0){
			$duaq="SELECT MAX(data_out) FROM linee_storico WHERE id_squadra='".
$keysq[$j]."'";
			$ex_dua=$connect->query($duaq);
			$dua=$ex_dua->fetchrow;
		}
		else{
			$dua="Attiva";
		}
		print "\t\t<tr><td>$nome_srv</td><td>".$valsq[$j]."</td><td>$num_las
su $num_las_t</td><td>$dua</td></tr>\n";
                    ####devo dare qui dei dettagli delle squadre
utilizzando l'indice j, ma se lo insersco qui mi scrive dentro table
                    ####ho comunque trovato che mettendo lo stesso
ciclo for fuori da questo funziona, ma mi sembra una
ripetizione
                    ####dell stesso ciclo inutile.
#		if ($j+1 == $num_keysq){
#		print "Dettaglio squadra$valsq[$j]";
#		}
	}
print "\t</table>\n<hr align=center color=lightblue>\n";
                    ##### se qui inserisco lo stesso for di j e faccio
print "Dettaglio squadra$valsq[$j]"; le stringhe mi vengono inserite
correttamente alla fine di ogni tabella i-esima.
}
PS Se trovate qualcosa di assurdo nel codice mi potete far sapere?
Saluti Alessandro

 print "\t<tr><td>SERVER</td><td>SQUADRA</td><td>Linee attive /
[cut]
Scusa la risposta che non risolve direttamente il problema ma... usare 
HTML::Template no?
Semplifica un casino tutte queste cose, non hai bisogno piů di fare una 
singola "print", ti fai un normale array di array (righe-colonne) lato 
codice e nel template risolvi tutto con due <tmpl_loop> innestati.
Supponi di avere un array di array $righe.
Lo passi a HTML::Template e nel template metti
<table>
<tmpl_loop righe>
<tr>
    <tmpl_loop colonne>
       <td><tmpl_var valore></td>
    </tmpl_loop>
</tr>
</tmpl_loop>
</table>

 supportata, magari sě, ma mi sembrava parecchio piů "datata".
Si, č supportata, funziona correttamente con l'ultima versione disponibile 
su CPAN.