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>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
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']));
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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?
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
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>
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
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');
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
@etrottola
se stampi $_SESSION['dati'] nella pagina di recupero cosa vedi?
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
Notice: Undefined index: dati in C:\Programmi\EasyPHP-5.3.8.0\www\pastauovo\preventivo.php on line 57
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
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?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
ora comincia ad essere chiaro, troppi kilometri devo fare ancora per capire grazie mille
ma tu non dai lezioni vero?:evil:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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:
 

ertrottola

Utente Attivo
10 Ago 2011
81
0
0
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
Trapano Perdita di dati Database 1
Eugene Perdita dati durante invio form PHP 1
D [HTML] Perdita di memoria Offerte e Richieste di Lavoro e/o Collaborazione 10
usura18 [PHP] Perdita contenuto cookie al reload della pagina PHP 6
Marcolotto Restyling sito e perdita di posizionamento SEO e Posizionamento 1
mirko.dagata Perdita di ranking dell'home page a seguito di restyling del sito SEO e Posizionamento 1
T Passaggio da html a PHP/ASP: rischio perdita posizionamento? SEO e Posizionamento 2
A Sospensione sito (24h) con perdita posizionamento. SEO e Posizionamento 5
B Modificare sorgente joomla senza perdita modifiche con update Joomla 2
ivarello [RISOLTO] Perdita dei script dentro al div refreshato jQuery 3
R Da HTML a CMS perdita indicizzazione??? SEO e Posizionamento 1
D Perdita della formattazione di un elemento visualizzato con fadeIn() jQuery 0
minatore Perdita variabile in array PHP 19
A [PHP/GD] Imagecopy perdita di colore PHP 2
E Perdita traffico Google dopo lancio nuovo sito SEO e Posizionamento 0
E Perdita di spazio su hard disk Hardware 4
S oscurare momentaneamente sito e perdita di posizionamento SEO e Posizionamento 3
C Perdita Posizione per key con poca Concorrenza SEO e Posizionamento 1
G Fireworks: come ridurre l'area senza perdita? Webdesign e Grafica 0
A Stampare dati da form PHP 8
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 2
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5

Discussioni simili