Quote Originariamente inviata da KillerWorm Visualizza il messaggio
Ok, ancora mi sfugge qualcosa ma il quadro della situazione � comunque pi� chiaro.

Ho visto lo script e, per quanto possa funzionare, (a mio parere) lo trovo comunque statico e poco pratico rispetto a quanto si possa fare con le tecnologie disponibili attualmente... in poche parole "sa di stantio" (ma � chiaramente un mio parere personale).

Personalmente non ho da darti soluzioni "pronte all'uso" ma posso giusto cercare di indirizzarti per ottenere un possibile risultato.

L'attuale sistema che stai usando non � del tutto dinamico; nel senso che i dati (che popoleranno le option) sono tutti gi� definiti e disponibili sulla pagina lato client. Ora, non so quale sia l'entit� di dati da gestire, ma personalmente avrei optato per un sistema pi� dinamico con AJAX, in modo da popolare gli elementi select e quindi richiamare i dati, solo quando necessario; eseguendo runtime le opportune richieste al db.

Ad ogni modo, all'apertura della pagina, potresti creare gi� i select (da PHP) popolati in base alle scelte effettuate e salvate su db. Una soluzione pu� essere quindi questa.

Ora, non so come gestisci questi dati da PHP (cio� i valori che vanno nelle option) e come li fai arrivare a JavaScript; se tali dati sono comunque tutti su un db (mi pare di capire sia cos�) e se questo passaggio lo crei dinamicamente attraverso l'interrogazione di tale db, potresti creare gli elementi select gi� popolati ed inserisci l'attributo checked sulle relative option (in base alle scelte effettuate, recuperate da db). Il JavaScript, che stai utilizzando, dovrebbe comunque funzionare.
All'apertura della pagina (lato moderatore) avresti quindi i select popolati e con l'opzione selezionata.

In effetti non capisco come vai a costruire questi select. Sull'esempio del JavaScript da te utilizzato, i select sono chiaramente statici e hanno di fatto degli id univoci. Ma non sapendo come tu vada a costruire il tutto, non saprei cosa dirti .. forse mi sto perdendo io qualche passaggio...
Ad ogni modo questa parte credo riguardi pi� che altro PHP e non Javascript.


Scusa, mi riferivo alla pagina lato utente.

Un altro sistema potrebbe comunque essere quello di modificare opportunamente il JavaScript in modo che, all'apertura della pagina, vada a forzare l'aggiornamento degli elementi select, in base ai dati prelevati dal db, magari usando una qualche variabile che sia quindi letta dallo script. Evitando a questo punto di popolare preventivamente i select. In tal caso bisognerebbe capire se � possibile, e come, intervenire.

O, ancora, sicuramente si potrebbe realizzare qualcosa di pi� ottimale utilizzando jQuery/AJAX.

ciao Killerworm, ti ringrazio tantissimo per l'aiuto che mi stai dando. purtroppo essendo padre di famiglia, riesco a risponderti molto lentamente... ho letto e riletto quello che mi hai scritto
ti posto un po' di codice form html, cos� forse riesco a spiegarmi meglio (tralascio lo script js, in quanto lo hai gi� visto dal link che ho postato ieri):


codice:
while($row_gest_prc = mysql_fetch_array($result_gest_prc) 
{

echo '
<table border="1" width="1550px" style="font-size:12px" id="mytable'.$row_gest_prc['id_prat'].'">


<form method="post" name="modulo">';


echo '
<td>dati a</td>

<td>dati b</td>

// inizio delle 3 select

echo '<td>
<select name="tipo_richiesta" id="combo_0" onChange="change(this);" 
onfocus="if(this.value==\'tipo_richiesta\') this.value=\'\';" style="width:100%; height:100%">
    <option value=""></option>
    <option value="caf">caf</option>
    <option value="pat">patronato</option>
    <option value="ser">servizi</option>
</select></td>';


echo '<td>
<select name="caso1" id="combo_1" onChange="change(this)"
onfocus="if(this.value==\'caso1\') this.value=\'\';" style="width:100%; height:100%">
    <option value="value1"></option>
</select></td>';




echo '<td>
<select name="caso2" id="combo_2" onChange="change(this);"
onfocus="if(this.value==\'caso2\') this.value=\'\';" style="width:100%; height:100%">
    <option value="value1"></option>
</select></td>';


// fine delle 3 select

</tr>
</form>
</table>
';

cos� facendo:
riesco a popolare il campo della seconda select in base al contenuto della prima, a popolare il campo della terza select in base al contenuto della seconda; non ho per� impostato nessun richiamo al database dove stanno i dati tipo_richiesta, caso1 e caso2 inseriti dall'utente. la seconda tabella del ciclo while non funziona!.

quindi ho pensato di modificare cos� il codice delle select nel form html:

codice:
echo '<td>
<select name="tipo_richiesta" id="combo_0" onChange="change(this);" 
onfocus="if(this.value==\'tipo_richiesta\') this.value=\'\';" style="width:100%; height:100%">';
if ($row_gest_prc['tipo_richiesta'] == 'caf')    {
    echo '
    <option value=""></option>
    <option value="caf" selected="selected">caf</option>
    <option value="pat">pat</option>
<option value="ser">ser</option></select></td>';}
    
if ($row_gest_prc['tipo_richiesta'] == 'pat')    {
    echo '
    <option value=""></option>
    <option value="caf">caf</option>
    <option value="pat" selected="selected">pat</option>
<option value="ser">ser</option></select></td>';}    
    
if ($row_gest_prc['tipo_richiesta'] == 'ser')    {
    echo '
    <option value=""></option>
    <option value="caf">caf</option>
    <option value="pat">pat</option>
<option value="ser" selected="selected">ser</option></select></td>';}    
    


echo '<td>
<select name="caso1" id="combo_1" onChange="change(this)"
onfocus="if(this.value==\'caso1\') this.value=\'\';" style="width:100%; height:100%">
    <option value="value1"></option>
</select></td>';




echo '<td>
<select name="caso2" id="combo_2" onChange="change(this);"
onfocus="if(this.value==\'caso2\') this.value=\'\';" style="width:100%; height:100%">
    <option value="value1"></option>
</select></td>';


in questo modo le select della prima tabella del ciclo while si concatenato, ho riportato i dati dei rispettivi campi contenuti nella tabella del database, ma le select delle altre tabelle del ciclo while non funzionano...

il problema sulle id del ciclo while, ovvero combo_0, combo_1 e combo_2. lo stesso problema lo avevo avuto poco tempo fa e lo avevo postato qui:

http://forum.html.it/forum/showthrea...readid=2944848

autsel mi aveva infatti specificato che una delle regole principali sull'assegnazione degli id � che
NON ci devono essere duplicati, per cui devi assegnare id diversi ad ogni tabella.
Lo puoi fare con un contatore php, incrementandolo ongli cliclo per assegnare id diversi
pertanto avevo impostato gli id cosi: id="mytable'.$row_gest_prc['id_prat'].'", dove .$row_gest_prc['id_prat'] ripesca appunto dalla chiave primaria...

quindi, prima di dover rifare tutto, come dici tu, creando una nuova tabella nel database per ripescare i dati e utilizzare una chiamata ajax per concatenare le select, vorrei capire se c'� modo di variare quel benedetto id=combo_0 e successivi aggiungendo il richiamo alla chiave primaria!!

Ad ogni modo questa parte credo riguardi pi� che altro PHP e non Javascript.
a livello php so cosa dovrei fare, quello che non so fare � richiamare l'ipotetico
codice:
id="combo_0'.$row_gest_prc['id_prat'].'",
nello script che ti ho postato. credo che se ci riuscissi, il mio modertore riuscirebbe a vedere i dati postati dall'utente nelle tre select e a modificarli, e javascript farebbe in modo di far rispettare la giusta concatenazione.