Aiuto: aprire nuova finestra con variabile

  • Creatore Discussione Creatore Discussione gnacca
  • Data di inizio Data di inizio

gnacca

Nuovo Utente
5 Nov 2009
8
0
0
57
Cento (FE)
www.vacanzepleinair.com
Vi scrivo perché sono un principiante e, dopo ore di lavoro, sono riuscito a fare quello che seguirà, ma alla fine ottengo un errore.

Quello che vorrei fare è visualizzare su una nuova finestra il meteo di un comune che ho scelto in base ai filtraggi eseguiti, inserendo nell'url il codice comune.

Ho fatto un database meteo con le seguenti tre tabelle:

regioni
id (progressivo)
codice (es: LAZ)
nome (es: Lazio)
province
id (progressivo)
codice_regione (es. LAZ)
codice (es: RM)
nome (es: Roma)
comuni
id (progressivo)
codice_provincia (es: RM)
codice (es: 777)
nome (es: Roma)

Poi ho scritto la seguente parte di programma php

<?php

//connessione al database

$settings_dir = "./Meteo";
require_once("$settings_dir/database.php");

//impostazione variabili

$id_regione="";
$id_provincia="";
$id_comune="";

$id_regione=$_POST['regione'];
$id_provincia=$_POST['provincia'];
$id_comune=$_POST['comune'];
?>

//select regione, provincia e comune

<form action="it_meteo_4.php" method="POST" name="search">
<select name="regione" onchange="document.search.submit()">
<option value="">Scegli regione...</option>
<?php
$sql_regione="SELECT nome,codice FROM regioni ORDER BY nome";
$query_regione=@mysql_query($sql_regione) or die (mysql_error());
while ($rigaR=mysql_fetch_array($query_regione)){
$regione=$rigaR['nome'];
$idRegione=$rigaR['codice'];
echo "<option value='$idRegione'";
if ($id_regione==$idRegione)
echo " selected";
echo ">".$regione ."</option>";
}
?>
</select><select onchange="document.search.submit()" name="provincia">
<option value="">Scegli provincia...</option>
<?php
if(isset($id_regione)){
$sql_provincia="SELECT * FROM province WHERE codice_regione='$id_regione' ORDER BY nome";
$query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
while ($rigaP=mysql_fetch_array($query_provincia)){
$provincia=$rigaP['nome'];
$idProvincia=$rigaP['codice'];
echo "<option value='$idProvincia'";
if ($id_provincia==$idProvincia) {echo " selected";}
echo ">".$provincia."</option>";
}}
?>
</select><select onchange="document.search.submit()" name="comune">
<option value="">Scegli il comune...</option>
<?php
if(isset($id_provincia)){
$sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' ORDER BY nome";
$query_comuni=@mysql_query($sql_comuni) or die (mysql_error());
while ($rigaC=mysql_fetch_array($query_comuni)){
$comune=$rigaC['nome'];
$idComune=$rigaC['codice'];
echo "<option value='$idComune'";
if ($id_comune==$idComune) {echo " selected";}
echo ">".$comune."</option>";
}}
?></select>

//apertura nuova finestra con il codice comune

<a href="javascript:;"onclick="MM_openBrWindow('http://www.forecast.com/forecast.php?id='+comune+'',
'','width=550,height=300');return false;">Apri le previsioni meteo per la tua localit&agrave;</a>
</form>


Purtroppo, la nuova finestra si apre senza la variabile del codice comune e ho il seguente errore [object HTMLSelectElement]

http://www.forecast.com/forecast.php?id=[object HTMLSelectElement]

Non riesco a capire dove sia il problema, perché sono un principiante e chiedo il vostro aiuto per far funzionare questo script.

Ringrazio anticipatamente.

Lorenzo
 
Dove dichiari il valore della variabile "comune" all'interno dello script javascript?
 
Se ho capito bene la sintassi, la variabile sarebbe la '+comune+' scritta nel collegamento per l'apertura della pagina.
Probabilmente, è quì il problema, ma non sono riuscito a capire dove è l'errore, cioè se è la sintassi o di concetto.

Grazie.

Lorenzo
 
La variabile comune rappresenta la select box, non il suo valore, estratto tramite la proprietà value. Modifica così:
Codice:
<a href="javascript:;"onclick="MM_openBrWindow('http://www.forecast.com/forecast.php?id='+comune.value+'',
'','width=550,height=300');return false;">Apri le previsioni meteo per la tua localit&agrave;</a>
 
Scusatemi ancora, ma ho un problema ancora su queste select.
Tutto funziona bene fino ad un certo punto:
- seleziono la regione, tutto ok
- seleziono la provincia, tutto ok
- seleziono il comune, tutto ok
- invio e si apre il link, tutto ok
- cambio regione, si riazzera il campo delle provincie ma non si azzera il campo del comune.
Se in questo momento reinvio il modulo, anche se avevo iniziato la modifica della regione, quindi la provincia mi si era resettata per poter selezionare le provincie della regione selezionata, il comune è rimasto quello precedente e mi si apre la pagina del comune precedente, perché non avendo selezionato ancora la provincia, mi è rimasto il precedente comune.
Come si può resettare tutti i campi all'invio del modulo?
Oppure, come si può resettare il comune quando cambio la regione, dal momento che se tengo la stessa regione e cambio la provincia, il comune si resetta?
Grazie ancora per le risposte.

Lorenzo.
 
Scusate, ma a forza di lavorarci attaccato ho risolto anche questo mio problema.

Per resettare la select dei comuni al variare della select delle regioni basta controllare con AND anche il codice regione, appositamente inserito nella tabella dei comuni.

$sql_comuni="SELECT * FROM comuni WHERE codice_provincia='$id_provincia' AND codice_regione='$id_regione' ORDER BY nome";

Spero che questo possa far risparmiare tempo ai neofiti come me, che per una banalità ho dovuto studiare un piao di gg.

Saluti.

Lorenzo Gnaccarini
 

Discussioni simili