Originariamente inviato da l'anna
E' possibile creare select dinamiche, che emulino l'onchange di js, solo con php?
Senza ricorrere ad ajax? O solo con php ed essenziale javascript?
Ad esempio, ho un form dove selezione il cantante, e in base a tale scelta caricare la select dei dischi relativi? Ah, i dati li recupero da db con mysql.
Questo vorrebbe dire caricare preventivamente sulla pagina tutte le canzoni possibili di tutti i cantanti, e di nasconderle o mostrarle a seconda dei casi. Vedi un po' se non è il caso di usare un po' di AJAX al suo posto.
C'è anche un altro problema.
Il fatto è che il select delle canzoni avrà un certo attributo name, che magari vorrai tenere fisso, che so: <select name="Canzone">...</select>. Ma se vuoi mettere preventivamente tutte le opzioni sulla pagina, devi creare un select per ogni cantante, ma... che name gli dai?
L'alternativa è quella di usare un'unico select con tutte le canzoni di tutti i cantanti, e di mettere l'attributo di stile display: none sulle option da nascondere, ma questo metodo non funziona con Internet Explorer.
Originariamente inviato da MicheleWT
assolutamente si,
se usi jquery (o analoghi), sull'onchange della select puoi dare hide() e show() a un div che contiene la select concatenata relativa.
Ma dai, lo puoi fare senza problemi con le classi di stile 
Comunque non mi piace come soluzione, per quanto detto prima.
Originariamente inviato da alcio74
Una tecnica ci deve essere.....

... i cookie?
In che senso? 
Vorresti settare un cookie con tutte le canzoni?
Si può fare, ma bisogna ricordare che ci sono dei limiti e che i cookie si possono disabilitare (può essere un problema nel caso avesse in mente un sito aperto al pubblico).
Per rispondere all'anna, direi che un bel lavoro non si può fare senza AJAX e senza un certo supporto Javascript. È chiaro che, il lavoro di visualizzazione delle opzioni giuste lo deve fare il client, quindi Javascript serve per forza.
L'idea degli iframe si può accettare ma, come fatto notare, a quel punto bisogna prendere le informazioni dall'iframe e riportarle nel documento originario. Ma a questo punto è molto meglio usare l'AJAX, che è nato proprio in risposta al proliferare di iframe nascosti per caricare informazioni dinamiche.
Se invece si opta per caricare le informazioni preventivamente sulla pagina, o si crea un select per ogni cantante, con i problemi visti prima; o crea un solo select con tutte le option e si lavora coi fogli di stile, con i problemi detti prima con IE; o si usa un altro modo per caricare le informazioni relative.
I cookie sono un'idea, ma siamo limitati in lunghezza. Poi ci vuole un Javascript che recuperi le informazioni dal cookie e popoli il select delle canzoni in base al cantante.
In alternativa, e questa è la mia proposta, in PHP si crea un tag <script> dove ci si mette brutalmente il codice che cambia il select delle canzoni, stile tipo JSON, così:
codice:
<select name="Cantante" onchange="cambiaCantante(this)">
<option value="Elvis">Elvis Presley</option>
<option value="Jacko">Michael Jackson</option>
...
</select>
<script type="text/javascript">
function cambiaCantante(select) {
var selectCanzoni = document.getElementsByName("Canzone")[0];
selectCanzoni.innerHTML = "";
var canz = {
"Elvis": [["AYLT", "Are you lonesome tonight?"], ["JR", "Jailhouse rock"]],
"Jacko": [["SM", "Smooth criminal"], ["T", "Thriller"]]
}(select.value);
for (var i=0;i<canz.length;i++) {
var o=document.createElement("option");
o.calue=canz[i][0];
o.text=canz[i][1];
selectCanzoni.add(o,null);
}
}
</script>
<select name="Canzone"></select>