perdita di dati con variabili di sessione

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
Salve a tutti potete spiegarmi, perchè ogni volta cher torno indietro perdo dei dati del form?

Questo è un campo del form
PHP:
  <input name='nome' type='text' id='nome' 
    value="<?php if(isset($_SESSION['nome'])){echo $_SESSION['nome'];}?>"  /></td>
          <td scope="col"><label for="cognome">Cognome</label>

E qui la richiamo poi tornando indietro per eventuali modifiche, la prima volta scompare un campo, la seconda tre, la terza tutti:hammer: ????????
PHP:
 <td width="200" scope="col">Nome:<br />
            <?php echo $_SESSION['nome'] = $_POST['nome']; ?></td>
 
ciao
prova così
PHP:
<td width="200" scope="col">Nome:<br />
            <?php 
			if(isset($_SESSION['nome'])){
				echo $_SESSION['nome'];
			} else{
				$_SESSION['nome'] = $_POST['nome'];
				echo $_SESSION['nome'];
			}
			?>
</td>

al massimo non funzia ancora

p.s.
eventualmente posta più codice
 
ciao e grazie per la tua risposta, sto provando pultroppo senza risultati di creare un array per i campi del form dunque l'array credo di averlo creato e credo di aver definito la variabile di sessione e qui ho dei seri dubbi.
il problema e quando le richiamo con
<?php $_sessione['nome']=$dati ;?>
mi stampa array

PHP:
<form action="recupero_dati.php"  name="dati" method="post">
      <?php $dati=array("nome","cognome","citta","via","cap","telefono","cellulare","evento","data_evento","persone","catering","note"); 

    if(isset($_SESSION['dati'],$_SESSION['dati']));
 
ciao
conviene fare chiarezza.
se non ho capito male tu hai un form con vari campi di input
al submit fai quello che devi fare
quando torni al form vuoi che i value dei vari campi siano compilati coi valori che avevi inserito, eventualmente modificando quelli che vuoi e ridare il submit.
giusto?
 
Nulla di qui non sia abituato, sono annio che ci convivo comunque grazie per il tuo interessamento.
questo è il codice grazie per il tuo aiuto.

PHP:
<form action="recupero_dati.php"  name="dati" method="post">
      <?php $dati=array("nome","cognome","citta","via","cap","telefono","cellulare","evento","data_evento","persone","catering","note"); 
    if(isset($_SESSION['dati'],$_POST['dati'])) ;
     
	
	  ?>
      <table width="560" border="1">
        <tr align="left">
          <td scope="col">Nome:<br />
            <input name='nome' type='text' id='nome' 
    value="<?php $_SESSION['nome'] = $dati ; ?>"  /></td>
          <td scope="col"><label for="cognome">Cognome</label>
            <input name="cognome" type="text" id="cognome" 
      value="<?php $_SESSION['cognome'] = $dati ; ?>"  /></td>
          <td scope="col"><label for="citta2">Città</label>
            <br /><select name="citta">
              <option selected="selected">Roma</option>
              <option>Milano</option>
              <option>Napoli</option>
            </select></td>
        </tr>
        <tr>
          <td><span id="sprytextfield13">
            <label for="via">Via</label>
            <br />
            <input name="via" type="text" id="via" 
      value="<?php $_SESSION['via'] = $dati; ?>" /></td>
          <td><label for="cap">Cap</label>
            <br />
            <input name="cap" type="text" id="cap"  value="<?php $_SESSION['cap'] = $dati; ?>" /></td>
          <td><label for="telefono">Telefono</label>
            <input name="telefono" type="text" id="telefono"  
      value="<?php $_SESSION['telefono'] = $dati; ?>" /></td>
        </tr>
        <tr>
          <td><label for="cellulare">Cellulare</label>
            <input name="cellulare" type="text" id="cellulare"  
      value="<?php $_SESSION['cellulare']=$dati; ?>" /></td>
          <td><label for="email">Email</label>
            <br />
            <input name='email' type='text' id='email'   value="<?php $_SESSION['email']=$dati; ?>"/></td>
          <td>Evento<br />
          <select name="evento">
            <option selected="selected">Compleanno </option>
            <option>Matrimonio</option>
            <option>Battesimo</option>
            <option>Festa di Laurea</option>
            <option>Comunione</option>
            <option>Cresima</option>
            <option>Pranzo di Lavoro</option>
            <option>Cena di Lavoro</option>
          </select></td>
        </tr>
        <tr>
          <td><label for="data_evento">Data Evento</label>
            <input name="data_evento" type="text" id="data_evento"  
      value="<?php $_SESSION['data_evento']=$dati; ?>"/></td>
          <td>Persone<br />
          <select name="persone">
            <option selected="selected">1</option>
            <option>2</option>
            <option>3</option>
            <option>4</option>
            <option>5</option>
            <option>6</option>
            <option>7</option>
            <option>8</option>
            <option>9</option>
            <option>10</option>
            <option>11</option>
            <option>12</option>
          </select></td>
          <td>Catering
            <label for="catering"></label>
            
              <label>
                <br />
                <input type="radio" name="catering" value="si" id="catering_0" />
                Si</label>
              <label>
                <input type="radio" name="catering" value="no" id="catering_1" />
              No</label>
              <br />
            </p>
<br /></td>
        </tr>
        <tr align="left">
          <td colspan="3"><label for="note">Note e Comunicazioni di Intolleranze Alimentari<br />
            </label>
            <textarea name="note" id="note" cols="45" rows="5"  ><?php $_SESSION['note']=$dati; ?>
      
            </textarea></td>
        </tr>
      </table>
     
      <input name="aggiungi" type="submit" />
    </form>
 
E qui li recupero..


PHP:
 <table width="460" border="1">
        <tr align="left">
          <td width="200" scope="col">Nome:<br />
            <?php echo $_SESSION['dati'] = $_POST['nome']; ?></td>
          <td scope="col">Cognome:<br />
            <?php echo  $_SESSION['dati'] = $_POST['cognome'];  ?></td>
          <td scope="col">Città:<br />
            <?php echo $_SESSION['dati'] = $_POST['citta']; ?></td>
        </tr>
        <tr align="left">
          <td width="200">Via:<br />
            <?php echo  $_SESSION['dati'] = $_POST['via']; ?></td>
          <td>Cap:<br />
            <?php echo $_SESSION['dati'] = $_POST['cap']; ?></td>
          <td>Telefono: <?php echo $_SESSION['telefono'] = $_POST['telefono']; ?></td>
        </tr>
        <tr align="left">
          <td width="200">Cellulare:<br />
            <?php echo  $_SESSION['dati'] = $_POST['cellulare']; ?></td>
          <td>Email: <?php echo $_SESSION['dati'] = $_POST['email']; ?></td>
          <td>Evento: <br />
            <?php echo  $_SESSION['dati'] = $_POST['evento']; ?></td>
        </tr>
        <tr align="left">
          <td width="200">Data Evento:<br />
            <?php echo  $_SESSION['dati'] = $_POST['data_evento']; ?></td>
          <td>Persone:<br />
            <?php echo $_SESSION['dati'] = $_POST['persone']; ?></td>
          <td>Servizio Catering:<br />
            <?php echo $_SESSION['dati'] = $_POST['catering'];  ?></td>
        </tr>
        <tr align="left">
          <td colspan="3">Note:<br />
            <?php echo   $_SESSION['dati'] = $_POST['note']; ?></td>
        </tr>
      </table>
      <br />
      <br />
      <?php

  //solito lavoro di pulitura da stringhe pericolose
$email = stripslashes('$email');
$nome = stripslashes('$nome');
$cognome = stripslashes ('cognome');
$citta = stripslashes ('citta');
$via = stripslashes ('via');
$cap = stripslashes ('cap');
$telefono = stripslashes ('telefono');
$cellulare = stripslashes ('cellulare');
$evento = stripslashes ('evento');
$data_evento = stripslashes ('data_evento');
$persone = stripslashes ('persone');
$note = stripslashes ('note');

$email = mysql_real_escape_string('$email');
$nome = mysql_real_escape_string('$nome');
$cognome = mysql_real_escape_string ('cognome');
$citta = mysql_real_escape_string ('citta');
$via = mysql_real_escape_string ('via');
$cap = mysql_real_escape_string ('cap');
$telefono = mysql_real_escape_string ('telefono');
$cellulare = mysql_real_escape_string ('cellulare');
$evento = mysql_real_escape_string('evento');
$data_evento = mysql_real_escape_string('data_evento');
$persone = mysql_real_escape_string ('persone');
$note = mysql_real_escape_string('note');

$email = htmlentities('$email');
$nome = htmlentities('$nome');
$cognome = htmlentities ('cognome');
$citta = htmlentities ('citta');
$via = htmlentities ('via');
$cap = htmlentities ('cap');
$telefono = htmlentities ('telefono');
$cellulare = htmlentities ('cellulare');
$evento = htmlentities('evento');
$data_evento = htmlentities('data_evento');
$persone = htmlentities ('persone');
$note = htmlentities('note');
 
@etrottola
se stampi $_SESSION['dati'] nella pagina di recupero cosa vedi?
 
Notice: Undefined index: dati in C:\Programmi\EasyPHP-5.3.8.0\www\pastauovo\preventivo.php on line 57
 
ciao
forse sono un po' gnocco, ma non capisco cosa stai facendo

PHP:
<?php
session_start();
$dati=array("nome","cognome","citta","via","cap","telefono","cellulare","evento","data_evento","persone","catering","note");
//tralasciamo i vari isset e che le session sono dentro value=
$_SESSION['nome'] = $dati ;
$_SESSION['cognome'] = $dati ;
//secondo te cosa contengono le due session appena create?
echo "output del vardump ses NOME<br>";
var_dump($_SESSION['nome']);
echo "<br>output del vardump ses COGNOME<br>";
var_dump($_SESSION['cognome']);
?>
e questo è il risultato

output del vardump ses NOME
array(12) { [0]=> string(4) "nome" [1]=> string(7) "cognome" [2]=> string(5) "citta" [3]=> string(3) "via" [4]=> string(3) "cap" [5]=> string(8) "telefono" [6]=> string(9) "cellulare" [7]=> string(6) "evento" [8]=> string(11) "data_evento" [9]=> string(7) "persone" [10]=> string(8) "catering" [11]=> string(4) "note" }
output del vardump ses COGNOME
array(12) { [0]=> string(4) "nome" [1]=> string(7) "cognome" [2]=> string(5) "citta" [3]=> string(3) "via" [4]=> string(3) "cap" [5]=> string(8) "telefono" [6]=> string(9) "cellulare" [7]=> string(6) "evento" [8]=> string(11) "data_evento" [9]=> string(7) "persone" [10]=> string(8) "catering" [11]=> string(4) "note" }
cioè hai messo dentro le sessioni i valori dell'array $dati

poi ad un certo punto appare una $_SESSION['dati'] frammista con $_SESSION['nome'] o altro indice, non capisco
 
lo so che non capisci, a me succede sempre di non capire:cool:
sto cercando di imparare,
ma visto da fuori sembra un pasticcio, invece visto dalla mia parte è peggio te lo assicuro.
dunque nel manuale ho letto:
come creare un arrey e credo di averlo fatto,poi come creare delle sessioni e credo che il sistema sia questo, e come recuperarle e dovrebbe essere cosi.
ma dopo la tua risposta credo di non aver capito un c........
ti va di insegnarmi questo "per te" piccolo impiccio?
 
ciao
se provi questo mini codice vedrai che tornando al form il campo nome rimane con valore dell'ultimo inserito.
analogamente devi fare tutte le $_SESSION per gli altri campi e relativi if
secondo me è il metodo più semplice per fare quello che vuoi

pag_form.php
PHP:
<?php
session_start();//ricordati sempre questa istruzione PRIMA DI TUTTE LE ALTRE o QUALSIASI CODICE HTML
?>

<form action="pag_ricevi.php" method="post">
  nome
    <input name="nome" type="text" value="
	<?php
	if(isset($_SESSION['nome'])){
		/*se la sessione esiste stampa nell'input (es.)
		value="pinco"
		*/
		echo $_SESSION['nome'];
	}else{
		//altrimenti non stampa nulla, value= vuoto
		echo "";
	}
	?>
	" >
<br />
<!-- altri campi -->
    <input type="submit" name="Submit" value="Invia">

</form>
<!-- eccetera -->

pag_ricevi.php
PHP:
<?php
session_start();//ricordati sempre questa istruzione PRIMA DI TUTTE LE ALTRE o CODICE HTML
if(isset($_POST['Submit'])){
	$_SESSION['nome']=$_POST['nome'];
	//...........eccetera
}
?>
<br>
<a href="pag_form.php">torna</a>

questo senza creare ulteriori array
 
ciao
due parole sulle sessione e array
quello che hai fatto non è completamente sbagliato
hai creato un array con
$dati=array("nome","cognome","citta","via","cap","telefono","cellulare","evento","data_evento","persone","catering","note");
giusto, e la sessione
$_SESSION['dati']
giusto, ma c'è un però (grosso come una casa)
la variabile $dati diventa un array si ma del tipo
$dati[0] di valore nome
$dati[1] di valore cognome
$dati[2] di valore citta... ecc...
quindi con la tua assegnazione
$_SESSION['dati']=$dati;
non ottieni (come penso vorresti)
$_SESSION['nome']
$_SESSION['cognome'] ecc...
ma
$_SESSION['dati'][0] di valore nome
$_SESSION['dati'][1] di valore cognome..ecc...
come puoi vedere (oltre che dal var_dump che ti avervo postato) anche dal seguente ciclo
PHP:
<?php
if(!isset($_SESSION)){session_start();}//ricordati sempre l'istruzione session_start() prima di qualsiasi HTML in tutte le pag in cui usi sessioni
$dati=array("nome","cognome","citta","via","cap","telefono","cellulare","evento","data_evento","persone","catering","note");
$_SESSION['dati']=$dati;
//ottieni lo stesso mettendo
//$_SESSION=$dati;
foreach($_SESSION['dati'] as $chiave => $valore){
//di conseguenza da modificare il foreach in
//foreach($_SESSION as $chiave => $valore){
	echo "la sessione[dati][$chiave] ha il valore $valore<br>";
}
?>
se al contrario costruisci l'array con chiave => valore (es. fatto con il valore vuoto)
$dati=array("nome"=>'',"cognome"=>'',"citta"=>'',"via"=>'',"cap"=>'',"telefono"=>'',"cellulare"=>'',"evento"=>'',"data_evento"=>'',"persone"=>'',"catering"=>'',"note"=>'');
otterrai una session dati di array ma del tipo

$_SESSION['dati'][nome] di valore vuoto
$_SESSION['dati'][cognome] di valore vuoto..ecc...
come puoi vedere da questo secondo ciclo

PHP:
<?php
if(!isset($_SESSION)){session_start();}
$dati=array("nome"=>'',"cognome"=>'',"citta"=>'',"via"=>'',"cap"=>'',"telefono"=>'',"cellulare"=>'',"evento"=>'',"data_evento"=>'',"persone"=>'',"catering"=>'',"note"=>'');
$_SESSION['dati']=$dati;
foreach($_SESSION['dati'] as $chiave => $valore){
	if($valore==""){$valore="vuoto";}//per far vedere quale è il valore
	echo "la sessione[dati][$chiave] ha il valore $valore<br>";
}
?>
se invece vuoi ottenere le varie sessioni
$_SESSION['nome']
$_SESSION['cognome'] ...ecc...
dovresti procedere in questo modo
PHP:
<?php
if(!isset($_SESSION)){session_start();}
$dati=array("nome"=>'',"cognome"=>'',"citta"=>'',"via"=>'',"cap"=>'',"telefono"=>'',"cellulare"=>'',"evento"=>'',"data_evento"=>'',"persone"=>'',"catering"=>'',"note"=>'');
$_SESSION=$dati;
foreach($_SESSION as $chiave => $valore){
	if($valore==""){$valore="vuoto";}//per far vedere quale è il valore
	echo "la sessione[$chiave] ha il valore $valore<br>";
}
?>
se provi i tre spezzoni di codice vedrai la differenza.
penso che quello che si avvicina di più a quello che volevi fare sia il III° spezzone, ma ti consiglio di usare (sino a che non sei bravo) le sessioni solo col loro nome anche se può essere un po' lungo
 
ora comincia ad essere chiaro, troppi kilometri devo fare ancora per capire grazie mille
ma tu non dai lezioni vero?:evil:
 
ciao
ma tu non dai lezioni vero?
mi spiace no.
comunque se fai le tue domande qui su mrwm io o il genio di alex o addirittura il supergenio di eliox qualche risposta (spesso errata) sappiamo dartela.

p.s.
errata soprattutta da alex:rolleyes:
 
salve ragazzi una domanda, ma se volessi dividere le mie pagine?
mi spiego meglio,
come ormai avete ben chiaro, ho una pagina di prodotti dove li visualizzo tutti. e se invece volessi divederli per categoria creando più pagine come posso fare in modo che le mie scelte rimangano selezionate e modificabili sino a che non spedisca il preventivo?:elvis:
 
ciao
prima di tutto bisognerebbe sapere come hai organizzato le tabelle del db (immagino che tu utilizzi un db).
però comunque è meglio che tu inizi un nuovo post.
altrimenti diventa confusionario: "un post un argomento"
così anche gli altri utenti riescono (se serve) a seguire meglio
 

Discussioni simili