PDA

View Full Version : [PHP basilare] Generazione tabella


Psylo
10-11-2006, 16:34
Ciao, sono alle prime armi col php e in generale con la programmazione.
sto studiando il ciclo do...while e in un esempio trovato e trascritto da un libro ho compilato il seguente listato che serve ad incolonnare i divisori di un dato numero passato via URL in una tabella di 5 colonne:
<html>
<head>
</head>

<body>
<?
$numero=$_GET['numero'];
$divisore=1;
$colonna=1;
echo "<table>";
while ($numero>=$divisore) {
if (!($numero%$divisore)) {
if ($colonna%5==1) print ("<tr>");
echo "<td>$divisore</td>";
$colonna=$colonna+1;
if ($colonna%5==1) print ("</tr>");
}
$divisore=$divisore+1;
}
if ($colonna%5!=1) print ("</tr>");
echo "</table>";
?>
</body>
</html>


ovviamente funziona bene e ho compreso come funziona tutto il listato tranne il significato delle righe che stampano i tag <tr> è </tr>.. qualcuno mi spiega in italiano cosa significano quei 2 IF ? secondo il mio cervello ormai in fumo :D se alla variabile $colonna assegnamo valore 1 (nella prima esecuzione del ciclo) il test dell'IF NON è ==1 (quindi:false) perchè il resto della divisione tra 1 e 5 non è 1! Perchè allora viene stampato il tag <tr>?? Evidentemente quell'espressione significa qualcos'altro...ma cosaaaa?? :muro:
Spero di essermi spiegato, so che la risposta è elementare per voi, ma dopo 2 ore di studio mi sfugge anche una cosa così elementare...
grazie a chi mi chiarirà la questione!

Psylo
11-11-2006, 10:56
Up, vi prego non ancora afferro la logica della cosa... :muro:

quell'1 all'interno della condizione if ($colonna%2==1) è da intendere come valore numerico? o come true ?
più guardo sta cosa e più non capisco come fa a funzionare...

EDIT:
ho capitooo!
non sapevo da perfetto novellino che il modulo di un numero diviso per un numero maggiore di esso da come risultato il numero stesso!! :stordita: quindi 1%5==1
2%5==2, ecc fino a 6%5==1 che fa posizionare il 6^ divisore su una nuova riga della tabella!!

...mi sento un po' co****ne comunque... :stordita: :D

anonimizzato
11-11-2006, 11:04
è da intendere come valore numerico.

% (operatore di modulo) restituisce il resto di una divisione intera.

Quella condizione IF sarà vera (TRUE) quando:

6%5 ... (1 volta 5) resto = 1

11%5 ... (2 volte 5) resto = 1

...

Psylo
11-11-2006, 11:20
si sgurbat, quello mi era chiaro...
il mio dubbio era per i numeri inferiori a 5 (leggi il mio edit sopra...)!!
ah l'ignoranza!! :stordita:

grazie comunque, penso che avrò bisogno dell'aiuto del forum mooolto spesso! :cool: