Form con tag select dinamici

MaxAndreon

Utente Attivo
23 Nov 2009
34
0
0
Ciao ragazzi, vorrei chiedervi un consiglio, dato che sono nuovo con il PHP.

Io vorrei realizzare un form dove l'utente puo scegliere determinate caratteristiche di un prodotto tramite tag select ed eventualmente campi di testo. In base a quello che l'utente sceglie verrà poi indirizzato alla pagina del prodotto selezionato.
Lo mostro per chiarezza (per semplicità tralascio molte altre voci, la sturuttura è comunque questa):
HTML:
<html>
<head>
<title></title>
</head>
<body>
	<form action="elabora.php" method="post">
		<label>Cerca: <input type="text" />
		</label>
		<label>Tipologia
		<select>
			<option value="rigenero_caldo">Rigenero a caldo</option>
			<option value="rigenero_freddo">Rigenero a freddo</option>
			<option value="azoto">Generazione azoto</option>
		</select>
		</label>
		<label>Filtrazione
		<select>
			<option value="flangiato">Flangiato</option>
			<option value="filettato">Filettato</option>
			<option value="doppio_flang">Doppio Flangiato</option>
			<option value="doppio_filett">Doppio Filettato</option>
		</select>
		</label>
		<label>Portata Nm<sup>3</sup>
		<select>
			<option value="50">50</option>
			<option value="150">150</option>
			<option value="300">300</option>
			<option value="500">500</option>
			<option value="800">800</option>
			<option value="1500">1500</option>
			<option value="2500">2500</option>
			<option value="5000">5000</option>
		</select>
		</label>
		<button type="submit">Cerca nel sito!</button>
	</form>
</body>
</html>

Immagino che magari non sia un form complesso, ma per un neofita è facile perdere la via :p
Quindi io come mi devo comportare per far si che (ad esempio):
-l utente mi selezioni "rigenero caldo - filettato - 150" -> vai a "pippo.php";
l'utente mi selezioni "rigenero caldo - doppio flangiato - 2500" -> vai a pluto.php
l'utente mi selezioni "rigenero freddo - flangiato - 5000" -> vai a "john.php"
l'utente mi selezioni "rigenero freddo - flangiato - 800" -> vai a "marco.php"

...e via dicendo con tutti i possibili "intrecci" tra i tag select.

Immagino ci sarà sicuramente da lavorare con database. Mi sto complicando la vita secondo voi?:hammer: perchè come vedete dall'esempio, mi basta cambi un solo valore per dover visualizzare un altro prodotto...
Qualche dritta?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
scusa se ti dico una cosa, ma mi sembra che con il metodo che tu dici dovresti farti 96 pagine diverse e, o una serie di if o select che non finisce più.
prima di partire in quarta non ti converrebbe ripensare un po' al tutto?
se (da come immagino) le varie pagine non sono altro che le caratteristiche tecnice del prodotto, non ti converrebbe usare una pagina sola utilizzando un db? per esempio basato su codici prodotto?
 

MaxAndreon

Utente Attivo
23 Nov 2009
34
0
0
ciao borgo_italia,
in effetti ci ho ripensato un attimo, perchè è vero che son partito con la prima idea che mi è venuta in mente, e appunto cosi mi ritroverei davvero con milioni di pagine.

Quindi in poche parole il tuo consiglio è (correggimi se sbaglio):
-creare un database con tutti i codici e le caratteristiche dei prodotti;
-creare delle query che mi "leggano" i valori dei tag select selezionati dall'utente;
-restituirmi a video il codice del prodotto (che sarà un link che poi mi porterà al prodotto in questione).
Giusto?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
grosso modo è quello che pensavo.
volevo pero osservare una cosa (che prima non avevo notato) dovresti mettere i nomi ai campi di input e select altrimenti come fa la pag elabora.php a sapere cosa l'utente a selezionato.

se hai un minuto di pazienza ti faccio avere un'idea di base
 

MaxAndreon

Utente Attivo
23 Nov 2009
34
0
0
Si è vero, avendo scritto di fretta li ho tralasciati.
Ok, aspetto la tua idea...

Specifico che è la prima volta che mi metto a fare una cosa di questo genere :) quindi sono andato un po in crisi...

Intanto ti dico quello che ho pensato:
-creare il database;
-creare la tabella "prodotti" con i campi "id, nome_prodotto, filtrazione, portata_aria";
- e poi il panico...
 

MarcoGrazia

Utente Attivo
15 Dic 2009
813
18
18
59
Udine
www.stilisticamente.com
C'è un problema in quel form, se uno si dimentica o non seleziona comunque uno dei prodotti, o ne seleziona solo parte che succede?
Non sarebbe meglio creare una specie di selezione obbligata?
Per esempio se uno seleziona dalla prima select Generazione azoto, a quel punto si rendono evidenziate solo le select con i prodotti che prevedono quel trattamento.
Ora non mi intendo di questo tipo di prodotti, ma se per esempio per Generazione azoto -> Flangiato non è prevista la portata sotto i 10 Nm queste non dovrebbero essere selezionabili per evitare sviste.
Altrimenti rischi una montagna di redirezoni verso una paginba con scritto "Non trovato!" o "Selezione impossibile", cosa che fa incaSSare tantissimo gli utenti.
 

MaxAndreon

Utente Attivo
23 Nov 2009
34
0
0
Osservazione giustissima Marco, ci avevo pensato a questa cosa però per il momento non avevo detto ancora niente perchè volevo fare uno step per volta ;)

In effetti, neanche a farlo apposto, per generazione azoto avevo idea di rendere non selezionabile i select "filtrazione" e "portata aria".
Però pensavo una cosa che si potesse sviluppare dopo...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ecco un'idea di base:
form di ricerca (nei value metterei dei numeri e/o lettere)
anche questa sarebbe bene che fosse una pag php
PHP:
	<form action="elabora.php" method="post">
		<label>Cerca: <input name="cerca1" type="text" id="cerca1" />
		</label>
		<label>Tipologia
		<select name="tipo" id="tipo">
			<option value="RC">Rigenero a caldo</option>
			<option value="RF">Rigenero a freddo</option>
			<option value="N">Generazione azoto</option>
		</select>
		</label>
		<label>Filtrazione
		<select name="filtro" id="filtro">
			<option value="01">Flangiato</option>
			<option value="02">Filettato</option>
			<option value="03">Doppio Flangiato</option>
			<option value="04">Doppio Filettato</option>
		</select>
		</label>
		<label>Portata Nm<sup>3</sup>
		<select name="portata" id="portata">
			<option value="50">50</option>
			<option value="150">150</option>
			<option value="300">300</option>
			<option value="500">500</option>
			<option value="800">800</option>
			<option value="1500">1500</option>
			<option value="2500">2500</option>
			<option value="5000">5000</option>
		</select>
		</label>
		Cerca nel sito!
		<input type="submit" name="Submit" value="cerca">
	</form>

in un secondo tempo farei anche le select dinamiche anche loro collegati a db
in modo che se aggiungi/elimini un tipo/filtro/portata non devi rifare la pagina

farei diventare la pagina che hai chiamato elabora.php la presentazione delle caratteristice

pagina elabora.php
dopo aver eseguito i vari controlli sugli input (es non vuoti) preleverei i vari valori
es.
PHP:
<?php
//sopra i controlli e connessione al db
$tipo=$_POST['tipo'];
$filtro=$_POST['filtro'];
$portata=$_POST['portata'];
//genero il codice del prodotto
$cod_prod=$tipo.$filtro.$portata;
/* se ad es. l'utente ha selezionato
Rigenero a freddo
Filettato
800 normal mc, il codice del prodotti risulterà
RF02800
*/
//quindi dalla tabella dei prodotti eseguo la query
$query="SELECT * FROM tab_prodotti WHERE codice='$cod_prod'";
// ecc....e quindi mostro tutto quello che c'è da mostrare
//è evidente che la pagina deve essere impostata in modo da avere una
//una presentazione grafica gradevole
?>
secondo me, un primo approccio potrebbe essere la creazione di tabelle come es.
1. tabella_tipo
id int(12)autoincrement primary key
cod varchar(2) NOT NULL //conterrà es RC
tipo varchar(50) NOT NULL
2. tabella_filtro
id int(12)autoincrement primary key
cod varchar(2) NOT NULL //conterrà es 04
filtro varchar(50) NOT NULL
3. tabella_portata
id int(12)autoincrement primary key
cod varchar(5) NOT NULL //conterrà es 5000
filtro varchar(50) NOT NULL
4. tabella_prodotti
id int(12)autoincrement primary key
cod varchar(10) NOT NULL //conterrà es RF045000
nome varchar(255) NOT NULL // il nome del prodotto
altezza
largezza
foto
descrizione......


considera comunque che questa è solo un'idea di base tutta da sviluppare e, un consiglio,
usa carta e matita prima di scrivere il codice
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
PHP:
C'è un problema in quel form, se uno si dimentica o non seleziona comunque uno dei prodotti,
osservazione più che giusta.
nella parte in cui si presenta il prodotto (elabora.php) si devono eseguire i controlli (es che tutti i select siano stati selezionati) poi una volta generato il codice dalla select si verifica se il codice esista, se non esiste si lancia messaggio e si torna al form
 

MarcoGrazia

Utente Attivo
15 Dic 2009
813
18
18
59
Udine
www.stilisticamente.com
PHP:
C'è un problema in quel form, se uno si dimentica o non seleziona comunque uno dei prodotti,
osservazione più che giusta.
nella parte in cui si presenta il prodotto (elabora.php) si devono eseguire i controlli (es che tutti i select siano stati selezionati) poi una volta generato il codice dalla select si verifica se il codice esista, se non esiste si lancia messaggio e si torna al form
Sì certo si può fare così, ma il rischio è sempre lo stesso, cioè l'utente prima riempie il form a caso poi preme invio e infine questo risponde dicendo che ha sbagliato a selezionare i prodotti.
Tu useresti un form che non ti dice cosa fare ma lasci che sia il caso a darti il giusto responso? Io credo di no, io penso che tu vorresti poter selezionare i prodotti senza dover affidarti al caso perché non ricordi se quel prodotto esiste per quella categoria.
Io penso che alla fine qui Ajax potrebbe aiutare parecchio, dopo tutto si tratta di verificare che sul database esiste una correlazione per il prodotto in questione [ajax <---> php] e poi attraverso la risposta si generano le giuste option, oppure si deselezionano quelle che non c'entrano, insoma questo è un problema secondario.

Osservazione giustissima Marco, ci avevo pensato a questa cosa però per il momento non avevo detto ancora niente perchè volevo fare uno step per volta ;)

In effetti, neanche a farlo apposto, per generazione azoto avevo idea di rendere non selezionabile i select "filtrazione" e "portata aria".
Però pensavo una cosa che si potesse sviluppare dopo...

D'accordo ma la progettazione di un'applicazione non può passare solo per step, bisogna lavorarci vedendo la dimensione d'insieme o rischi di non riuscire a prendere una strada giusta.
Per esempio per fare questa cosa, bisogna scrivere un pezzo di codice che a sua volta generi le select con le giuste opzioni per ogni prodotto, ma per fare questo è necessaria l'integrazione con il database.
Non che sia difficile da realizzarsi, però è bene avere l'intero quadro d'insieme altrimenti rischi che un domani più che una modifica diventi un rattoppo.

@Borgo questo il codice per le giuste label
<label for="cerca1">Cerca: </label><input name="cerca1" type="text" id="cerca1" />
<label for="tipo">Tipologia</label>
<select name="tipo" id="tipo">
<option value="RC">Rigenero a caldo</option>
Se non ci metti l'indicazione del campo a cui la label deve puntare, tanto vale che nemmeno la usi, l'etichetta serve a quello.
Poi, anche se funziona, ma solo perché alcuni browser digeriscono anche i sassi, la label va messa includendo solo il testo e non il campo a cui punta.
 

MaxAndreon

Utente Attivo
23 Nov 2009
34
0
0
Grazie a entrambi per le dritte, ora terrò in considerazione tutto e subito per evitare (tanti) casini futuri :)
Quindi Marco come dovrei operare per far si che le select non siano selezionabili per determinate categorie (ad es. per "generazione azoto" far si che le select "filtrazione" e "portata" non siano selezionabili)?

Magari possono sembrare cose elementari, è che questa è la mia prima applicazione pratica dopo aver letto, letto e riletto da autodidatta documentazioni varie (con esempi purtroppo praticamente mai riusciti), col risultato di finire nel pallone..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao

In questo esempio, associamo implicitamente due etichette con due controlli per l'immissione di testo:

<FORM action="..." method="post">
<P>
<LABEL>
Nome
<INPUT type="text" name="nome">
</LABEL>
<LABEL>
<INPUT type="text" name="cognome">
Cognome
</LABEL>
</P>
</FORM>

se leggi bene il sistema è citato proprio dive hai indicato


p.s.
con questo ti vglio dire che entrambi i sistemi sono valiadi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
name = "nome" e name = "cognome" fanno gia da etichette per rielaborare i dati del form?
no, il name dell'input serve per poi prelevare il dato (value) ed elaborarlo
es.

$nome_el=$_POST['nome'];
$cognome_el=$_POST['cognome'];
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Invio form con PHP PHP 3
M Problema con controllo form in real time jQuery 6
M form con checkbox PHP 8
F query e form con select multipla PHP 17
W Rinominare Documenti Con Form Asp Classic ASP 9
S [PHP] Recupero nome immagine da Form con input file PHP 3
C [PHP] Form con Inserimento dati dalla maschera e un menù a discesa che prende i dati dal db PHP 1
Domenico_Falco1 [Javascript] [HTML] Campi form con sfondo imposto dal browser Javascript 5
E Form inserimento dati con JavaScript Javascript 0
I [PHP] inviare form con allegato tramite una mail PHP 1
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
M [HTML] form con multipli input type image HTML e CSS 1
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
U [PHP] Form stessa pagina con qualche complicazione PHP 0
S [PHP] form con metodo get e recupero id PHP 4
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
Emix Problema con creazione form css/mobile HTML e CSS 3
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
L Scelta form con jquery jQuery 1
F [PHP] Validare form prenotazione appuntamento tattoo con upload image PHP 0
S Html con form e action .php PHP 6
bubino8 [PHP] Auto Submit form con dati PHP 7
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
T [Javascript] un form con select dinamica che funzioni da menù... Javascript 2
zammaeng [PHP] Problema form con lista PHP 8
B INSERIRE DATI CON IMMAGINE DA FORM IN MYSQL MySQL 7
V [PHP] Form con elenco a tendina con dati DB PHP 20
A [HTML] form con campi dinamici. HTML e CSS 1
asevenx [PHP] form con select che non invia dati se con apostrofo PHP 4
SimooRu [PHP] Non riesco a far passare i dati con i form PHP 4
S [PHP] Form iscrizione senza DB con comandi deprecated PHP 10
Fuego2806 Stampare dati Form su immagine di sfondo con html HTML e CSS 1
Fuego2806 [PHP] Stampare dati Form su immagine di sfondo con html PHP 70
C [PHP] Upload immagine in un form con target _blank: non funziona PHP 7
G validazione form con div tipo alert jQuery 0
M form php con checkbox PHP 4
D form php con chapta PHP 1
I Form/aree di testo con input da lista di nomi!Chiedo aiuto!! HTML e CSS 3
P invio mail da form con dati php PHP 7
P PHP mailer invio form con 2 allegati. PHP 3
M Form multipagina con campi già compilati se presenti PHP 5
B problema con i form Javascript 0
F controllo form php con restituzione errori nella form PHP 10
A form con inserimento multiplo PHP 4
9 eliminare righe di una tabella con form html PHP 6
P Aggiornare Tabella con form ma senza Mysql HTML e CSS 0
M carello della spesa con prodotti da un form PHP 0
E Form con campi allineamento HTML e CSS 4
S Form invio mail html, con invio tramite file denominato invio.php PHP 8

Discussioni simili