non essere costretti a riscrivere tutti i campi dopo un messaggio di errore

ciao, ricordo di aver letto che si può in qualche modo far si che dopo un errore restituito all'utente esso non debba riscrivere anche gli altri campi che vanno già bene. come si fa? qualcuno può darmi 2 dritte o un link?

grazie

inviato 8 anni fa
gabar-el
X 0 X

Puoi semplicemente far si che il form riprenda il valore delle variabili giusto evidenziando magari il valore errato .

e rirendere i valori giusti inserendoli di nuovo  nel form ....

esempio

<input type="text" name="tuoTesto" value="<?php echo $_POST['Mia_variabile'] ?>">

quindi in $_POST['Mia_variabile'] avrai il valore passato a controllo ... quindi recuperato per essere confermato .. 

se no poi la perdi ... a meno che non usi le sessioni .. allora le recuperi da li .... nel valore di sessione ..

$_session['Mia_variabile'] .......... ecc....

capito ?

spero di esserti stato utile .....

risposto 8 anni fa
costaplus
modificato 8 anni fa
X 0 X

grazie, molto utile. mi chiedo però come tornare poi al form facendo si che appunto i valori rimangano tali, con un semplice link? scusa l'ignoranza.....

risposto 8 anni fa
gabar-el
X 0 X

Se sei all'interno di una sessione i dati li puoi intendere globali ... nel senso che il valore di $_SESSION['mia_variabile']  ... non voglio fare il saputello ma avevo anche io i tuoi stessi problemi tempo fa ... poi il problema era i riaggiornare la pagina ... perche se facevi il refresh dopo un insert ..... nel db mi si duplicavano i record ... quindi anche io mi sono tolto il dubbio ... presumo che il codice che ho scritto sia abbondantemente comprensibile .... se poi hai problemi a capire contattami pure ti aiutero .... come hanno fatto con me gli altri ......

inizia a leggere questo poi se non capisci qualcosa scrivimi pure ti aiutero volentieri ......

http://www.phpnews.it/forum/index.php?topic=2966.0

risposto 8 anni fa
costaplus
X 0 X

io ho implementato con le sessioni così:

<?php
session_start();
if(empty($_SESSION['user_loggato']))
   {
      die("Devi prima effettuare il login");
   }
if(isset($_POST['titolo']) && $_POST['titolo'] != ''){
$_SESSION['titolo'] = $_POST['titolo'];
}
if(isset($_POST['descrizione']) && $_POST['descrizione'] != ''){
$_SESSION['descrizione'] = $_POST['descrizione'];
}
if(isset($_POST['allegato']) && $_POST['allegato'] != ''){
$_SESSION['allegato'] = $_POST['allegato'];
}
?>

avendo la session start per il login ho inserito li dentro, è corretto?

poi richiamo la sessione nei value, ma quando ho un errore e torno alla pagina d'inserimento mi ritrovo solo il titolo, perchè?

ad ora poi non so dove inserire l'unset delle sessioni....

grazie

risposto 8 anni fa
gabar-el
X 0 X

Dal codice che hai riportato non si capisce perché riesci a salvare solo il titolo. Comunque non è necessario mettere tutti quegli IF, basta fare un unico IF($_POST) in modo da salvare in sessione i dati del form solo se il folr è stato inviato, in questo caso infatti l'array $_POST non sarà vuoto

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

la teoria l'ho capita, ma la pratica è lontana....

 :buck:

quindi secondo te dovrebbe tornarmi anche gli altri campi, cavolo però non lo fa, è lo stesso problema che ho con l'altro errore, il codice sembra buono, ma alla fine non va come dovrebbe.....

risposto 8 anni fa
gabar-el
X 0 X

riporta il codice del form

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
<form method="post" action="elabora_gestione_inserisci.php" enctype="multipart/form-data">
            <fieldset>
            <legend>Modulo per inserimento circolari e/o corsi</legend>
            
            <div><label for="titolo">Titolo: </label><input type="text" name="titolo" id="titolo" /></div>
            <div><label for="descrizione">Descrizione: </label><textarea rows="15" cols="40" name="descrizione" id="descrizione">Inserisci la descrizione completa della circolare o corso</textarea></div>
            <div><label for="allegato">Allegato (documento): </label><input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
            <input type="file" name="allegato" id="allegato" /></div>
                                 
                                 
            <h5>I seguenti campi sono necessari solo per i corsi</h5>
            
            <div><label for="allegato2">Scheda corso: </label><input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
                                 <input type="file" name="allegato2" id="allegato2" /></div>
            <div><label for="allegato3">Modulo d'iscrizione: </label><input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
                                 <input type="file" name="allegato3" id="allegato3" /></div>
            <div><label for="iscrizione_1">Iscrizione 1° corso: </label><input type="text" name="iscrizione_1" id="tema" /></div>
            <div><label for="iscrizione_2">Iscrizione 2° corso (opzionale): </label><input type="text" name="iscrizione_2" id="tema" /></div>
            <div><label for="tema">Tema: </label><input type="text" name="tema" id="tema" /></div>
            <div><label for="data_corso">Data corso (gg-mm-aaaa): </label><input type="text" name="data_corso_1" class="data_corso" /></div>
            <div><label for="data_corso">2^ data corso (opzionale): </label><input type="text" name="data_corso_2" class="data_corso" /></div>
            <div><label for="data_corso">3^ data corso (opzionale): </label><input type="text" name="data_corso_3" class="data_corso" /></div>
            <div><label for="data_corso">4^ data corso (opzionale): </label><input type="text" name="data_corso_4" class="data_corso" /></div>
            <div><label for="numero_partecipanti">Numero partecipanti: </label><input type="text" name="numero_partecipanti" id="numero_partecipanti" /></div>
            <div><label for="crediti">Crediti: </label><input type="text" name="crediti" id="crediti" /></div>
            <div><label for="quota_iscrizione">Quota iscrizione: </label><input type="text" name="quota_iscrizione" id="quota_iscrizione" /></div>
            <div><input class="submit" type="submit" name="submit" value="Invia i dati" />
                <input class="reset" type="reset" name="reset" value="Cancella i dati" />
            </div>
            </fieldset>
            </form>
risposto 8 anni fa
gabar-el
X 0 X

non vedo nessuna istruzione PHP che prende i dati dalla sessione e li reinserisce nel form  ???

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

no, ok, al momento li avevo tolti, pensavo volessi vedere come era strutturato il form. dopo inserirei così:

<input type="text" name="titolo" value="<?=$_SESSION['titolo']?>">

ho già provato però e come detto mi torna solo il titolo...

dici che sbaglio qualcosa? magari riprovo....

risposto 8 anni fa
gabar-el
X 0 X

Ma non e meglio che invii tutti i post e poi fai l'inserimento nella sessione ?

esempio:

$_SESSION['lezione_1'] = $_POST['lezione_1'];
 $_SESSION['data_corso_1'] = $_POST['data_corso_1'];
$_SESSION['data_corso_2'] = $_POST['data_corso_2'];
$_SESSION['data_corso_3'] = $_POST['data_corso_3'];
$_SESSION['data_corso_4'] = $_POST['data_corso_4'];

prova magari e piu semplice .....

e nel codice che hai postato tu all'ultimo in effetti fa riferimento solo al titolo .....

risposto 8 anni fa
costaplus
X 0 X

grazie, ma non riesco a capire cosa intendi....  ???

risposto 8 anni fa
gabar-el
X 0 X

sono tornato su questo problema e son sempre fermo. ho capito che posso semplificare il codice con un unico if sul post, ma al momento non mi dispiacerebbe capire perchè non funzia quello che ho:

if(isset($_POST['titolo']) && $_POST['titolo'] != ''){
$_SESSION['titolo'] = $_POST['titolo'];
}
if(isset($_POST['descrizione']) && $_POST['descrizione'] != ''){
$_SESSION['descrizione'] = $_POST['descrizione'];
}
if(isset($_POST['allegato']) && $_POST['allegato'] != ''){
$_SESSION['allegato'] = $_POST['allegato'];
}

<div><label for="titolo">Titolo: </label><input type="text" name="titolo" id="titolo" value="<?=$_SESSION['titolo']?>" /></div>
            <div><label for="descrizione">Descrizione: </label><textarea rows="15" cols="40" name="descrizione" id="descrizione" value="<?=$_SESSION['descrizione']?>">Inserisci la descrizione completa della circolare o corso</textarea></div>
            <div><label for="allegato">Allegato (documento): </label><input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
            <input type="file" name="allegato" id="allegato" value="<?=$_SESSION['allegato']?>" /></div>

il problema è sempre quello, mi mantiene solo il titolo.... :giveup:

grazie

risposto 8 anni fa
gabar-el
modificato 8 anni fa
X 0 X

posta anche il codice che manda questo post ..... cosi vediamo un po'.....

risposto 8 anni fa
costaplus
X 0 X

 :dunno: cosa è che mi hai chiesto?

il codice del form è già postato se è quello che serve....

risposto 8 anni fa
gabar-el
X 0 X

ma ho lo hai postato incompleto oppure hai dimenticato di avviare le sessioni ... se no come fai a inserirci le variabili se le sessioni non le hai avviate ?

quindi controlla bene ! oppure non o hai mai fatto ?

risposto 8 anni fa
costaplus
X 0 X

l'ho postato incompleto, un esempio di sesssione segue subito dopo. cmq stavo valutando che senza il codice di sessione a inizio pagina, ottengo lo stesso risultato, come può essere?

poi ricordo che mi si parlava di un comando di fine sessione, dove dovrei inserirlo?

grazie

risposto 8 anni fa
gabar-el
X 0 X
qui primo errore .......tuo

<div><label for="descrizione">Descrizione: </label><textarea rows="15" cols="40" name="descrizione" id="descrizione" value="<?=$_SESSION['descrizione']?>">Inserisci la descrizione completa della circolare o corso</textarea></div>
         

   <div><label for="descrizione">Descrizione: </label><textarea rows="15" cols="40" name="descrizione" id="descrizione" ><?php echo $_SESSION['descrizione']; ?></textarea></div>

il problema è sempre quello, mi mantiene solo il titolo.... :giveup:

grazie

risposto 8 anni fa
costaplus
X 0 X

già, grazie costaplus, non ci sarei mai arrivato da solo, colpa del value, che probabilmente textarea non ha nemmeno....

ho guardato allegato ma non capisco dove possa essere li il problema, perchè quello non me lo torna ancora....

risposto 8 anni fa
gabar-el
X 0 X

Dal codice che hai riportato non si capisce perché riesci a salvare solo il titolo. Comunque non è necessario mettere tutti quegli IF, basta fare un unico IF($_POST) in modo da salvare in sessione i dati del form solo se il folr è stato inviato, in questo caso infatti l'array $_POST non sarà vuoto

 :bye:

sto cercando di vedere di fare un unico if come mi avete detto. Devo effettuare un unico if post e mettere al suo interno i vari campi, oppure riesco proprio a fare un if post sul form? se è così come si fa? cosa dovrei dirgli? non riesco proprio a capire come poter controllare tutti i campi con un uncio if post....

grazie

risposto 8 anni fa
gabar-el
X 0 X

con IF($_POST) non puoi controllare la presenza di tutti i campi ma ti può tornare utile per eseguire delle istruzioni solo se è stato inviato il form. Queste istruzioni potrebbero essere ad esempio il salvataggio in sessione di tutti i campi del form.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ho risolto così, che ne dite?

$_SESSION['titolo'] = @$_POST['titolo'];

 :bye:

risposto 8 anni fa
gabar-el
X 0 X

ho risolto così, che ne dite?

$_SESSION['titolo'] = @$_POST['titolo'];

 :bye:

bruttino...

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

noooooooooooo!!!!!!!!!!! cavolo, perchè?

non sono riuscito a capire come mettere a posto con l'if($_POST) che dicevate e allora ho pensato di fare così (me lo hann consigliato....)

grazie

risposto 8 anni fa
gabar-el
X 0 X
if($_POST) {
   $_SESSION['titolo'] = $_POST['titolo'];
   $_SESSION['???'] = $_POST['???'];
   ...
}

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

cavolo grazie, so che sono un pò uno scassac...i, spero di imparare molto nei prossimi, grazie a voi e ai libri che sto ingurgitando, e poter così ripagare su qualcun'altro il tutto....  :coolsmiley:

grazie gianni  :bye:

risposto 8 anni fa
gabar-el
X 0 X

ho appena notato che mi tiene le utlime cose scritte anche se torno dopo che ho inserito i dati, come faccio a far si che i campi non siano sempre pieni? devo dare la fine della sessione vero? non ho ancora capito dove....    :(

il pulsante cancella i dati poi non fa il suo dovere....  :tichedoff:

risposto 8 anni fa
gabar-el
X 0 X

per cancellare alcuni dati di sessione ti basta fare così:

unset($_SESSION['titolo']);

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ho notato che se inserisco dati, ricevo il messaggio di conferma, clicco per tornare a inserire altri dati, mi ritrovo ancora la sessione precedente, perchè? ho inserito le unset a fine form, dopo il form, così:

<?php
            unset($_SESSION['titolo']);
            unset($_SESSION['descrizione']);
            unset($_SESSION['iscrizione_1']);
            unset($_SESSION['iscrizione_2']);
            unset($_SESSION['tema']);
            unset($_SESSION['data_corso_1']);
            unset($_SESSION['data_corso_2']);
            unset($_SESSION['data_corso_3']);
            unset($_SESSION['data_corso_4']);
            unset($_SESSION['numero_partecipanti']);
            unset($_SESSION['crediti']);
            unset($_SESSION['quota_iscrizione']);
            ?>

ovviamente nella pagina dove appunto c'è il form, dove sbaglio?

grazie

risposto 8 anni fa
gabar-el
X 0 X

l' unset delle variabili di sessione, dovresti farlo quando controlli se la query di inserimento/modifica é andata a buon fine....

ciao  ;)

risposto 8 anni fa
neryo
X 0 X

grazie, li ho messi dove mi hai detto e mi sembra al momento (solo un piccolo controllo) che rimangano appunto solo se la query non va a buon fine, mentre se è ok non li ritrovo. quindi li mettevo nella pagina sbagliata? (quella del form, ho un'altra pagina invece che lo elabora). Posso allora toglierli da li?

grazie

 :bye:

risposto 8 anni fa
gabar-el
X 0 X

grazie, li ho messi dove mi hai detto e mi sembra al momento (solo un piccolo controllo) che rimangano appunto solo se la query non va a buon fine, mentre se è ok non li ritrovo. quindi li mettevo nella pagina sbagliata? (quella del form, ho un'altra pagina invece che lo elabora). Posso allora toglierli da li?

grazie

 :bye:

si, puoi toglierli.. i dati sessione vanno rimossi solo se la query è andata a buon fine..ciao

risposto 8 anni fa
neryo
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda