- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form che si ripete
-
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?
-
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
-
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?
-
No, risolto.
Faccio cosìfor ($a = 1; $a <= $num_form; $a++)
{
$anni_[$a] = $POST['anni'.$a];
echo $anni;
}Mille grazie
-
Visto che il problema è risolto, potresti dirci l'applicazione pratica della multi-iscrizione a pagina singola, se possibile?
keiske
-
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?
-
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ì....
-
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
-
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
-
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.
-
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
-
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.