Come salvare scelta della select "dinamica" ajax-php? Come dato php o attributo value tag option?

Disperato1

Nuovo Utente
7 Mag 2017
14
0
1
31
Sto utilizzando i menù concatenati con ajax e php: https://www.mrw.it/ajax/menu-select-dinamici-ajax-php_7219.html Come posso salvare la scelta? So benissimo che in caso di select "normali" si utilizza il tag value che viene utilizzato per inviare il valore selezionato, ma in questo caso non vi sono perchè viene fatto "dinamicamente" con ajax. Come posso salvare la scelta? Come variabile php oppure con attributo value del tag option?
P.S. Sono veramente disperato e ringrazio anticipatamente di cuore chiunque mi possa dare una mano, grazie!
 
Ciao Disperato1.
Anche con le select riempite dinamicamente con ajax viene assegnato un valore al tag value, nel caso del tutorial che hai linkato il valore del tag value corrisponde al valore visualizzato nella select.

Ora cosa intendi per salvare? Effettuare una richiesta a uno script php?
Se vuoi richiamare lo script senza che la pagina si ricarichi puoi utilizzare ancora ajax, altrimenti puoi racchiudere le select in un form ed aggiungere il pulsante per inviarlo.
 
Ultima modifica:
  • Like
Reactions: Disperato1
Ciao Disperato1.
Anche con le select riempite dinamicamente con ajax viene assegnato un valore al tag value, nel caso del tutorial che hai linkato il valore del tag value corrisponde al valore visualizzato nella select.

Ora cosa intendi per salvare? Effettuare una richiesta a uno script php?
Se vuoi richiamare lo script senza che la pagina si ricarichi puoi utilizzare ancora ajax, altrimenti puoi racchiudere le select in un form ed aggiungere il pulsante per inviarlo.
Grazie per la risposta! Dovrei creare un form dove oltre alle select concatenate vi sono delle caselle di testo. Ecco il mio codice
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Form Example</title>
</head>
<body background="sfondo1.jpg"/>
<form action="name.php" method="get">
<div><label for="firstname"><b><font color="LIME">Inserisci Citta':</font></b>
<input type="text" name="firstname" id="firstname"></label>
</div> <br><br>
<div><input type="submit" value="GO"></div>
</form>
</body>
</html>
In seguito dal file php name.php vado a memorizzare la citta' selezionate in una variabile php. in questo modo

$citta = $_GET['firstname'];

Quello che voglio fare è memorizzare i dati delle due select "dinamiche" in delle variabili php che poi userò nel mio script per delle operazioni. Come devo fare? Devo fare cosi': $dato=$_GET['valore_value']; Cosa devo mettere al posto di valore_value?
 
Semplicemente aggiungi l'attributo "name" alle select, e poi in "name.php" il valore sarà memorizzato in $_GET['nomechehaiscelto'];
Ti faccio un esempio completo della pagina select.html, basandomi sul tuo codice.
Evita di creare spazi con <br> consecutivi, è meglio utilizzare gli appositi attributi di stile per i margini.

Codice:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Form Example</title>
    </head>
    <body background="sfondo1.jpg">
        <form action="name.php" method="get">
            <div>
                <label for="firstname"><b><font color="lime">Inserisci città:</font></b></label>
                <input type="text" name="firstname" id="firstname">
            </div>
            <div>
                <label for="categoria"><b><font color="lime">Categoria:</font></b></label>
                <select id="categoria" name="categoria" onChange="GetLinguaggi(this.options[this.selectedIndex].text)">
                    <option value=""></option>
                    <option>programmazione</option>
                    <option>scripting</option>
                </select>
            </div>
            <div>
                <label for="categoria"><b><font color="lime">Linguaggio:</font></b></label>
                <select name="linguaggio" id="linguaggio"></select>
            </div>
            <div style="margin-top: 20px;">
                <input type="submit" value="GO">
            </div>
        </form>
        <script src="ajax.js" type="text/javascript"></script>
        <script type="text/javascript">
        var url = "select.php";
        var what = "SetLinguaggi(req.responseText)";

        function GetLinguaggi(Categoria)
        {
         InviaDati("categoria="+Categoria);
        }
      
        function SetLinguaggi(Linguaggi)
        {
         var linguaggioBox = document.getElementById("linguaggio");
         linguaggioBox.options.length = 0;
         if(Linguaggi != "")
         {
            var arrLinguaggi = Linguaggi.split(",");
            for(i = 0; i < arrLinguaggi.length; i++)
            {
             if(arrLinguaggi[i] != "")
             {
                linguaggioBox.options[linguaggioBox.options.length] =
                new Option(arrLinguaggi[i], arrLinguaggi[i]);
             }
            }
         }
        }
        </script>
    </body>
</html>

da name.php accederai ai dati in questo modo:
Codice:
$_GET['firstname']
$_GET['categoria']
$_GET['linguaggio']

ps: spero che con lo sfondo il colore lime dia un effetto diverso, sul bianco è inguardabile ;)
 
Ultima modifica:
  • Like
Reactions: Disperato1
Ti ringrazio tantissimo! L'ho provato e mi funziona, in effetti ero vicino alla soluzione ma il tuo aiuto è stato fondamentale. Ho risolto il problema ma grazie a te ho anche capito meglio alcuni aspetti del codice. Il colore LIME l'ho dovuto mettere perchè con quello sfondo il black od altro non erano visibili.
 
Semplicemente aggiungi l'attributo "name" alle select, e poi in "name.php" il valore sarà memorizzato in $_GET['nomechehaiscelto'];
Ti faccio un esempio completo della pagina select.html, basandomi sul tuo codice.
Evita di creare spazi con <br> consecutivi, è meglio utilizzare gli appositi attributi di stile per i margini.

Codice:
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Form Example</title>
    </head>
    <body background="sfondo1.jpg">
        <form action="name.php" method="get">
            <div>
                <label for="firstname"><b><font color="lime">Inserisci città:</font></b></label>
                <input type="text" name="firstname" id="firstname">
            </div>
            <div>
                <label for="categoria"><b><font color="lime">Categoria:</font></b></label>
                <select id="categoria" name="categoria" onChange="GetLinguaggi(this.options[this.selectedIndex].text)">
                    <option value=""></option>
                    <option>programmazione</option>
                    <option>scripting</option>
                </select>
            </div>
            <div>
                <label for="categoria"><b><font color="lime">Linguaggio:</font></b></label>
                <select name="linguaggio" id="linguaggio"></select>
            </div>
            <div style="margin-top: 20px;">
                <input type="submit" value="GO">
            </div>
        </form>
        <script src="ajax.js" type="text/javascript"></script>
        <script type="text/javascript">
        var url = "select.php";
        var what = "SetLinguaggi(req.responseText)";

        function GetLinguaggi(Categoria)
        {
         InviaDati("categoria="+Categoria);
        }
     
        function SetLinguaggi(Linguaggi)
        {
         var linguaggioBox = document.getElementById("linguaggio");
         linguaggioBox.options.length = 0;
         if(Linguaggi != "")
         {
            var arrLinguaggi = Linguaggi.split(",");
            for(i = 0; i < arrLinguaggi.length; i++)
            {
             if(arrLinguaggi[i] != "")
             {
                linguaggioBox.options[linguaggioBox.options.length] =
                new Option(arrLinguaggi[i], arrLinguaggi[i]);
             }
            }
         }
        }
        </script>
    </body>
</html>

da name.php accederai ai dati in questo modo:
Codice:
$_GET['firstname']
$_GET['categoria']
$_GET['linguaggio']

ps: spero che con lo sfondo il colore lime dia un effetto diverso, sul bianco è inguardabile ;)

Scusami per il disturbo ma avrei bisogno di un altro piccolo aiuto in quanto devo aggiungere una modifica: devo permettere che le "opzioni" non vengano prese dal file select.php, ma come una query sql dal database. In poche parole per adesso le nostre opzioni vengono prelevate dal file select.php come questo link https://www.mrw.it/ajax/menu-select-dinamici-ajax-php_7219.html invece devo permettere che le opzioni, in questo caso i "linguaggi disponibili" vengano prelevati dal database e poi selezionati come abbiamo fatto con ajax fino a questo momento. Devo modificare solo il file select.php inserendo le query sql che prelevano i dati oppure devono fare qualcos'altro? Ti ringrazio ancora e spero in una tua risposta!
 

Discussioni simili