• User

    Form con campi obbligatori

    Salve, dovrei realizzare un form con dei campi obbligatori che se non completati devono venire affiancati dalla scritta "Campo obbligatorio".

    Il problema sta nel fatto che ho delle select per la scelta di regione, provincia e comune che per aggiornarsi aggiornano la pagina e mi fa uscire la scritta Campo obbligatorio prima di cliccare INVIA.

    Non riesco inoltre a far la submit verso una nuova pagina visto che deve rimanere nella stessa per far aggiornare le select.

    Vi allego un estratto del codice, le 3 select e una casella di testo sempre obbligatoria.

    
    <html>
    
    <body>
      
      <?php  
        
    
    $e_re="";
    $e_pr="";
    $e_co="";
    
    $e_ind="";
    
        if (isset($_POST['regione'])) {
            $e_re = "Campo obbligatorio";
         }
        
        if ($_POST['provincia'] =="") {   
            $e_pr = "Campo obbligatorio";
          }    
          
        if ($_POST['comune'] =="") {   
           $e_co = "Campo obbligatorio";
          }      
        
    
          
        if (!isset($_POST['indirizzo'])) {
            $e_ind = "Campo obbligatorio";
         }
    
    
    $id_regione="";
    $id_provincia="";
    $id_comune="";
    
    $indirizzo="";
    
            
    ?>    
    <form action="inserimento.php" name="search" method="POST">
    
    
                
             <select onchange="document.search.submit()" name="regione">
        <option value="">Scegli regione...</option>
        <?
        $sql_regione="SELECT id_Regione, Regione FROM regione ORDER BY regione";
        $query_regione=@mysql_query($sql_regione) or die (mysql_error());
        while ($array=mysql_fetch_array($query_regione))
        {
        
        $id_r = $array['id_Regione'];
        $nom_r = $array['Regione'];
        
        ?>
            <option value="<? echo $id_r; ?>"<? if ($id_regione==$id_r) {echo " selected";} ?>><? echo $nom_r; ?></option>
        <?
        }
        ?>
        </select>
        
        <?if ($e_re != "") {echo $e_re;}    ?>
    
            
            
            
        
            
            <select onchange="document.search.submit()" name="provincia">
        <option value="">Scegli provincia...</option>
        <?
       echo $sql_prov="SELECT Sigla, Provincia, id_Regione FROM province WHERE id_Regione='$id_regione' ORDER BY Provincia";
        $query_prov=@mysql_query($sql_prov) or die (mysql_error());
        while ($array=mysql_fetch_array($query_prov))
        {
        
        $id_pr = $array['Sigla'];
        $nom_pr = $array['Provincia'];
        
        ?>
            <option value="<? echo $id_pr; ?>"<? if ($id_provincia==$id_pr) {echo " selected";} ?>><? echo $nom_pr; ?></option>
        <?
        }
        ?>
        </select>
            <?if ($e_pr != "") {echo $e_pr;}    ?>
            
            
            
                
                
        <select onchange="document.search.submit()" name="comune">
        <option value="">Scegli Città <option>
        <?
        
        if ($id_provincia!=""){
        
            $sql_comuni="SELECT id_Citta,Citta,Regione,Prov  FROM citta WHERE Prov='$id_provincia' ";
            
             
        $sql_comuni.=" ORDER BY citta";
    
       $query_comunia=@mysql_query($sql_comuni) or die (mysql_error());
        while ($array=mysql_fetch_array($query_comunia))
        {
        $id_c = $array['id_Citta'];
        $nom_c = $array['Citta'];
        
            
        ?>
            <option value="<? echo $id_c; ?>"<? if ($id_comune==$id_c) {echo " selected";} ?>><? echo $nom_c; ?></option>
            
        <?  }   
        }?>
        </select>    
            <?if ($e_co != "") {echo $e_co;}    
            
            
    if ($indirizzo!=""){?>
                
                <input type="text" name="indirizzo" value="<?echo $indirizzo;?>" size="35"/>
                <?}else{?>
                <input type="text" name="indirizzo"  value="" size="35" />
                <?}?>
            <?if ($e_ind != "") {echo $e_ind;}    ?>
            
                    <input type="submit"  value='INVIA'> 
            
            </form>        
         
    </body>
    </html>
    
    

  • Consiglio Direttivo

    Ciao Gaberiele e Buon 2012. 🙂

    Premesso che l'ideale sarebbe utilizzare delle chiamate Ajax per riempire le select a cascata man mano che le valorizzi, procedendo nel sistema da te pensato perché non provi a "costruire" passo passo il form?
    Cerco di spiegarmi meglio, parti dalla semplice prima select visualizzata, una volta valorizzata tramite il submit (o autosubmit), riaggiorni la pagina, valorizzandoti la select recuperando il dato tramite POST e fai visualizzare la seconda select. Valorizzi questa e ricarichi con le prime due select valorizzate e la terza da valorizzare. Valorizzata la terza al ricaricamento fai visualizzare il campo indirizzo ed il submit del form "completo". A questo punto, facendo i dovuti controlli sui valori, puoi procedere con lo script per le tue esigenze.

    Per il campo indirizzo potresti aggiungere anche un controllo Js che non ti fa procedere al submit se non valorizzato. 😉

    :ciauz:


  • User

    Sto provando a popolare le select con ajax, grazie del consiglio.


  • Consiglio Direttivo

    Di nulla. 🙂

    Se vorrai condividere con noi l'eventuale soluzione, di certo tornerà utile ad altri utenti. 😉