• User Attivo

    Form che si ripete

    Salve a tutti, ho un problema con un form particolare.
    Praticamente ho creato un form di iscrizione che si ripete all'interno della stessa pagina per un numero di volte pari a al numero di persone che si vogliono iscrivere (numero che viene scelto in precedenza su un'altra pagina).

    Il form è il seguente:

    <form id="form1" name="form1" method="post" action="">
    <?php
    for ($a = 1; $a <= $_SESSION['numero_sistemazioni']; $a++) {
    <table width="100%" border="0" cellspacing="2" cellpadding="0">
    <tr>
    <td colspan="2"><span class="grassetto">ANAGRAFICA PARTECIPANTE N. <?PHP echo $a ?></span></td>
    </tr>
    <tr>
    <td width="23%">Qualifica</td>
    <td width="77%"><span class="form02">
    <select name="qualifica" id="qualifica" value ="$qualifica">
    <?php
    for($i=0; $i<count($nome_prd); $i++) {?>
    <option <?php if ($struttura == "$nome_prd*") echo "selected" ?>> <?php echo $nome_prd*?></option>
    <?php
    }
    ?>
    </select>
    </span></td>
    </tr>
    <tr>
    <td>Cognome</td>
    <td><label>
    <input name="cognome" type="text" id="cognome" value="<?php echo $cognome?>" size="30" maxlength="100" />
    </label></td>
    </tr>
    <tr>
    <td>Nome</td>
    <td><input name="nome" type="text" id="nome" value="<?php echo $nome ?>" size="30" maxlength="100" /></td>
    </tr>
    <tr>
    <td>Data di nascita </td>
    <td><span class="formlabel">
    <input name="dataNascita<?php echo $a?>" type="text" id="dataNascita<?php echo $a?>" value="<?php echo $dataNascita . $a ?>" readonly="readonly" />
    <input name="button1<?php echo $a?>" type="button" class="pulsante"
    onclick="displayCalendar(document.forms[0].dataNascita<?php echo $a?>,'dd/mm/yyyy',this)" value="Scegli data" />
    </span></td>
    </tr>
    <tr>
    <td>Codice fiscale </td>
    <td><label>
    <input name="codiceFiscale" type="text" id="codiceFiscale" value="<?php echo $codiceFiscale ?>" size="15" maxlength="15" />
    </label></td>
    </tr>
    <tr>
    <td>Partita IVA </td>
    <td><input name="iva" type="text" id="iva" value="<?php echo $iva ?>" size="11" maxlength="11" /></td>
    </tr>
    <tr>
    <td>e-mail</td>
    <td><input name="email" type="text" id="email" value="<?php echo $email?>" size="30" maxlength="100" /></td>
    </tr>
    <tr>
    <td>Cellulare</td>
    <td><label>
    <input name="cellulare" type="text" id="cellulare" value="<?php echo $cellulare ?>" size="30" maxlength="100" />
    </label></td>
    </tr>
    <tr>
    <td>Tipologia</td>
    <td><label>
    <select name="tipo" id="tipo">
    <option>Mister</option>
    <option>Miss</option>
    <option>Chd</option>
    <option>Infant</option>
    </select>
    </label></td>
    </tr>
    <tr>
    <td>Pagante</td>
    <td>si
    <label>
    <input name="pagante" type="radio" value="si" />
    no
    <input name="pagante" type="radio" value="no" />
    </label></td>
    </tr>
    <tr>
    <td><label></label></td>
    <td> </td>
    </tr>
    </table>

    }
    ?>
    <label>
    <input name="Submit" type="submit" class="pulsante" value="Registra schede" />
    </label>
    </form>

    Il form funziona, mi viene ripetuto esattamente per il numero richiesto. Ma ora subentra un problema: come faccio a passare queste variabili?
    Mi spiego meglio.
    Fino ad ora, con un form semplice, dopo avere premuto il pulsante scrivevo questo codice

    $cognome = $_POST['cognome'];
    $nome = $_POST['nome'];
    ecc... ...... .......

    Ma ora come faccio ad assegnare un nome differente ai vari campi del form che si ripetono?


  • User Attivo

    visto che il form lo costruisci con un ciclo, puoi dare al name di ogni modulo un numero diverso.
    Ti faccio un esempio semplice:

    [PHP]
    <form method="post" action="" >
    <?php
    $num_form = 4; //Ovvio che questa variabile è modificabile o puoi utilizzarne una tua
    for ($a = 1; $a <= $num_form; $a++)
    {
    ?>
    Quanti anni hai?
    <input type="text" name="anni_<?php echo $a ?>" />
    <?php
    }
    ?>
    <input type="submit" name="submit" value="Invia" />
    </form>

    <?php
    // Stampiamo i diversi risultati sempre con un ciclo
    if (@$_POST['submit']) //se è stato premuto il tasto submit allora elaboriamo il risultato
    {
    for ($a = 1; $a <= $num_form; $a++)
    {
    $anni = $POST['anni'.$a];
    echo $anni;
    }
    }
    [/PHP]

    spero di essere stato chiaro 🙂

    ciaooo


  • User Attivo

    Sì è chiaro. Però c'è un problema: la variabile $anni del ciclo for dovrebbe assumere un valore dinamico anche essa
    for ($a = 1; $a <= $num_form; $a++)
    {
    $anni = $POST['anni'.$a];
    echo $anni;
    }
    Se scrivo il numero manualmente funziona. Es.
    for ($a = 1; $a <= $num_form; $a++)
    {
    $anni1 = $POST['anni'.$a];
    echo $anni;
    }
    Come faccio a rendere la variabile dinamica?


  • User Attivo

    No, risolto.
    Faccio così

    for ($a = 1; $a <= $num_form; $a++)
    {
    $anni_[$a] = $POST['anni'.$a];
    echo $anni;
    }

    Mille grazie :ciauz:


  • User Attivo

    Visto che il problema è risolto, potresti dirci l'applicazione pratica della multi-iscrizione a pagina singola, se possibile? 😄

    keiske


  • User Attivo

    Questo programma fa così:
    1 - ti permette di scegliere un tipo di sistemazione (camera singola, camera doppia, camera tripla, ecc...) Ovviamente ognuna di queste voci è un campo di una tabella al quale è stato assegnato un numero. Per esempio camera singola prevede 1 sola ersona; camera doppia 2 persone, ecc...;
    2 - Una volta scelta la sistemazione compare il suddetto form di iscrizione che si ripete tante volte quante sono le persone previste per questa sistemazione.

    Ora che ho capito come fare il form sto elaborando tutto il sistema per il controllo dei campi obbligatori e poi la scrittura nel database.
    Di quale procedura vuoi il codice? :smile5:


  • User Attivo

    Se dovesse prenotare un gruppo di 50 persone che gli fai compilare? 50 form? 😮

    mi pare un metodo che al massimo può scoraggiare un cliente...ma se ti piace così.... 😄


  • User Attivo

    in effetti forse è meglio dare la possibilità all'utente di scegliere per quante persone prenotare, magari differenziando bambini da adulti se ci sono differenze di prezzi


  • User Attivo

    Sì ma scusa, lo scopo?

    La prenotazione necessita normalmente di un nominativo per eventuali finalità contrattuali in caso di disdetta, caparra o altre particolarità.

    L'obbligo di dare i nominativi di ognuno nasce solo al momento del check-in per la trasmissione delle presenze alla prefettura per ottemeperare agli obblighi in materia di anti-terrorismo e la raccolta si effettua normalmente col documento di identità di ognuno che quindi andrebbe comunque richiesto all'arrivo per un confronto coi dati inseriti al momento della prenotazione.

    keiske


  • User Attivo

    Si hai ragione, ma questa è una prenotazione particolare, che prevede delle gratuità per chi fa parte di una agenzia in particolare, mentre prevede dei pagamenti per gli accompagnatori. Chi riceve la prenotazione deve andare a controllare che gli iscritti corrispondano realmente alle gratuità previste.
    Diciamo che tutte le informazioni inserite serviranno poi per fare statistiche e via discorrendo.


  • User Attivo

    Pensavo a una soluzione per una casistica di questo tipo qualche giorno fa... avrei risolto usando un numero identifictivo univoco... ad esempio se si prevede uno sconto per gli avvocati di un certo foro, si chiede di inserire il proprio codice di iscrizione all'albo e poi se quel codice viene rilevato più volte qualcuno ha fatto il furbo 😄

    keiske


  • User Attivo

    Anche io dovrò prevedere una cosa simile.
    In questo caso infatti sono previste un tot di gratuità per partita iva. quindi dovrò poi fre un controllo per verificare se già per quella partita iva si sono iscritte delle persone e quindi le successive dovranno pagare la quota di partecipazione.