problema con una select... postato il 20/02/2009 21:29:02 nel forum programmazione, gdrcd, open source, hosting
buongiorno a tutti,
sono alle prime armi e mi scontro con i primi problemini di sintassi....forse qualcuno può aiutarmi
all'interno della mia pagina main.php vorrei ottenere il seguente risultato:
presupponendo che ho in mysql una tabella con due campi (nome, categoria) e 10 record , di cui 5 appartenenti alla categoria A e 5 alla categoria B.
vorrei visualizzare un campo radio che mi permetta di scegliere tra due opzioni (A,B).
subito sotto un campo select nascosto di default, che raccolga la scelta del "radio" precedente e che diventi visibile mostrando tra le sue option, solo quelle relative al valore del radio.
quindi scegliendo l'opzione A del radio, vorrei che mi comparisse la select con le sole 5 opzioni della categoria A.
ho provato e riprovato, ma trovo difficoltà nell'utilizzare correttamente javascript, integrandolo con PHP.
ecco come l'avevo pensata:
<table>
<form name="prova" action="main.php" method="POST">
<tr>
<td>
<th>Scelta Categoria</th>
<input type="radio" id="cat" value="A" onclick="document.getElementById('opzioni').style.display = 'inline';">A
<input type="radio" id="cat" value="B" onclick="document.getElementById('opzioni').style.display = 'inline';">B
</td>
</tr>
<br><br>
<script type="text/javascript">
alert(document.getElementById('cat').checked);
alert(document.getElementById('cat').value);
// if (document.getElementById('cat').checked){
// <? $conf ?> = document.getElementById('cat').value;
// }
</script>
<!-- come vedete avevo pensato di verificare se fosse checked, ed eventualmente assegnarne il valore a una variabile da utilizzare poi nella query al db. il problema è che cerco di assegnare un valore javascript ad una variabile php....credo. inoltre il secondo alert non funziona correttmente, e qualsiasi valore scelgo nel radio(A,B) mi riporta sempre il valore A.
poi passo alla select, ancora incompleta....-->
<tr>
<td><th>Lista opzioni</th>
<select style="display:none" id="opzioni" name="opzioni">
<?
$MySql = "SELECT * FROM nome_tab";
$Result = mysql_query($MySql);
while ($rs = mysql_fetch_array($Result)) {
?>
<option value="<?=$rs['nome']?>"><?=$rs['nome']?></option>
<?
}
?>
</select>
</th>
</td>
</tr>
<br><br>
<tr>
<td><th><input type="submit" value="Invia"></th>
</td>
</tr>
</form>
</table>
Da quello che ho in mente, una volta riuscito a recuperare in una variabile php, il valore del radio, riuscirei a impostare
correttamente anche la select(impegnandomi)....però ho un altro dubbio.
quando io clicco sul mio radio, la pagina main.php è già stata caricata....quindi anche la select è già stata creata sebbene sia nascosta....dovrei impostare sull'onclick del radio anche un comando per ricaricare la pagina ? perchè io ci ho provato utilizzando document.prova.action = "main.php"; e anche document.prova.submit(); ma non mi mantiene più la scelta effettuata sul radio.....giustamente mi carica tutto da capo.ufff
spero di essere stato chiaro anche se un pò incasinato...
grazie a chi avrà la cortesia di aiutarmi
Pagine → 1
20/02/2009 21:50:39
Estraendo da db entrambe i "gruppi", ed inserendoli in due array js, poi risulterebbe molto più facile fare quello che vuoi fare tu, visualizzando soltanto un array, scelto in base all'opzione dei radio button.
20/02/2009 23:19:21 e modificato da zorroboban il 20/02/2009 23:22:17
caspita...hai ragione....mi sono scervellato tuttoil giorno pensa...
però c'è sempre un problema...
una volta che scelgo una delle due e cambio scelta sul radio, non mi aggiorna la select.
ho provato ad agire sull'onchange, ma forse sbaglio ancora qualcosa:
onclick="document.getElementById('select_A').style.display = 'inline'" onchange="document.getElementById('select_B').style.display = 'none'"
e invertendo i metodi per il secondo radio...
21/02/2009 01:32:21
ok ok
ce l'ho fatta anche se a tarda ora.....ma adesso ce new york-toronto e mi fermo...
avrei ancora un dubbio.....
è possibile sull'onclick di un submit andare a modificare un campo in una tabella del db prima di passare alla pagina successiva indicata nell'action del form?
se si come? io ho provato creando un funzione javascript....ma mi chiedevo come interagisce php con javascript? all'interno di una function nel tag script, posso inserire del codice php, come ad esempio una query??
grazie a tutti.....soprattutto per la pazienza!
21/02/2009 01:43:58
Se vuoi farlo con javascript l'unica maniera è passare i dati ad una pagina php con una richiesta asincrona.
Ma da come la poni sembra superflua la cosa, visto che puoi inserire quel record nella tabella anche nella pagina in cui agisce l'action del form inserendo quella procedura come prima cosa rispetto alle altre ;)
21/02/2009 18:14:39
mmm....premetto che ho scaricato la guida e che ajax inizierò a studiarmelo in questi giorni, e ho capito bene o male cosa può fare....sembra la soluzione al mio problema. ma prima di utilizzare ajax? in che modo si poteva fare l'operazione di query?
ho provato, come mi hai suggerito, ad assegnare ad una variabile js il valore di una $php. e funge .....però io ho bisogno di fare il contrario, o forse sono io che sto cercando una soluzione assurda a un problema di facile risolutezza....mi spiego meglio:
all'inizio della mia main.php ho impostato un if che valuta se un campo db è valorizzato. se non lo fosse la pagina mostra una select e l'utente deve fare la propria scelta. subito dopo premendo invio, io dovrei andare a valorizzare quel campo db, in base alla scelta dell'utente, ricaricare la stessa pagina(questo tramite l'action del form) e sfruttare nuovamente l'if iniziale che questa volta vedrà valorizzato il campo db e mi mostrerà il vero contenuto della main.php
La mia testolina contorta, che le cose semplici non le vede mai(leggasi l'inizio del post), ha pensato che la scelta dell'utente la posso recuperare
tramite javascript, document.getelementbyid().value
sull'onclick faccio dunque partire una funzione js dove cerco di assegnare a una variabile php il value della select...il contrario di quello che mi avevi spiegato...ma non la accetta....ad es:
"<?$ciao?>" = document.getelementbyid().value
l'errore a video è che è impossibile assegnare a una string il valore...
io cerco di assegnare il value ad una variabile php per inserirlo in una query......ma non sò se la strada è quella giusta.
se inserissi la query nella form prima dell'invia creerei un casino. ogni volta che l'utente cambia scelta sulla select dovrei aggiornare il campo db? mmmm.....il campo si dovrebbe agiornare solo quando l'utente clicca invia.....probabilmente con ajax risolverei.....ma ora mi interessa più capire, che andare avanti con il mio lavoro
grazie cmq !!! se hai o avete altre dritte!! anche se io credo che ci sia magari un metodo piu semplice per ottenere lo stesso risultato e sono io che mi complico le cose
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
I dati del generatore di rank sono stati aggiornati!
The Coven → Negli scorci di luce delle paludi della Louisiana fioriscono nuove ombre. Estend e la Congrega ti aspettano per vivere emozionanti avventure!
Piume Nere: 🎅🎁📜Racconti Popolari e Cibo 🍞🎁🎅
New York Heroes Reborn - Avengers Academy: Integrazione png con ia e sala caos
Roma I Triumviri: Saturnalia su RiT dal 17 al 21 dicembre
RAID Shadow Legends → Plasma i tuoi eroi fino a farli diventare vere e proprie armi viventi e assembla i più epici gruppi d'assalto mai visti finora!
RAID Shadow Legends: Ottieni un feroce Campione Leggendario: Predator!
Tibia: Aggiornamento Invernale 2025 ❄️
Feudera: UPDATE #0.49.5.1 - Versioni mobile
Enlisted → Guida la tua squadra di soldati in combattimenti su larga scala, con fanteria, veicoli corazzati e aerei della IIa Guerra Mondiale!
Il gestore di Unwritten Destinies GDR ha risposto alla recensione di aver
crossfire ha recensito Unwritten Destinies GDR
Unwritten Destinies GDR: Loading... ❄️
The Line: Continua il test-drive
Tibia → Tibia è un MMORPG gratuito online dal 1997 e con migliaia di utenti connessi! Riscopri il divertimento old style!
