Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Conservare dei dati in campi di un Form al Reload della pagina

    Salve, ho una pagina php in cui è presente un form che mi permette l'inserimento di alcuni dati in un db. Il problema è questo, nella pagina ho implementato un menù select che in base al valore selezionato mi ricarica la stessa pagina aggiungendo o togliendo alcuni campi input type, e fin qui tutto ok, la cosa che invece mi sta facendo perdere tempo è il fatto che quando ricarica la pagina io vorrei che i campi già compilati del form non fossero resettati. Avete qualche idea?

  2. #2
    Al refresh della pagina a seguito della selezione di un valore dal menù a tendina dovresti fare il submit del form, in modo da passare tutti i dati già compilati.

    A questo punto devi solo distinguere quando un submit è un vero invio utente o un refresh per il menù a tendina (solitamente con un campo hidden valorizzato o meno).

    Poi modifica leggermente il form in modo che inizializzi il valore dei campi catturando i dati POST, se inviati.

  3. #3

    ah ok

    Soltanto una cosa, come posso effettuare la distinzione tra un vero submit o un refresh? Sono poco pratico...puoi postare qualche riga. GRAZIE

  4. #4
    Supponi di avere nel tuo form un campo hidden "invia"

    codice:
    <form name="mioform" id="mioform" method="post" action="miapaginachericeveidati.php">
    <input type="hidden" value="vero" name="invia" id="invia"/>
    ...
    ...
    </form>
    Questo campo sarà inviato assieme al form al submit, ok?
    Ora aggiungi del codice al javascript che fa il refresh della pagina quando selezioni dal menù a tendina in modo da svuotare il campo prima del submit.

    Il codice js che svuota il valore del campo invia è
    codice:
    document.getElementById('invia').value = '';
    Se usi framework js come mootools o jquery ovviamente provvedi a correggere il codice precedente.

    A questo punto, con il js aggiornato, ad ogni submit da menù a tendina il campo invia arriva al server vuoto, mentre al submit utente (attraverso il pulsante submit indendo) il campo invia arriva pieno.
    Nella tua pagina di ricezione dati basterà aggiungere questo codice

    Codice PHP:
    // Se il valore del parametro post invia vale 'vero'
    if(isset($_POST["invia"]) && $_POST["invia"] == 'vero') {

        
    // Dati inviati da utente -> devo fare il mio lavoro

    } else {

        
    // Dati inviati da menù a tendina -> non devo fare il mio lavoro



    Spero sia tutto più o meno chiaro.

    Ciao

  5. #5
    io avevo lo stesso problema con l'evento OnChange di alcune select dinamiche, che poi ho risolto con una serie di ISSET, vedi se ti può andare bene come spunto:



    Codice PHP:
              <?php

    $max 
    = isset($_POST["max"])?$_POST["max"]:1;

    echo 
    "<input type=\"hidden\" name=\"max\" value=\"$max\">\n";

    for (
    $i 1$i <= $max$i++)

    {

    echo 
    "         

              <tr>

                <td>Categoria Ordine:</td>

                <td></td>"
    ;



    $servizi "select * from `servizi`";

    $lista_servizi mysql_query($servizi) or die ("non eseguo la query servizi");

    echo 
    "<td><select name=\"servizio[$i]\" OnChange=\"document.forms[0].submit()\">\n";

    echo 
    "<option value=\"0\">- Tipo servizio -</option>\n";

    while (
    $ser mysql_fetch_array($lista_servizi,MYSQL_ASSOC))

    {

    echo 
    "<option value=\"".$ser["id_serv"]."\"";

     if (isset(
    $_POST["servizio"][$i]) and $_POST["servizio"][$i] == 

    $ser["id_serv"])

     {

            echo 
    " selected";

     }

     echo 
    ">".$ser["descrizione"]."</option>\n";

    }

    echo 
    "</select></td></tr> <tr><td>Tipologia ordine:</td><td></td>";

    if (isset (
    $_POST["servizio"][$i]))

    {

    $cat_servizi "select * from `categoria_servizi` where `id_rif_servizi` = '".$_POST["servizio"][$i]."'";

    $lista_cat_servizi mysql_query($cat_servizi) or die ("non eseguo la query account");

    echo 
    "<td><select name=\"cat_servizio[$i]\">";

    while (
    $cat_serv mysql_fetch_array($lista_cat_servizi,MYSQL_ASSOC))

    {

    echo 
    "<option value=\"".$cat_serv["id_cat_serv"]."\"";

    if (isset(
    $_POST["cat_servizio"][$i]) and $_POST["cat_servizio"][$i] == 

    $cat_serv["id_cat_serv"])

     {

            echo 
    " selected";

     }

     echo
    ">".$cat_serv["descrizione"]."</option>\n";

    }

    }

    else

    {

    }

    echo 
    "</select></td></tr><tr><td>Quantità:</td><td></td><td><input name=\"quantita[$i]\" type=\"text\" id=\"quantita\"

    value=\""
    .(isset($_POST["quantita"][$i])?$_POST["quantita"][$i]:"")."\" size=\"8\" maxlenght=\"10\"></td></tr>

    <tr><td>Descrizione articolo:</td><td></td><td><textarea name=\"descr_articolo[
    $i]\" cols=\"30\" rows=\"8\" wrap=\"virtual\" id=\"descr_articolo[$i]\">".(isset($_POST["descr_articolo"][$i])?$_POST["descr_articolo"][$i]:"")."</textarea></td></tr>";

    }

    ?>

    <tr><td>Altri articoli</td>

      <td></td>

      <td><input type="submit" name="aggiungi" value="Aggiungi articolo" onclick="max.value++" />

      <input type="submit" name="rimuovi" value="Rimuovi articolo" OnClick="max.value--" /></td></tr>

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.