• User Attivo

    Pulsante "seleziona (elenco/menu)" con dati presi da database

    Salve,
    in un form "seleziona (elenco/menu)":
    [PHP]<select name="select" id="select">
    <option>1</option>
    <option>2</option>
    </select>[/PHP]

    ho bisogno di inserire al posto dei valori "1", "2", i dati estratti da un database (in questo caso sono nomi):
    [PHP]
    <?php
    $risultato=mysql_query("SELECT id, nome FROM utenti", $conn);
    if (!$risultato)
    {
    die("La tabella selezionata non esiste " . mysql_error());
    }

    	while ($riga=mysql_fetch_array($risultato))
    	{
    		echo "....."
    	}
    ?>
    

    [/PHP]

    Come faccio? 🙂


  • User Attivo

    Risolto
    [PHP]
    <FORM name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <SELECT name="elenco">
    <?php
    $risultato=mysql_query("select id, nome from utenti", $conn);
    if (!$risultato)
    {
    die("La tabella selezionata non esiste " . mysql_error());
    }

    	while ($riga=mysql_fetch_array($risultato))
    	{
    		$myfield_1 = $riga['id'];
    		$myfield_1 = $riga['nome']; 
    		
    		echo "<option value=\"".$riga["nome"]."\">".$riga["nome"]."</option>";
    	}
    ?>
    

    </SELECT>
    <INPUT type="submit" name="submit" value="Invia"><br>
    </FORM>
    [/PHP]

    Unica domanda: è giusto mettere nel campo ACTION [PHP]<?php echo $_SERVER['PHP_SELF']; ?>[/PHP] questo valore? Grazie :wink3:


  • ModSenior

    Ciao nofcfro,
    puoi mettere action="" è iene già considerato come questa pagina, senza bisogno di specificarlo.


  • User Attivo

    Perfetto!
    Una domanda, posso ad ogni oggetto che viene selezionato dal database dargli un valore?
    Esempio: nel database ho 3 nomi: Tizio, Caio, Sempronio, che ora mi vengono messi nel menù a tendina correttamente. Se io volessi dare a questi tre nomi un valore: Tizio = 1, Caio = 2, Sempronio = 3, cosicché nell'url es. ww.esempio.php?nomeid=1 ( o 2, o 3 ), come potrei fare?
    Grazie 🙂


  • ModSenior

    Devi inserire una chiave primaria autoincrement nella tabella.
    Tutte le tabelle dovrebbero avere un chiave primaria, altrimenti sono entità deboli.


  • User Attivo

    Quindi una ID chiave primaria auto-incrementale? Quella sì l'ho messa 🙂
    Il problema è che nella pagina1.php ho il menù a tendina con i vari nomi.

    [PHP]
    <?php include("conn.php"); ?>
    <form id="form1" name="form1" method="post" action="a.php">
    <input type="submit" name="submit" id="submit" value="Procedi" />
    </form>
    Condominio:
    <SELECT name="nomi" size="">
    <?php
    $risultato=mysql_query("select id, nome from utenti", $conn);
    if (!$risultato)
    {
    die("La tabella selezionata non esiste " . mysql_error());
    }

        while ($riga=mysql_fetch_array($risultato))
        {
            $campo1 = $riga['id'];
            $campo2 = $riga['nome']; 
            
            echo "<option value=\"".$riga["nome"]."\">".$riga["nome"]."</option>";
        }
    ?>
    

    </SELECT>
    ?>
    <?php include("close.php"); ?>
    [/PHP]

    Seleziono il nome che desidero, clicco sul pulsante "Procedi" e arrivo alla pagina2.php dove ho:

    [PHP]<?php
    if(isset($_POST["submit"]))
    {
    $zz= $riga['nome'];
    $yy = $riga['id'];
    echo $zz;
    echo $yy;
    }
    ?>[/PHP]

    Perché non mi stampa niente? Come faccio a passare una informazione all'altra pagina? Ecco perché ti chiedevo se era utile dare ad ogni nome un valore che potesse finire nell'url, così nella seconda pagina mettevo un $_GET e ricavavo le informazioni 🙂


  • ModSenior

    L'invio del form ti spedisce il nome che ti ritrovi in $_POST['nomi'], la variabile $riga non esiste nella seconda pagina.


  • User Attivo

    Ok, ma allora nella seconda pagina nel ciclo if cosa ci metto per richiamare i valori 'nome' e 'id'?
    [PHP]
    if(isset($_POST["nomi"]))
    {
    }
    [/PHP]


  • ModSenior

    Non funziona cosi, un select del modulo ti fà inviare un valore.
    Se tu hai:
    [php]
    echo "<option value="".$riga["nome"]."">".$riga["nome"]."</option>";
    [/php]
    E $riga["nome"] ha come valore TheDarkITA, quando invii il modulo ti ritrovi $_POST["nomi"] uguale a TheDarkITA.


  • User Attivo

    Svelato l'arcano: come si vede nel post #6 ho chiuso male il form </form> che va a fine pagine, ecco perché non riusciva nulla! XD
    Grazie per i suggerimenti 🙂


  • User Attivo

    Domanda sempre collegata: quando nella seconda pagina io ricavo i dati grazie al [PHP]$_POST[/PHP] ricevo l'unico valore compreso nella stringa:
    [PHP]echo "<option value="".$riga["nome"]."">".$riga["nome"]."</option>";[/PHP]
    Se io volessi ad esempio passare **insieme ** al "nome" anche un altro valore, tipo l'ID, devo per forza fare un'altra query select? Tenendo conto che questo valore ID però non deve essere visibile a tutti.
    🙂


  • ModSenior

    Solitamente si passa solo l'id, in quanto ad ogni ID è associato un nome, o anche più valori che si recuperano nella seconda pagina con una query.
    Anche perchè devi controllare che non siano stati manomessi gli input.


  • User Attivo

    Sì ma se andassi a modificare questa linea:
    [PHP]echo "<option value="".$riga["nome"]."">".$riga["nome"]."</option>"; [/PHP]
    cambiandola in questa:
    [PHP]echo "<option value="".$riga["id"]."">".$riga["id"]."</option>"; [/PHP]
    Poi nel menù a tendina comparirebbero solo gli id!


  • ModSenior

    Esiste la via di mezzo 😄
    [php]
    echo "<option value="".$riga["id"]."">".$riga["nome"]."</option>";
    [/php]


  • User Attivo

    Geniale 😉