Form con menù dinamico da database

megarospo

Utente Attivo
25 Set 2007
147
0
0
Vorrei costruire un form con un menù che pesca i propri valori da una tabella di database. Ho scritto quanto riporto qui sotto:

<?php
$cxn= mysql_connect ("localhost","root","");
$sql="SELECT comune FROM db.comuni ORDER BY comune";
$resultfede=mysqli_query($cxn , $sql); //(questa è la riga incriminata dal messaggio)
echo "<select name='comune'>\n";
while ($row=mysqli_fetch_assoc($resultfede))
{
echo "<option value='{$row['comune']}'>";
echo $row['comune']."\n";
}
echo "</select>";

?>

... ma non funziona. Ricevo questo messaggio: Fatal error: Call to undefined function: mysqli_query() in c:\programmi\.......
Come posso risolvere questo problema?
Grazie per l'aiuto.
 
Sembrerebbe che tu non abbia l'estensione abilitata per mysqli, dai un'occhiata al PHP.ini
 
oltre a correggere un piccolo errore nel richiamare una funzione mysqli fatto nello script, ho controllato le estenzioni come mi suggerivi. In effetti erano disattivate. Le ho attivate e ho riavviato il server web (easyphp). Purtroppo continuo a ricevere lo stesso messaggio:
Fatal error: Call to undefined function: mysqli_connect().....

reinserisco lo script con quella piccola correzione:

<?php

$cxn=mysqli_connect("localhost","root","","db"); // Stavolta è questa la riga incriminata.
$sql="SELECT comune FROM db.comuni ORDER BY comune";
$resultfede=mysqli_query($cxn,$sql);
echo "<select name='comune'>\n";
while ($row=mysqli_fetch_assoc($resultfede))
{
echo "<option value='{$row['comune']}'>";
echo $row['comune']."\n";
}
echo "</select>";


Ho anche provato a cambiare msqli in mysql, ma poi ricevo altri tipi di errore.
mmm... cosa mi consigli?
 
prova a controllare che dentro la ceartella delle estensioni di PHP vi sia la dll per mysqli.
 
prova a controllare che dentro la ceartella delle estensioni di PHP vi sia la dll per mysqli.

Ho controllato e in effetti non c'è nessuna dll mysqli. (come mai allora Easyphp mi permette di selezionarla nella sua lista??).
Ho tentato di risolvere togliendo "mysqli" e sostituendolo con "mysql". ora lo script mi mostra tutta la pagina (quindi arriva a conclusione), ma mi visualizza anche questo messaggio:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in .....
il nuovo script è questo:
<?php

$cxn=mysql_pconnect("localhost","root","","db");
$sql="SELECT comune FROM db.comuni ORDER BY comune";
$resultfede=mysql_query($cxn,$sql);
echo "<select name='comune'>\n";
while ($row=mysql_fetch_array($resultfede)) /// QUESTA E' SCRITTA BENE SECONDO TE????????
{
echo "<option value='{$row['comune']}'>";
echo $row['comune']."\n";
}
echo "</select>";

?>

Ciao e grazie.
 
EasyPHP ti permette di abilitare l'estensione semplicemente perchè è elencata nel file php.ini.

Prova a sostituire mysql_pconnect con mysql_connect (togli il valore vuoto "" dai dati di connessione), poi al posto di db.comuni scrivi semplicemente "comuni".
 
Ultima modifica:
EasyPHP ti permette di abilitare l'estensione semplicemente perchè è elencata nel file php.ini.

Prova a sostituire mysql_pconnect con mysql_connect (togli il valore vuoto "" dai dati di connessione), poi al posto di db.comuni scrivi semplicemente "comuni".


Ho provato ha fare come mi suggerisci, ma nulla di fatto. Stesso messaggio. :confused: mmm.... accetto suggerimenti :)
 
ma almeno la libreria per MySQL è presente nella cartella delle estensioni di PHP?

Correggi così:
PHP:
$resultfede=mysql_query($cxn,$sql) or die (mysql_error());

e vedi se ti restituisce qualche errore
 
Ultima modifica:
Ho fatto come dici, ma mi restituisce ancora questo:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:.......

Nelle estenzioni è presente questo file: php_mysql.dll
Questo è il codice aggiornato.

<?php

$cxn=mysql_connect("localhost","root","","film"); // (le 2 virgolette vuote sono necessarie per evitare che mi dia un errore inerente la pass)
$sql="SELECT comune FROM comuni ORDER BY comune";
$resultfede=mysql_query($cxn,$sql) or die (mysql_error());
echo "<select name='comune'>\n";
while ($row=mysql_fetch_array($resultfede))
{
echo "<option value='{$row['comune']}'>";
echo $row['comune']."\n";
}
echo "</select>";

?>
 
Prova a modificare il codice così:

Codice:
$cxn=mysql_connect("localhost","root","");
$db = mysql_select_db("film", $cxn)
$sql="SELECT comune FROM comuni ORDER BY comune";
$resultfede=mysql_query($sql, $cxn) or die (mysql_error());
 
Bravo!! grazie a te Trogo e anche all'aiuto di Eliox ora funziona.
Ho dovuto aggiungere solo un punto e virgola nella seconda linea e tutto è apparso come dovrebbe.
In effetti nel sostituire "mysqli" con "mysql" non sapevo che il quarto parametro (che indicava il database) non era più disponibile.
Grazie di cuore. :mavieni:
 

Discussioni simili