Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202

    mantenere campi form in memoria senza usare l'action all'interno del form

    è possibile fare in modo che se io ho due campi (x esempio) dentro a un form: nome e cognome.

    inserisco i dati clicca su conferma, i dati vengono inseriti dentro a un database e vengo indirizzato a una pagina di conferma con i dati di riepilogo usati?. E' possibile?

    Perchè vi spiego il mio problema... una volta che do il comando di inserimento dentro al database, e do la funziona header(location..) una volta inseriti i dati, nella pagina di conferma, se dico di stamparmi $_POST['nome'], non mi restituisce niente...
    mentre se io uso la funzione action dentro al FORM, scrivo la pagina URL di conferma, clicco su conferma, nella pagina di conferma questa volta mi fa vedere il POST inserito, però ovviamente sul database non mi ha salvato nulla..

    come faccio a combinare le due cose?

  2. #2
    ciao,
    scusami ma non credo di aver capito bene il tuo problema. Potresti riformularlo magari postando anche qualche riga di codice.

    A presto!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    ALLORA.......................................


    IL FORM! L'ACTION DEL FORM:
    codice:
    <form action="pagina2.php" method="post" ...
    I CAMPI DEL FORM!

    campo nome

    SUBMIT

    CLICCO

    nella pagina "pagina2.php"

    SCRIVO: <?php echo $_POST['nome'];?> E MI COMPARE IL NOME CHE HO INSERITO NELLA PAGINA DEL FORM!


    VOGLIO USARE IL FORM CON UN DATABASE!!! QUINDI VOGLIO INSERIRE IL DATO "NOME" DENTRO A UNA TABELLA!!!!! SO IL CODICE!!!! INSERT INTO ecc ecc ecc

    HEADER(LOCATION: pagina2.php)

    se lascio l'url dell'action nel form, l'action ha la priorità e l'header non viene contato e quindi NON MI INSERISCE IL DATO NELLA TABELLA.... se lo tolgo invece la priorità ce l'ha quindi Header(location..) e quindi il dato viene inserito nella tabella ma nella pagina2.php il codice <?php echo $_POST['nome'];?> NON MI FA VEDERE IL NOME CHE HO INSERITO NELLA PAGINA PRECEDENTE DEL FORM!!! XCHè????


    QUINDI VOGLIO CHE I POST INSERITI DENTRO AL FORM, VENGANO VISUALIZZATI NELLA PAGINA2.PHP SENZA USARE L'ACTION MA SOLO L'HEADER LOCATION!

  4. #4
    allora,
    premettendo che mi sarebbe piaciuto vedere proprio il codice che utilizzi nella pagina2.php credo che tu debba semplicemente ripescare i dati dal database quando la POST non è settata.
    Per riassumere:

    1. Invii i dati dal form tramite metodo POST alla pagina PAGINA2.php
    2. La pagina riceve i dati e esegue una query per salvarli nel database
    3. La pagina reindirizza il browser verso se stessa.

    (A questo punto è logico che vengono perse tutte le informazioni conservate nei POST in quanto non sono più state reinviate)

    4. la pagina PAGINA2.php verifica che effettivamente non siano state inviate informazioni tramite POST e di conseguenza recupera le informazioni dal database (SELECT ....).
    5. Le informazioni recuperate vengono stampate

    Spero di aver capito il problema e di averti dato una valida soluzione. Rimango comunque disponibile per chiarimenti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    la tua risposta è stata molto utile, anche xchè mi hai fatto venire in mente una idea

    Se volessi invece fare cosi:

    Pagina 1: form con validazione campi in php (quindi scrittura degli errori a fianco di ogni campo)
    Pagina 2: riepilogo dati scritti dal form della pagina 1
    e infine se tutto è ok INSERIMENTO nel database...

    allora le ultime due parti le so fare, mi rimane il problema della prima pagina... xchè c'è sempre quell'action del form che una volta inserito ha la precendeza su tutto...

    quindi ammettiamo che nella pagina 1 scrivo il codice in php per controllare se i campi sono vuoti, o pieni, quindi se vuoti scrive l'errore altrimenti mi manda alla pagina 2 (quindi usando la funzione header location pagina 2.php)..

    ecco in quest caso qui, nella pagina 2 io nn mi ritrovo + i dati del form, xchè sono stato mandato nella pagina 2 direttamente dal codice php e non dall'action del form.. ok?

    ecco in questo caso come faccio a farmi visualizzare questi POST dei campi?

  6. #6
    allora provo a farti uno schema anche di questa situazione:

    HTML pagina1:
    1. nella pagina1.php inserisci un form con action=pagina1.php e metodo POST.
    2. I dati vengono inviati

    PHP pagina1:
    3. il codice controlla che siano state inviate delle informazioni tramite POST se così non fosse le recupera dal Database (SELECT ...) [per capire meglio questo passaggio leggi fino in fondo]
    4. le informazioni vengono cancellate dal database (DELETE ...)
    5. si esegue la convalida dei dati. Se vengono infividuati degli errori si stampano a video e la pagina torna al punto 1
    6. se la convalida è positiva le informazioni vengono salvate nel database (INSERT INTO ...) e il browser reindirizzato alla pagina2.php

    PHP pagina2:
    7. recupera le informazioni dal database (SELECT ...) e le stampa a video per il controllo dell'utente.
    Adesso l'utente attraverso due link può proseguire e andare nella pagina che preferisci oppure tornare indietro e tornare al punto 3 della pagina1.

    Mi rendo conto che il procedimanto è un po lungo ma è l'unica che mi viene in mento in questo momento. Il concetto che stà alla base è quello di utilizzare il database come una sorta di memoria temporanea.

    Spero sia abbastanza chiaro!

  7. #7
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    La pagina 2 è raggiunta tramite un semplice redirect e non tramite un POST. Quindi non avrai mai le variabili in $_POST.

    Visto che salvi i dati nel DB devi recuperarli dal DB stesso con una query. Devi quindi identificare in qualche modo la riga nel DB (in genere con un campo ID), fare un redirect del tipo
    Codice PHP:
    header("Location: pagina2.php?id=".mysql_insert_id()); 
    e in pagina2.php devi fare una query del genere
    Codice PHP:
    $sql "SELECT * FROM utenti WHERE id = ".intval($_GET['id']); 
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    si ma se i dati li volessi inserire nel database solo dopo che l'utente ha confermato nella pagina 2.php, alla fine i POST nella pagina 2 non si vedranno mai allora

  9. #9
    se è un probleama inserirli nella stessa tabella creati una sorta di tabella temporanea che poi cancelli e dopo che l'utente ha controllato se i dati sono corretti trasferisci i dati dalla tabella temporanea a quella che ti interessa.

    Non vedo altre soluzioni se non salvare i dati in variabili di sessione. Ma mi sembra bruttino...

  10. #10
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Originariamente inviato da webboy82
    si ma se i dati li volessi inserire nel database solo dopo che l'utente ha confermato nella pagina 2.php, alla fine i POST nella pagina 2 non si vedranno mai allora
    Ma per quale motivo devi fare il controllo dei dati e l'inserimento in 2 pagine diverse? Di norma si controllano i dati inseriti dall'utente e si inseriscono nel DB se corretti, tutto nella stessa pagina PHP.
    Hai qualche esigenza particolare?
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.