Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    dovrei fare un form primario + altro form secondario in base alla scelta dell'utente

    Come ho specificato in title dovrei avere una pagina php dove:
    1) si apre un form primario
    2) controlli lato client con js
    3) controlli lato server con php
    4) in base alla scelta dell'utente si deve aprire un secondo form
    5) anche qui dovrebbero esserci del controlli con js e php
    6) i dati sono registrati su DB MySql


    Lo script che sto usando è (semplificandolo all'osso) questo:

    // collegamento col DB
    <script language="JavaScript" type="text/JavaScript">

    function validateForm()
    {
    // controlli sui campi
    }
    </script>
    <?php
    //controlli sui campi
    //APERTURA FORM SECONDARIO A SECONDA DELLA SCELTA DELL'UTENTE
    return
    ?>

    <form onSubmit="return validateForm();" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="frm">
    Nome <input type="text" name="nome" >

    ....
    Scelta<fieldset>
    <input type="radio" name="scelta" value="1" checked="checked">scelta 1

    <input type="radio" name="scelta" value="2">scelta 2

    ....
    </fieldset>
    <input name="frmSubmit" type="submit" value="Invia">

    </form>


    Il_Drugo ha detto in un precedente post http://forum.html.it/forum/showthrea...readid=1046456 quanto segue:
    Fai tutto via PHP, facendo apparire i form dopo un reload della pagina in base alle variabili che mandi in GET (scelte dell'utente), riportando i valori del form precedente via POST

    Potete aiutarmi gentilmente?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    C'è qualcuno tanto gentile che potrebbe darmi qualche dritta su almeno 2 scelte che potrebbero essere:
    scelta 1) apertura di un form secondario dove chiede la professione
    scelta 2) apertura di un form secondario comprendente per esempio un hobby e poi anche dei prompt di js

    Grazie a qualche volontario (se c'è... :rollo: )

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Diciamo che questo potrebbe essere un esempio di quello che intendevo:

    Codice PHP:
    // collegamento col DB
    <script language="JavaScript" type="text/JavaScript">

    function validateForm()
    {
    // controlli sui campi
    }
    </script>
    <?php
    //controlli sui campi
    //APERTURA FORM SECONDARIO A SECONDA DELLA SCELTA DELL'UTENTE
    return

    if(!isset(
    $_GET['pass']) || $_GET['pass'] == "")
    {
    ?>

    <form onSubmit="return validateForm();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=1" method="post" name="frm">
    Nome <input type="text" name="nome" >

    ....
    Scelta<fieldset>
    <input type="radio" name="scelta" value="1" checked="checked">scelta 1

    <input type="radio" name="scelta" value="2">scelta 2

    ....
    </fieldset>
    <input name="frmSubmit" type="submit" value="Invia">

    </form>

    <?php
    }
    else if(
    $_GET['pass'] == 1)
    {
        
    // STAMPI IL FORM 2
        
        
    if($_POST['scelta'] == 1)
        {
            
    // OUTPUT IN BASE ALLA SCElTA
        
    }
        else
        {
            
    // OUTPUT IN BASE ALLA SCElTA
        
    }
    }
    ?>
    fammi sapere se non capisci qualche passaggio


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Da quello che ho capito il primo controllo

    if(!isset($_GET['pass']) || $_GET['pass'] == "")

    mi dà il primo form (quello uguale per tutto) se ancora non è stata effettuata nessuna scelta.

    Quello che noto però è che tu mi dici se pass==1 allora stampo il form2 ma io ho tanti form diversi quante sono le scelte perchè anche se di poco differiscono fra di loro.

    E poi per fare ciascun form dovrei chiudere il php (?>) e scrivere il form in html cioè per intendersi così come segue?

    else if($_GET['pass'] == 1)
    {


    if($_POST['scelta'] == 1)
    {
    ?>
    <form onSubmit="return validateForm1();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=1" method="post" name="frm1">
    Nome <input type="text" name="nome1" >

    ....
    <input name="frm1Submit" type="submit" value="Invia">

    </form>

    <?php
    }
    else
    {
    ?>
    <form onSubmit="return validateForm2();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=1" method="post" name="frm2">
    Nome <input type="text" name="nome2" >

    ....
    <input name="frm2Submit" type="submit" value="Invia">

    </form>
    <?php
    }
    }
    ?>

    Qui per semplicità ho messo in tutti e 2 i form nome ma naturalmente poi nella realtà saranno diverse, ma voglio capire se posso fare così o ho interpretato male

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Credo che debba mettere 2 valori per pass poichè
    - inizialmente dovrebbe mandare a video il form uguale per tutti
    - si fanno i controlli in js
    - si fanno i controlli in php e ricarica la pagina mettendo pass=1
    - a questo punto dovrebbe mandare a video il form giusto a seconda della scelta effettuata dall’utente
    - si fanno i controlli in js
    - si fanno i controlli in php e ricarica la pagina mettendo pass=2 altrimenti mi ripete i controlli che ho messo nelle righe in rosso




    <html>
    <head>
    <title>prova</title>

    <?
    //connessione DB
    ?>
    <script language="JavaScript" type="text/JavaScript">

    function validateForm()
    {
    //controlli js sul primo form quello uguale per tutti
    }

    function validateForm1()
    {
    //controlli js sul form secondario optando per la scelta 1
    }

    function validateForm2()
    {
    //controlli js sul form secondario optando per la scelta 2
    }

    </script>

    </head>
    <body>
    <?php
    if(!isset($_GET['pass']) || ($_GET['pass'] == "") || ($_GET['pass'] == 1))
    {
    $sw = 0;
    //qua controlla se è stato riempito il primo form
    if (isset($_POST['nome'])
    { $sw = 1;

    if(empty($_POST['nome']))
    {
    echo "controllo php - il campo nome è vuoto"; $sw=0;
    }
    else { $nome = $_POST['nome']; }

    }

    if ($sw == 1 )
    {
    $scelta = $_POST['scelta'];
    //INSERISCI i dati nel DB
    }
    }
    elseif ($_GET['pass'] == 2)
    {
    // controllo sui vari campi a seconda delle varie scelte
    e qua devo registrare di nuovo sul DB avendo per chiave quel “nome” che però non mi è passato



    if(!isset($_GET['pass']) || $_GET['pass'] == "")
    {
    ?>


    <form onSubmit="return validateForm();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=1" method="post" name="frm">
    Nome dell'operazione<input type="text" name="nome" >

    Scelta<fieldset>
    <input type="radio" name="scelta" value="1" checked="checked">scelta 1

    <input type="radio" name="scelta" value="2">scelta 2

    </fieldset>
    <input name="frmSubmit" type="submit" value="Invia">

    </form>

    <?php
    }
    else if($_GET['pass'] == 1)
    {


    if($_POST['scelta'] == 1)
    {
    ?>
    <form onSubmit="return validateForm1();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=2" method="post" name="frm1">
    Nome <input type="text" name=”professione" >

    <input name="frm1Submit" type="submit" value="Invia">

    </form>

    <?php
    }

    elseif ($_POST['scelta'] == 2) {
    ?>
    <form onSubmit="return validateForm2();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=2" method="post" name="frm2">
    Nome <input type="text" name="hobbies" >

    <input name="frm2Submit" type="submit" value="Invia">

    </form>
    <?php
    }
    }
    ?>

    </body>
    </html>

    Ancora non ho messo i controlli però già vedo che va bene eccezion fatta per il nome che ricaricando la pagina non me lo passa più.
    Posso passarlo con un campo hidden?
    In post come farei a passarlo?
    Oppure devo cambiare tattica e spedire tutti e 2 i form insieme cioè la prima volta che clicco su submit fare solo un controllo js e farmi apparire uno dei form secondari e solo il secondo sumbit sarebbe quello che invia i dati al DB?
    Beh forse ho fatto un po’ di confusione a spiegarmi (vista anche l’ora...) ma spero che possiate aiutarmi!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Cioè quello che mi interessa a me è registrare sul DB i tutti i dati dei 2 form (cioè i dati inseriti col form uguale per tutti e i dati inseriti col form secondario in base alla scelta che ha fatto l'utente).

  7. #7
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    // collegamento col DB
    <script language="JavaScript" type="text/JavaScript">

    function validateForm()
    {
    // controlli sui campi
    }
    </script>
    <?php
    //controlli sui campi
    //APERTURA FORM SECONDARIO A SECONDA DELLA SCELTA DELL'UTENTE
    return

    if(!isset(
    $_GET['pass']) || $_GET['pass'] == "")
    {
    ?>

    <form onSubmit="return validateForm();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=1" method="post" name="frm">
    Nome <input type="text" name="nome" >

    ....
    Scelta<fieldset>
    <input type="radio" name="scelta" value="1" checked="checked">scelta 1

    <input type="radio" name="scelta" value="2">scelta 2

    ....
    </fieldset>
    <input name="frmSubmit" type="submit" value="Invia">

    </form>

    <?php
    }
    else if(
    $_GET['pass'] == 1)
    {
        
    // riporto i valori del form 1
        
    ?>
        <form onSubmit="return validateForm();" action="<?php echo $_SERVER['PHP_SELF'];?>?pass=2" method="post" name="frm">
        <input type="hidden" name="nome" value="<?php echo $_POST['nome']; ?>" />
        <input type="hidden" name="scelta" value="<?php echo $_POST['scelta']; ?>" />
        <?php
        
    // e poi stampo il resto del form in base alla scelta
        
        
    if($_POST['scelta'] == 1)
        {
            
    // OUTPUT IN BASE ALLA SCElTA
        
    }
        else
        {
            
    // OUTPUT IN BASE ALLA SCElTA
        
    }
        
    ?>
        <input name="frmSubmit" type="submit" value="Invia">

        </form>
        <?php
    }
    ?>
    Forse ho capito esattamente cos aintendi...prova cosi^^

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Ti ringrazio tantissimo per ora.
    Adesso l'ho stampato e appena posso me lo guardo visto che fra poco devo andare a lavoro.
    Poi ti dirò...

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.