Menu a tendina dinamico in php

vilandra84

Nuovo Utente
22 Mar 2013
4
0
0
Ciao a tutti, sono nuova del form. Ho bisogno del vostro aiuto per risolvere un problema con php. Ho dovuto creare un form dinamico, costituito da un menu a tendina. Questo perchè nella pagina a cui vado una volta selezionata la cantina, devo fare delle interrogazioni al database da visualizzare poi all'utente. Il problema si presenta nella pagina in cui richiamo il risultato del form. Vi posto il codice, per maggiore chiarezza.

Nella pagina index.php creo il menu a tendina
PHP:
<form metod="post" action="catalogo2.php">
<p align="left"> cantina: 
<select name="cantina"> 
      
<?php
 $query = "SELECT idcantina, nomecantina FROM cantina ORDER BY nomecantina");
$ris=mysql_query($query, $db) or die('Query non eseguibile' .mysql_error()); 
 while ($risultato = mysql_fetch_array($ris)) {
    $id_cantina = $risultato["idcantina"];
    $nome_cantina = $risultato["nomecantina"];
    echo "<option value='$id_cantina'>$nome_cantina</option>\n"; }   ?>
</select>
<input type="submit" value=">" /> 
<?php  print("<input type=\"hidden\" name=\"id_cantina\" value=\"$id_cantina\">"); ?> 
</p> </form>

Nella pagina catalogo2.php faccio:
PHP:
extract($_POST);
 $db=mysql_connect('localhost','root','') or die('Connessione al server fallita  ' . mysql_error()); //mysql_error():restituisce il tipo di errore del db
 mysql_select_db('enoteca',$db) or die('Database accesso non apribile  ' . mysql_error()); 
?>
...

<body>
<p> cantina vale: <?php print("$cantina");?> </p>
</body>
e mi da errore: undefined variable cantina

Ho provato a mettere id_cantina, nome_cantina ma mi dà lo stesso errore.
Ho provato anche a usare, al posto di extract($_POST), $cant=$_POST["id_cantina"]; ma mi dà errore di indice.
Ho provato anche a togliere l'hidden dal menu, ma l'errore non cambia.

Non riesco a capire dove sbaglio. Ho sempre richiamato in questo modo i form inviati tramite post.
Se potete aiutarmi, mi fate un grande favore. Grazie
 
Ultima modifica di un moderatore:
Ti da undefined variable cantina perchè la variabile in questione non è stata settata.
Dovresti quindi prima settarla, il valore che cerchi si trova nella variabile $_POST['cantina'].
 
precisazione

Ti da undefined variable cantina perchè la variabile in questione non è stata settata.
Dovresti quindi prima settarla, il valore che cerchi si trova nella variabile $_POST['cantina'].


Ciao, scusami ma non ho capito come devo fare a settarla e nemmeno dove. Potresti, per cortesia, scrivermi il codice esatto da usare? E dove lo devo inserire?
Scusa, ma le sto provando tutte e continua a non funzionare. Non so più cosa fare e devo dare questo maledetto esame.

Grazie.
 
Prova a cambiare questa riga:
PHP:
<p> cantina vale: <?php print("$cantina");?> </p>
Con:
PHP:
<p> cantina vale: <?php echo $_POST['cantina']; ?> </p>
 
risposta

Ciao,
mi da errore di undefined index: cantina.
Davvero non so quale possa essere il problema, visto che se faccio un form statico, inserendo io le varie option, mi prende il post e mi visualizza la cantina che ho selezionato. Non riesco a capire cosa non gli piaccia.
Il problema è che non posso farlo statico perchè il progetto consiste anche di una parte in jsp, in cui come amministratore vado a inserire delle nuove cantine. Di conseguenza, quando torno alla pagina php (quella che visualizza l'utente) deve poter selezionare anche quell'ultima cantina che ha inserito l'amministratore.

Scusa se ti sto rompendo le scatole.
 
ciao,
qui manca un h
PHP:
<form metod="post"
fai piu attenzione alla sintassi :)
PHP:
method='post'
edit - spiegazione
non indicando correttamente il method i dati di default viaggiano in GET di conseguenza in POST non hai nulla
 
Ultima modifica:
Cambia questa riga:
HTML:
<select name="cantina">
In:
HTML:
<select name="cantina" id="cantina">

Edit: ecco non me ne ero accorto criric :)
 
grazie

Ciao, ora funziona!
Se non fosse stato per voi non ci avrei mai fatto caso: mancava la h nella parola method! E io sono diventata matta per due giorni. Tutto per una svista scrivendo veloce il codice.
Grazie davvero.
 

Discussioni simili