sessioni
E dov'é il problema? Basta cambiare, allo stesso modo in cui si cambia il "display", un campo hidden che segni se usare il titolo o meno.Originariamente inviato da oronze
eh, ma settando display:none, quando il form viene inviato, è possibile che il campo titolo abbia una stringa precedentemente inviata dall'utente. Bisognerebbe prima svuotarlo oppure inserire una stringa particolare tipo "N_o_n_Tit" e verificare con php che il contenuto del campo debba essere processato o meno....si fa prima con ajax![]()
Allora ragazzi ho risolto facendo così:
Però mi rimane un problema essendo un campo hidden,mi si invia in automatico anche quando premo altre submit quindi come faccio a inviarlo SOLO quando premo il submit "title_subm" ?Codice PHP:
<input type="submit" value="<?php if($tt=='s'){ echo"Rimuovi Titolo";} if($tt=='n'){echo"Aggiungi Titolo"; }?>" name="title_subm" />
<input type='hidden' name='tt' value='<?php if($tt=='s'){ echo"n";} if($tt=='n'){ echo"s"; }?>' />
<?php if($tt=='s'){ ?>
<input type="text" name="titolo" value="<?php echo"$text_box"; ?>" /></p>
<?php } ?>
devi fare il controllo con php nella pagina in cui invii il form per capire se il valore deve essere processato oppure ignorato
No ai layout tabellari!
Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872
Un paio di note :
non puoi inserire controlli ajax senza usare js quindi se vuoi mantenere i dati salvati senza js non puoi nemmeno usare ajax .
AJAX = Asynchronous JavaScript and XML !!!!
Per me hai 2 strade possibili tutte che passano attraverso il server con la relativa submit.
Senza js non puoi fare molto altro.
1 => Cookie settati da server
I dati possono rimanere salvati sul pc dell'utente ... ma pensa se l'utente e' in una cyber room?
Allora dovresti far scadere i dati alla scadenza della sessione
2 => Sessioni
I dati rimangono sempre sul server fino alla scadenza della sessione.
QUando apri la pagina fai una session_start e verifichi che ci siano dati.
Se ci sono dati in post o get sovrasvrivi quelli salvati in sessione e poi carichi i dati dalla sessione e li stampi nei campi del form ....
A mio avviso non c'e' molto altro da fare o discutere.
Inoltre ti sconsiglio vivamanete di scrivere il codice come hai postato perche' diventa problematico da gestire.
ti fai un bellò'array con i n omi dei campi in sessione li aggiorni e poi inserisci nei vari values i valori oppure nelle opzioni della select.
esempio
ecco la formCodice PHP:
<?PHP
// VALORI BASE
$defaults = array( "nome"=>"" , "cognome"=>"" , "anno"=>"" ) ;
session_start();
// SOVRASCRIVO O CREO con i valori in post
if( $_POST["nome"] )
$_SESSION["nome"] = $_POST["nome"];
else
$_SESSION["nome"] = $defaults["nome"];
if( $_POST["nome"] )
$_SESSION["cognome"] = $_POST["cognome"];
else
$_SESSION["cognome"] = $defaults["cognome"];
if( $_POST["nome"] && is_numeric($_POST["anno"]) && $_POST["anno"]>1970 && $_POST["anno"]<2100 )
$_SESSION["anno"] = $_POST["anno"];
else
$_SESSION["anno"] = $defaults["anno"];
// HO i dati aggiornati in sessione recuperabili finche' la sessione e' attiva
// Forgio i campi dinamici e options
$yearOpts ="" ;
for( $i=2000 ; $i<2010 ; $i++ )
{
$yearOpts .= "<option value="\".$i."\" ".( $i==$_SESSION["anno"] ? " selected=\"selected\" " : "" )." >".$i."</option>" ;
}
if($_SESSION["anno"]>2050)
$sub = "Maremma e chi ci arriva ?" ;
else
$sub = "Siamo nei limiti" ;
?>
Codice PHP:
<form name="macheoooo" anction="<?=$_SERVER[PHP_SELF]?>" method="post" >
Nome <input type="text" name="nome" value="<?=$_SESSION["nome"]?>"
Cognome <input type="text" name="cognome" value="<?=$_SESSION["cognome"]?>"
Anno <select name="anno"><?=yearOpts;?></select>
<hr />
<input type="submit" value="<?=$sub;?>" />
</form>
UNa cosa del genere e' 30000 mila volte piu' gestibile
Ah quindi dici che è meglio utilizzare le sessioni..beh sicuramente scritto in questo modo si gestisce e si capisce moooolto meglio! Senti giusto per capire,ne approfittoc'è una linea di codice che non va..
che ho modificato togliendo due apici ""Codice PHP:
$yearOpts .= "<option value="".$i."" ".( $i==$_SESSION["anno"] ? " selected=\"selected\" " : "" )." >".$i."</option>" ;
Codice PHP:
$yearOpts .= "<option value=".$i." ".( $i==$_SESSION["anno"] ? " selected=\"selected\" " : "" )." >".$i."</option>" ;
Ma comunque non mi visualizza la lista degli anni..Dove sarà l'errore?
Scusate come non detto ho trovato non avevo messo il $ su
Anno <select name="anno"><?=$yearOpts;?></select>
![]()
Bene procederò in questo modo...Ovviamente tutto deve stare nella pagina del form..no?
GENTILISSIMO!
Allora ho fatto in questo modo ma non riesco a vederne luce mannaggia![]()
ho messo all'inizio della pagina questo:
Poi nel form ho fatto questo:Codice PHP:
if ($_SESSION["tt"]=='') {
$_SESSION["tt"] = 'n';
$tt=$_SESSION["tt"];}
else{
$tt=$_SESSION["tt"];}
echo"tt vale $tt ";
Quindi quando $tt vale 's' me lo dovrebbe mostrare altrimenti no. Dato che ci sono 2 submit ho creato una funzione che mi fa cambiare il valore della session relativa a ttCodice PHP:
<form name="subm_m" method="post" action="<?php echo"$current_page";?>">
<td bgcolor="#00FF99"><select name="sel_friend" > <?php include("_include/select_fr.php"); ?> </select></td>
<td width="450" bgcolor="#00FF99"><div id="title_box">
<input type="submit" value="<?php if($tt=='s'){ echo"Rimuovi Titolo";} if($tt=='n'){echo"Aggiungi Titolo"; }?>" name="title_subm" />
<?php if($tt =='s'){ ?>
<input type="text" name="titolo" value="<?=$_SESSION["titolo"]?>" /></p>
<?php } ?>
</div></td>
<td width="185" align="center" bgcolor="#00FF99"><input type="submit" value="Invia!" name="rapid_mess" /></td>
Codice PHP:
if(isset($_POST['title_subm']))
{
if($_SESSION["tt"]=='n' ){
$_SESSION["tt"]='s';}
else{
$_SESSION["tt"] = 'n';}
}
Ma quando premo rimane sempre 'n' il valore!! Come mai cosa sbaglio?
..Ho modificato in questo modo ma ancora niente,non riesco a cambiare il valore di $tt
e ho creato questo form:Codice PHP:
//se è stato cliccato il tasto per nascondere/mostrare la textbox
if(isset($_POST['title_subm']))
{
$tt= $_SESSION["tt"];
if($tt == 'n' ){
$values_array["tt"]= 's';}
else{
$values_array["tt"]='n';}
}
else{
if($values_array["tt"]==''){
$values_array["tt"]='n';
$_SESSION["tt"] = $values_array["tt"];
$tt= $_SESSION["tt"];}
else{
$_SESSION["tt"] = $values_array["tt"];
$tt=$_SESSION["tt"];}
}
Avete questa idea?Codice PHP:
<form name="subm_m" method="post" action="<?php echo"$current_page";?>">
<td bgcolor="#00FF99"><select name="sel_friend" > <?php include("_include/select_fr.php"); ?> </select></td>
<td width="450" bgcolor="#00FF99"><div id="title_box">
<input type="submit" value="<?php if($tt=='s'){ echo"Rimuovi Titolo";} if($tt=='n'){echo"Aggiungi Titolo"; }?>" name="title_subm" />
<?php if($tt=='s'){ ?>
<input type="text" name="titolo" value="<?=$_SESSION["titolo"]?>" /></p>
<?php } ?>
</div></td>
<td width="185" align="center" bgcolor="#00FF99"><input type="submit" value="Invia!" name="rapid_mess" /></td>