xTuMiOx ha scritto:
Buona sera a tutti, vi scrivo qui perchè penso che il mio problema sia relativo al php, ma dato che non sono un espertissimo e mi sto cimentando nella programmazione devo chiedere a voi..
Devo fare una pagina web che contiene una listbox che ho già riempito con tutti i valori di un vettore che contiene le province italiane. A questo punto devo fare in modo che ad ogni cambio del valore selezionato nella listbox, la pagina si ricarichi e che appaiano i valori contenuti in un database mysql con una lista di persone che appartengono a quella provincia.
La pagina si ricarica, solo che non so dove mettere il codice per fare apparire la tabella con il nome e cognome della persona residente nella provincia selezionata e non riesco nemmeno a tenere selezionata nella listbox il valore selezionato dopo il reload della pagina.
Dunque, nel tuo codice c'è solo quel che serve per la front-page, mentre tu ora hai bisogno di (1) script php che cerca le persone nel database in base alla provincia selezionata e (2) stampa della tabella con i suddetti valori (per esempio metterò nome e cognome).
Per prendere il valore passato tramite select si utilizzano le variabili dell'array $_POST (in questo caso la chiave cercata è "sel_provincia", che corrisponde all'attributo NAME del SELECT). Una volta catturata la provincia selezionata, la usiamo per fare una selezione di righe nel database mysql (quindi: connettersi al db, selezionare una tabella, eseguire la query) e tramite un ciclo WHILE riempiamo un array locale con i valori Nome e Cognome per ogni persona trovata, dopodichè chiudiamo la connessione al database, liberando la risorsa. Ora abbiamo un array che contiene tanti piccoli array divisi in "Nome" e "Cognome", perciò con un semplice ciclo FOREACH (che abbiamo utilizzato anche per riempire il selezionatore di provincia) stampiamo tante righe con il risultato che ognuna contiene una stringa tipo "Cognome, Nome".
Ora posto il codice, se hai ancora dubbi chiedi pure
P.S.: ho spostato l'evento JavaScript "onchange" nell'esecuzione stessa dello script, in modo da conformarsi un po' agli standard XHTML.
<html>
<head>
<title>Home Page</title>
<style type="text/css" media="all">
@import "global.css";
</style>
</head>
<script type="text/javascript">
<!--
function invia() {
document.form1.submit();
}
window.onload = function() {
document.getElementById("sel_provincia").onchange = function() { invia(); }
}
-->
</script>
<?php
$province = array('Agrigento','Alessandria','Ancona','Aosta','Aquila','Arezzo','Ascoli Piceno','Asti','Avellino','Bari','Barletta Andria Trani',
'Belluno','Benevento','Bergamo','Biella','Bologna','Bolzano','Brescia','Brindisi','Cagliari','Caltanissetta','Campobasso',
'Carbonia Iglesias','Caserta','Catania','Catanzaro','Chieti','Como','Cosenza','Cremona','Crotone','Cuneo','Enna','Fermo','Ferrara',
'Firenze','Foggia','Forlì Cesena','Frosinone','Genova','Gorizia','Grosseto','Imperia','Isernia','La Spezia','Latina','Lecce',
'Lecco','Livorno','Lodi','Lucca','Macerata','Mantova','Massa Carrara','Matera','Medio Campidano','Messina','Milano','Modena',
'Monza Brianza','Napoli','Novara','Nuoro','Ogliastra','Olbia Tempio','Oristano','Padova','Palermo','Parma','Pavia','Perugia',
'Pesaro Urbino','Pescara','Piacenza','Pisa','Pistoia','Pordenone','Potenza','Prato','Ragusa','Ravenna','Reggio Calabria',
'Reggio Emilia','Rieti','Rimini','Roma','Rovigo','Salerno','Sassari','Savona','Siena','Siracusa','Sondrio','Taranto','Teramo',
'Terni','Torino','Trapani','Trento','Treviso','Trieste','Udine','Varese','Venezia','Verbania','Vercelli','Verona',
'Vibo Valentia','Vicenza','Viterbo');
?>
<body>
<div id="wrapper">
<div id="header">
<div id="logobox">
</div>
<div id="headimg"> </div>
</div>
<div id="topnavi">
<div class="spacing1">
<ul>
<li class="selected"><a href="benvenuto.php" title="Home page">Home</a></li>
<li><a href="TryLogout.php" title="Logout">Logout</a></li>
</ul>
</div>
</div>
<div id="bodybox">
<div id="subnavi">
</div>
<div id="content">
<form name="form1" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<label for="sel_provincia">Seleziona una provincia:</label>
<select id="sel_provincia" name="sel_provincia">
<option></option>
<?php
foreach ($province as $provincia)
echo "\t\t\t<option".((isset($_POST["sel_provincia"])&&$provincia==$_POST["sel_provincia"])?' selected="selected"':"").">$provincia</option>\n";
?>
</select>
</form>
<?php
if (isset($_POST["sel_provincia"]) && !empty($_POST["sel_provincia"])):
define ("SERVER", "localhost");
define ("USERNAME", "root");
define ("PASSWORD", "");
define ("NOME_DATABASE", "programmatori");
$database = mysql_connect(SERVER, USERNAME, PASSWORD) or die("Impossibile connettersi al server MySQL");
mysql_select_db(NOME_DATABASE, $database) or die("Impossibile aprire il database");
$query_sql = "SELECT Nome,Cognome FROM persone WHERE Provincia = '{$_POST["sel_provincia"]}'";
$exec_sql = mysql_query($query_sql, $database) or die("Selezione non riuscita");
$persone = array();
while ($row = mysql_fetch_object($exec_sql))
$persone[] = array("Nome"=>$row->Nome, "Cognome"=>$row->Cognome);
mysql_close($database);
?>
<div id="tabella_nomi">
<h3>Persone in provincia di <?php echo $_POST["sel_provincia"]; ?>:</h3>
<?php foreach ($persone as $persona) echo "\t\t\t<div>{$persona["Cognome"]}, {$persona["Nome"]}</div>\n"; ?>
</div>
<?php endif; ?>
</div>
</div>
<div id="footer">
<p>Fine pagina.</p>
</div>
</div>
</body>
</html>