Ciao, ho due domande su PHP e MySql.
Grazie a chi sapra' rispondere anche soltanto ad una! ^^
Intanto un listato di esempio per capirci: è l'output di una query a mysql. Vengono stampate a video l'intestazione di una tabella e una serie di righe con i dati trovati nel DB:
Codice PHP:
(...) // Prima ci sono connessione al DB, query, ecc... Qui di seguito, l'output:
// PRIMA RIGA TABELLA
echo "<div id ='tsmall'><table><tr>
<td width='100px' align='center'>TITOLO1</td>
<td width='100px' align='center'>TITOLO2</td>
<td width='100px' align='center'>TITOLO3</td>
<td width='100px' align='center'>TITOLO4</td>
<td width='70px' align='center'>BLABLAnum1</td>
<td width='70px' align='center'>BLABLAnum2</td>
<td width='70px' align='center'>BLABLAnum3</td>
<td width='70px' align='center'>BLABLAnum4</td>
<td width='70px' align='center'>BLABLAnum5</td>
<td width='70px' align='center'>PERCENTUALE NUM1</td>
<td width='70px' align='center'>LINK DETTAGLI</td>
</tr></table>";
// Azzeramento variabile per ciclo while.
$i=0;
$nn=mysql_numrows($result);
// INIZIA IL CICLO WHILE
while ($i < $nn) {
$mysql_id=mysql_result($result,$i,"id");
$mysql_result1=trim(mysql_result($result,$i,"result1"));
$mysql_result2=trim(mysql_result($result,$i,"result2"));
$mysql_result3=trim(mysql_result($result,$i,"result3");
$mysql_result4=trim(mysql_result($result,$i,"result4"));
$mysql_result5=trim(mysql_result($result,$i,"result5"));
//DATI NUMERICI
$mysql_num1=mysql_result($result,$i,"num1");
$mysql_num2=mysql_result($result,$i,"num2");
$mysql_num3=mysql_result($result,$i,"num3");
$mysql_num4=mysql_result($result,$i,"num4");
$mysql_num5=mysql_result($result,$i,"num5");
// CALCOLO % DI NUM1 RISPETTO A NUM2
if ($mysql_num1 == "0") {$mysql_provv_num1 = "1";} else {$mysql_provv_num1 = $mysql_num1;}
$average_num1 = (round($mysql_num2/$mysql_provv_num1, 2)*100);
//ecc.
echo "<div id ='tsmall'><table><tr>
<td width='100px' align='center'>$mysql_result1</td>
<td width='100px' align='center'>$mysql_result2</td>
<td width='100px' align='center'>$mysql_result3</td>
<td width='100px' align='center'>$mysql_result4</td>
<td width='70px' align='center'>$mysql_num1</td>
<td width='70px' align='center'>$mysql_num2</td>
<td width='70px' align='center'>$mysql_num3</td>
<td width='70px' align='center'>$mysql_num4</td>
<td width='70px' align='center'>$mysql_num5</td>
<td width='70px' align='center'>$average_num1</td>
<td width='70px' align='center'><form name='detail' action='detail.php' method='post'>
<input type='hidden' name='detail_number' id='detail_number' value='$i'>
<input type='image' name='submit' src='vai.jpg'></a></form></td>
</tr></table>";
$i++;
}}
(...)
Domanda 1: Nella tabella dei risultati c'e' una colonna con un calcolo di percentuale su due dei dati numerici (PERCENTUALE NUM1). Funziona, ma questo valore non è salvato nel database con un campo a se': e' possibile interrogare un database chiedendogli di restituire solo le entry che coincidono con un risultato particolare di questa operazione?
Siamo sempre all'interno del ciclo while:
Codice PHP:
// CALCOLO % DI NUM1 RISPETTO A NUM2
if ($mysql_num1 == "0") {$mysql_provv_num1 = "1";} else {$mysql_provv_num1 = $mysql_num1;}
$average_num1 = (round($mysql_num2/$mysql_provv_num1, 2)*100);
// ??? SELECT * FROM tabella WHERE ... == ...
// COME OTTENERE SOLO LE VOCI IL CUI RISULTATO E', AD ESEMPIO, TRA 90% e 100%?
Domanda 2: L'ultima colonna della tabella in output dovrebbe essere un link a un'altra pagina php, dove vedere i dettagli della voce. Immaginate una cosa tipo questa, dove "profilo completo" interroga di nuovo il DB:
id | nome | cognome | voto1 | voto2 | voto3 | ecc. | profilo completo |
12| PINO | GRISSINI | 21558 | 65432 | 3666 | ecc. |VAI ALLA PAGINA |
"VAI ALLA PAGINA" porta a un'altra pagina php dove mostriamo vita morte e miracoli, dati, foto ecc. di PINO GRISSINI: di nuovo c'e' interrogazione del DB, che avviene tramite passando (POST) la chiave univoca "ID" a un'altra pagina detail.php. A me e' venuto in mente di passare la variabile tramite un form e un campo hidden... Ci sono soluzioni migliori? Anche perche' il problema è che questo...
Codice PHP:
<form name='detail' action='detail.php' method='post'>
<input type='hidden' name='detail_number' id='detail_number' value='$id'>
<input type='image' name='submit' src='vai.jpg'></a></form>
... è pur sempre in un ciclo while: ogni volta che il ciclo si ripete l'ID, recuperata dal DB, viene sovrascritta. Come faccio ad ottenere, ad ogni riga, un link alla stessa pagina php con una query diversa?
Spero che le domande siano chiare: alla fin fine sono solo problemi di ciclo: immagino che la soluzione risieda in un array associativo, ma non me ne intendo!
Grazie mille, a presto! =)