Ciao a tutti.
La domanda: "non capisco dove sbaglio". E mi spiego.
Ho trovato un'ottima video lezione di php + MySQL che però a pochi passaggi dal termine viene interrotta e non riesco a capire quali siano per completare il lavoro.
Si tratta di creare una pagina php che modifichi i campi di un database MySQL, per far ciò, prende i dati da una pagina "scegli.php", una griglia dove scelgo il record da modificare e lo passo alla pagina "modifica.php" con una form con tutti i campi della tabella. Fin qui tutto bene.
A quel punto modifico un campo e premo il pulsante "Modifica" che passa il comando alla pagina "EseguiLaModifica.php" ma la variabile $_SESSION che riporta il numero di ID del record da modificare risulta vuota (almeno così mi pare) e la modifica fallisce.
Di seguito vi posto i <BODY>, già un po' smanettati per tentare di trovare il giusto compromesso, delle due pagine Modifica e EseguiLaModifica, tralasciando l'accesso al database altrimenti viene troppo lungo, tanto quello funge, sperando mi illuminiate sul da farsi perché ci sto provando da due giorni senza risultati.
Modifica.php:
<?php
$_SESSION['idUtente']=$_REQUEST[idUtente];
$sql = "select * from accesso where idUtente='$_SESSION[idUtente]'";
echo $sql . "-" . "<br/>" . $_SESSION[idUtente];
$result=mysql_query($sql);
$dati=mysql_fetch_assoc($result);
$cognome=$dati["cognome"];
$nome=$dati["nome"];
$ksComune=$dati["ksComune"];
$userName=$dati["userName"];
$psw=$dati["psw"];
$sql="select * from comuni";
$result=mysql_query($sql);
?>
<form method="post" name="registra" action="EseguiLaModifica.php" id="registra">
<table>
<tr><td>Cognome<td><input id="cognome" name="cognome" value='<?php echo $cognome ?>' /></td></td></tr>
<tr><td>Nome<td><input id="nome" name="nome" value='<?php echo $nome ?>' /></td></td></tr>
<tr><td>Comune</td>
<td><select name="elencoComuni">
<?php
while ($dati=mysql_fetch_assoc($result))
{print "<option value='$dati[idComune]' ";
if ($dati[idComune]==$ksComune) echo "selected";
print ">$dati[NomeComune]</option> \n";}
?>
</select></td></tr>
<tr><td>User Name</td><td><input type="text" id="userName" name="userName" value='<?php echo $userName ?>' /></td></tr>
<tr><td>Password<td><td><input type="password" id="psw" name="psw" value='<?php echo $psw ?>' /></td></tr></table>
<input id="aggiorna" type="submit" name="aggiorna" value="Aggiorna">
</form>
EseguiLaModifica.php
$_SESSION['idUtente']=$_REQUEST[idUtente];
$cognome=$_REQUEST["cognome"];
$nome=$_REQUEST["nome"];
$ksComune=$_REQUEST["ksComune"];
$userName=$_REQUEST["userName"];
$psw=$_REQUEST["psw"];
$sql="update accesso set cognome='$cognome', nome='$nome', " .
"userName='$userName', psw='$psw', ksComune='$ksComune' " .
"where idUtente='" . $_SESSION[idUtente] . "'";
echo "<br/><br/>" . $_SESSION[idUtente] . "<br/><br/>";
echo "Sessione di:" . $_SESSION[idUtente] . "- \n";
echo $sql . " \n";
if(!mysql_query($sql))
echo "Aggiornamento fallito <br />";
mysql_close($conn);
print "<a href='ricerca.php'>Nuova Ricerca</a>";
?>
Facendolo girare così risponde con questo messaggio, lasciando in bianco sia la variabile $_SESSION che il campo ksComune che sulla form risulta compilato:
Sessione di:- update accesso set cognome='bianchi', nome='ttt', userName='user1', psw='1234', ksComune='' where idUtente='' Nuova Ricerca
Dopo ksComune e idUtente non ci sono le virgolette ma 2 apici.
Tutto ciò tenendo presente che questo è solo il mio primo esempio di database MySQL con php annesso, quindi potrei aver sbagliato qualsiasi cosa, ma sono stato attento a correggere alcuni errori di sintassi quali apici e virgolette e ";" finali, e non mi pare ci siano problemi con i comandi HTML, uso anche un editor che assiste nella scrittura sia HTML che php.
Se qualcuno avesse qualche idea gliene sarei grato perché in questo modo posso andare avanti nello studio.

Ugo