Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Onchange con DB

  1. #1

    Onchange con DB

    Ciao a tutti/e,
    devo realizzare una pagina con liste dinamiche in php, dove sono presenti due select (marca e Modello) relazionate tra di loro.
    Il mio obiettivo è di far apparire nella seconda lista solo i modelli relazionati al modello selezionato nella prima lista.
    E' possibile realizzarlo con il solo php? Premetto che utilizzo la piattaforma SMARTY per lo scambio delle variabili tra codice php e templates.
    Grazie

    Ginko

  2. #2
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Si, puoi farlo anche solo con php. Dopo aver selezionato un valore dalla prima select dovrai ricaricare la pagina ed eseguire una query a cui passerai il valore inviato dalla prima select per mostrare i risultati nella seconda select.

  3. #3

    Re: Onchange con DB

    Originariamente inviato da ginko75
    Ciao a tutti/e,
    devo realizzare una pagina con liste dinamiche in php, dove sono presenti due select (marca e Modello) relazionate tra di loro.
    Il mio obiettivo è di far apparire nella seconda lista solo i modelli relazionati al modello selezionato nella prima lista.
    E' possibile realizzarlo con il solo php? Premetto che utilizzo la piattaforma SMARTY per lo scambio delle variabili tra codice php e templates.
    Grazie

    Ginko
    Grazie per la risposta

    Per ricaricare la pagina devo utilizzare una funzione JS oppure semplicemente settando il tag onchange della select ?

    Ginko

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Basta il semplice onchange applicato alla prima select.

  5. #5
    Originariamente inviato da neida
    Basta il semplice onchange applicato alla prima select.
    ok, ma per ricaricare la pagina devo comunque passare l'id della prima select...c'è una opzione particolare del'onchange, per caso ?

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    No, devi solo eseguire una query iniziale per compilare la prima select. Nel tag di apertura della select aggiungi onchange per ricaricare la stessa pagina inviando il valore scelto. Successivamente, recuperato il valore inviato dalla prima select, eseguirai una seconda query per compilare dinamicamente la seconda select.

  7. #7
    Originariamente inviato da ginko75
    ok, ma per ricaricare la pagina devo comunque passare l'id della prima select...c'è una opzione particolare del'onchange, per caso ?

    la query per la prima è cosa fatta, adesso nel tag select ho scritto
    <select name="nome_marca" onchange="???">
    nell'opzione ONCAHNGE devo inserire in nome della pagina su cui reindirizzarmi? e il valore come lo passo, nel link della pagina ?

    Grazie

    Ginko

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    No, il nome della pagina devi specificarlo con l'attributo action del form. Potresti usare anche $_SERVER['PHP_SELF'] al posto di scrivere il nome del file interessato.

    Per l'onchange della select devi aggiungere questo:

    codice:
    <select name="nome_marca" onchange="this.form.submit();">
    dopo aver selezionato un valore dalla prima select, potrai creare la seconda query recuperando con $_POST['nome_marca'] il dato inviato da questa select, compilando dinamicamente la seconda select, appunto.

  9. #9
    Originariamente inviato da neida
    No, il nome della pagina devi specificarlo con l'attributo action del form. Potresti usare anche $_SERVER['PHP_SELF'] al posto di scrivere il nome del file interessato.
    e qui sorge il problema adesso, perchè il form è destinato ad uina ricerca, quindi l'action per me deve essere la pagina cerca.php, dove, dopo aver recuperato tutti i campi dalle combo effettuo la query di ricerca in funzione dei filtri selezionati.

    Forse il tag ONCHANGE non è ottimo in questo caso, meglio ONCLICK?

    grazie Ginko

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    non è che ci sia molta differenza fra onchange ed onclick, visto che entrami ti obbligano a ricaricare la pagina. Come alternativa potresti pensare ad una soluzione con ajax ad esempio.

    Diversamente, un'ulteriore strada potrebbe essere quella di non specificare direttamente il file cerca.php nell'action del form, indicando invece lo stesso file dove hai le due select. Poi dovresti controllare con isset() l'eventuale invio di dati sia dall prima che dalla seconda select. Quando andrai a creare la seconda query per la seconda select potrai fare un redirect con la funzione header() e passare i dati scleti dalle due select alla pagina cerca.php. In questo caso, però, i dati selezionati dalle select dovrai memorizzarli in altrettante sessioni dedicate.

    Anche se apparentemente sembrerebbe più macchinosa la seconda soluzione, personalmente, la ritengo più sicura in quanto col sistema offerto da ajax è vero che non c'è la necessità di dover ricaricare la pagina ma si tratta comunque di un metodo basato essenzialmente su javascript... fai più di un test, valuta cosa ti convince di più e scegli la soluzione adatta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.