+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: La variabile $_SESSION non passa tra le pagine (forse)

  1. #1
    UGoldrake non è in linea Scolaretto
    Post
    335

    La variabile $_SESSION non passa tra le pagine (forse)

    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:
    codice:
    <?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
    codice:
               $_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

  2. #2
    UGoldrake non è in linea Scolaretto
    Post
    335
    Infatti non passava.
    L'ultima prova ha risolto metà problema, nella pagina Modifca.php:
    codice:
    <form method="post" name="registra" action='<?php echo "registraModifica.php?idUtente=$_SESSION[idUtente]";?>' id="registra">
    ho riscritto la riga che apre la form come su indicato.
    Ora manca il sistema per passare il campo del Comune.
    Mi sa che faccio confusione tra idComune e ksComune.
    A dire il vero sono già abbastanza soddisfatto per aver capito il problema precedente, ma ci studio ancora, nel frattempo si accettano suggerimenti.
    Ugo

  3. #3
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,676
    Ho segnalato al moderatore che il thread riguarda più PHP che MySql e credo che verrà spostato. Nel frattempo approfondisci il significato di sessione e l'uso delle variabili globali PHP che, se si chiamano così, un motivo ci sarà.
    Il regolamento del forum: la prima cosa da leggere.

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    14,890
    Blogs
    5
    Spostato in php
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    UGoldrake non è in linea Scolaretto
    Post
    335
    Ciao Brontolo, e grazie della risposta.
    Non mi sono ancora fatto una cultura sulle variabili globali ma mi sono informato almeno un po'.
    Avevo già notato che nel mio codice manca questo pezzetto forse un po' fondamentale nella composizione della combo:
    codice:
    name='idComune'
    Purtroppo non basta a far passare il valore della variabile, e non capisco come mai, visto che gli altri valori passano senza problemi; l'unica differenza sta nel fatto che si tratta di una combo, mentre le altre sono caselle di testo.
    Ho provato anche con il $_POST al posto del $_REQUEST, più per scrupolo che per altro, ma sono al punto di prima.
    Ugo

  6. #6
    grimreaper non è in linea Scolaretto
    Luogo
    Treviso
    Post
    450
    Ciao,
    Non vedo session_start() .
    - The user formerly known as GRiM[R]eaPeR -

  7. #7
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,676
    La mia osservazione derivava dal fatto che, da uno sguardo sommario al tuo codice, ho notato che inizializzi la variabile di sessione id_utente in ciascuna delle pagine PHP: $_SESSION['idUtente']=$_REQUEST[idUtente];
    Proprio perché "di sessione" la variabile mantiene il suo valore per tutta la durata della sessione, anche da una pagina all'altra, purché si abbia cura di attivare la sessione in ogni pagina con session_start();
    Il regolamento del forum: la prima cosa da leggere.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi