- Home
- Categorie
- Coding e Sistemistica
- PHP
- modulo dinamico in base a selezione
-
modulo dinamico in base a selezione
ho Il seguente problema:
ho creato un modulo con menu a tendina che contiene valori da 1 a 10.
di seguito ho un altro modulo con due campi testo.
come posso fare a ripetere il secondo modulo in base a quanto o selezionato nel primo?
Si puo fare? o devo stabilire a priori quante righe devo inserire?
-
dovrei usare javascript
o posso creare qualcosa in php?
-
Ciao jackfolla
spero di aver capito
-se i due moduli sono nella stessa pagina puoi usare javascript
-se sono nella stessa pagina e vuoi utilizzare php dovrai inviare i dati, alla stessa pagina, e quindi ricaricarla, in modo da poter lavorare il valore inviato dallo script del primo modulo...
-
mi spiego meglio: io dovrei inviare a un database mysql piu righe contemporaneamente.
questo lo posso fare con una query di inserimento con piu "values" a seconda di quante righe devo inserire, giusto?
il numero di righe lo conosco perche lo prendo dal documento di ingresso,a titolo informativo devo fare un sistema di carico scarico di materiale, quindi so quanti elementi devo inserire contemporaneamente perche appartengono allo stesso documento di carico.
ora devo trovare un modo per poter visualizzare tanti campi di testo (per ogni record sono due Uno per il part_number e uno per il serial number) quante sono gli elementi da inserire.
ad esempio seleziono nel primo modulo 5 e nel secondo modulo mi compaiono 5 righe con i campi testo part number e serial number.una volta inseriti i dati nel secondo form (lo devo fare con il lettore barcode ma questo e un altro problema devo effettuare il submit e mandare i dati al db.
Spero di essere stato un po piu chiaro anche se forse e meglio che stacco un poco peche so sei ore che scrivo codice.
-
forse ho usato troppe parole
-
Ti dico teoricamente come lo farei io
Se credi possa andare vediamo di svilupparlo
Allura, prima di tutto ti servirà un form costruito in maniera "dinamica". Ovvero senza campi prefissi, non in numero ovviamente.
In un primo script imposterai quanti documenti caricare ($i)
nel secondo script (quello del form) prendi il valore e tramite un ciclo ti crei, dentro il form, $i coppie di campi s/n e p/n a cui abbinerai: name=serial_number$i
name=part_number$i
ed un hidden data con value=$i
nel terzo script ti memorizzerai dentro degli array tutti i dati, tramite un ciclo:
$pn*=$_POST['part_number$i']
$sn*=$_POST['serial_number$i']Fatto questo ti cicli l'array e ti inserisci le righe
Ovviamente ho scritto tutto in maniera sintatticamente sbagliata, era solo per dare un'idea di quel che si dovrebbe fare
-
si potrebbe andare anzi deve andare se no sto messo male:)
vediamo se ho capito
questo è il form di selezione :
[html]
<form name="form3" method="post" action="">
<label>N°
<select name="N°" id="N°">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</label>
</form>
[/html]
da qui posso selezionare il numero di righe mettendo nell'action la stessa pagina dove ho il codice del secondo form ?poi ho il form relativo agli item:
[HTML]
<form method="POST" name="form1" id="form1">
<table width="42%" border="0" align="center">
<tr>
<td height="18" class="headerTableGray"><div align="center"> Part Number
<input type="text" name="Part Number" id="Part Number">
</div></td>
<td class="headerTableGray"><label>
<div align="center">Serial Number
<input type="text" name="Serial Number" id="Serial Number">
</div>
</label></td>
</tr>
</table>
<p> </p>
<p align="center">
<label>
<input type="submit" name="button" id="button" value="Invia">
</label>
</p>
</form>
[/HTML]
poi mi sono perso.....:)
come faccio a fare un ciclo in html per riperere questo form tante volte quanto vale il valore passato dal primo form..?
-
@jackfolla said:
[html]
<form name="form3" method="post" action=".......">
<label>N°
<select name="N°" id="N°">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</label>
</form>
[/html]
da qui posso selezionare il numero di righe mettendo nell'action la stessa pagina dove ho il codice del secondo form ?
uhm.....o metti un tasto submit o utilizzi javascript per fare un OnSelect->submit, vedi tu per questo come lo vuoi impostare. Comunque si, devi mettere nell'action il nome della pagina che contiene il secondo script@jackfolla said:
poi ho il form relativo agli item:
si, che avrà estensione .php:
[php]<?
$i=$_POST['N°']; // perchè ti complichi la vita con questo N°??? XD
?>
<form method="POST" name="form1" id="form1" action="terzo_script.php>
<table width="42%" border="0" align="center">
<?
$f=1;
while ($f<=$i)
{
echo "<tr>
<td height='18' class='headerTableGray'>
<div align='center'> Part Number
<input type='text' name='Part Number".$f."' id='Part Number'>
</div></td>
<td class='headerTableGray'><label>
<div align='center'>Serial Number
<input type='text' name='Serial Number".$f."' id='Serial Number'>
</div>
</label></td>
</tr>";
$f=$f+1;
}
?>
</table>
<p> </p>
<p align="center">
<label>
<input type="hidden" name="N°" value="<? echo $i; ?>">
<input type="submit" name="button" id="button" value="Invia">
</label>
</p>
</form>
[/php]
Non ho testato, ma così dovrebbe funzionare
ti dovrebbe creare $i righe all'interno del tuo formFin quì dovremmo esserci credo
Se si, passiamo poi allo script di inserimento
-
funziona!
solo ce un problemino....
ho sostituito N***° ***con num
ho messo nell'action del form la pagina dove inviare num che e la stessa dove eseguo il secondo script. ma la variabile non viene passata:bho:
se al posto della variabile passata metto un numero il tuo script va alla perfezione.....
-
@jackfolla said:
funziona!
@jackfolla said:
solo ce un problemino....
li hai modificati così?:?
file_uno.html
[html]
<form name="form3" method="post" action="file_due.php">
<label>N°
<select name="num" id="num" type="select-one">
..........
[/html]file_due.php
[php]<?
$i=$_POST['num'];
?>
...............[/php]
-
si....
solo che file1.html è carico_item.php
e il form di selezione cosi
<form name="form3" method="post" action="file_due.php" OnSelect="submit">
-
praticamente deve stare tutto in una pagina.php e dopo aver fatto il submit degli item heiderare su una pagina dove faccio il riepilogo di tutti i dati e eventualmente stamparli.....ma perche hanno scelto me per questo progetto?
-
@jackfolla said:
si....
solo che file1.html è carico_item.php
e il form di selezione cosi
<form name="form3" method="post" action="file_due.php" OnSelect="submit">
spe', forse intendi che quando selezioni il numero di righe nel file carico_item.php non apre la pagina file_due.php??:?
-
gli script stanno tutti nella stessa pagina che e carico_item.php
prima di cio ce una query che mi riepiloga i dati generali della bolla di carico che ho inserito con un precedente form....
in questa pagina io dovrei selezionare il numero di item e inserire part number e serial number relativi alla bolla.
poi effettuare il submit per registrare i dati....
-
non vedo nessun errore....:x forse e l'eta sto perdendo colpi....:)
[html]
<table width="100%" border="0">
<tr>
<td><div align="center"><strong>Seleziona Il Numero di Item Presenti sulla documento</strong></div></td>
</tr>
<tr>
<td><div align="center">
<form name="form3" method="post" action="carico_item.php" OnSelect="submit" >
<label>N°
<select name="num" id="num">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</label>
<p>
<label></label>
</p>
</form>
</div></td>
</tr>
</table>
<?
$i=$_POST['num'];
?>
<form method="POST" name="form1" id="form1" action="carico_item.php >
<table width="42%" border="0" align="center">
<?
$f=1;
while ($f<=$i)
{
echo "<tr>
<td height='18' class='headerTableGray'>
<div align='center'> Part Number
<input type='text' name='Part Number".$f."' id='Part Number'>
</div></td>
<td class='headerTableGray'><label>
<div align='center'>Serial Number
<input type='text' name='Serial Number".$f."' id='Serial Number'>
</div>
</label></td>
</tr>" ;
$f=$f+1;
}
?>
</table>
<p> </p>
<p align="center">
<label>
<input type="hidden" name="N°" value="<? echo $i; ?>">
<input type="submit" name="button" id="button" value="Invia">
</label>
</p>
</form>
[/html]
-
@jackfolla said:
praticamente deve stare tutto in una pagina.php e dopo aver fatto il submit degli item heiderare su una pagina dove faccio il riepilogo di tutti i dati e eventualmente stamparli.....ma perche hanno scelto me per questo progetto?
I tre script possono tranquillamente stare anche dentro una stessa paginacarico_item.php
[php]
<form name="form3" method="post" action="carico_item.php">
<label>N°
<select name="num" id="num" type="select-one">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</label>
<input type="hidden" name="action" value="1">
<input type="submit" value="seleziona">
</form><?
$action=$_POST['action'];
switch ($action)
{
case 1:$i=$_POST['num']; echo '<form method="POST" name="form1" id="form1" action="carico_item.php"> <table width="42%" border="0" align="center">'; $f=1; while ($f<=$i) { echo "<tr> <td height='18' class='headerTableGray'> <div align='center'> Part Number <input type='text' name='PNumber".$f."' id='PNumber".$F."'> </div></td> <td class='headerTableGray'><label> <div align='center'>Serial Number <input type='text' name='SNumber".$f."' id='SNumber".$f."'> </div> </label></td> </tr>"; $f=$f+1; }
echo "</table>
<p> </p>
<p align='center'>
<label>
<input type='hidden' name='num' value='".$i."'>
<input type='hidden' name='action' value='2'>
<input type='submit' name='button' id='button' value='Invia'>
</label>
</p>
</form>";
break;}
[/php]
edit: avevo dimenticato il break
-
è una bomba!
solo devo risovlere un piccolo bug....
nella stessa pagina io paaso una variabile di modulo per effettuare il riepilogo dei dati generali della bolla di carico.
quando vado a selezionare il numero di elementi da caricare probabimente perdo la variabile post che uso per effettuare la query....
secondo te se la salvo come variabile di sessione risolvo il problema?
comunque mi hai salvato la vita.....
devo solo capire come fare lo script di invio dei dati al db..... ma una cosa alla volta......
-
@jackfolla said:
secondo te se la salvo come variabile di sessione risolvo il problema?
O te la continui a portar dietro tramite hidden data o te la "trasporti" tramite le sessioni la decisione sta a te