Ciao a tutti,
innanzi tutto non so se il problema dipenda dal codice 'PHP' , o da quel pezzo di codice 'js' inserito, comunque non spaventatevi della lunghezza del messaggio, ma per i guru del web è semplicissimo.
Il problema, riassumendolo, è questo:
ho un 'form' con due campi <select ... , il primo mi carica le marche degli pneumatici, il secondo è un campo dinamico e mi carica i modelli degli pneumatici della marca scelta nel primo campo. E fin qui tutto bene.
Il problema è che quando quando clicco sulla marca, carica bene si i modelli abbinati alla marca, ma immediatamente succedono due cose che non vorrei:
1) Il valore della marca scelta non m rimane in vista sul primo campo select ma mi si azzera.
2) Più importante! Mi si azzera anche la variabile '$set' diventando sconosciuta, e quindi non mi da la possibilita di andare avanti con la query 'select modello ....'.
In poche parole è come se mi azzerasse tutte le variabili dichiarate prima del richiamo della 'funzione' -- onchange="ricarica(this)"; --
Il codice della pagina "cerca_pneumatici.php" :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CMS: Pneumatici.</title>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="./ricarica.function.js"></script>
</head>
<body>
<h1>Cerca pneumatici.</h1>
<?php
$idset = $_GET['id'];
if ($idset == '1') {
$set='Auto';
}
if ($idset == '2'){
$set='Moto';
}
if ($idset == '3') {
$set='Quad';
}
echo "
Aggiungi pneumatici nel settore: $set .</p>";
$cnsdb = @mysql_connect('host', 'user', 'pass');
if (!$cnsdb) {
exit('
Errore di connessione!</p>');
}
$seldb = mysql_select_db('pneumaticidb');
if (!$seldb) {
exit('
Errore: database non selezionato!</p>');
}
$marche = @mysql_query("SELECT id, marca
FROM marca", $cnsdb);
if (!$marche) {
exit('
Lista marche non caricata!</p>');
}
?>
<form action="modello.php" method="post">
Scegli la Marca:</p>
<label for="marca">Marca:</label>
<select name="idmarca" size="1" onchange="ricarica(this);">
<option selected value="">Tutti</option>
<?php
while ($marca=mysql_fetch_array($marche)) {
$idmarca=$marca['id'];
$nomemarca=htmlspecialchars($marca['marca']);
echo "<option value='$idmarca'>$nomemarca</option>\n";
}
if (isset($_GET['idmarca'])) {
$idmarca=$_GET['idmarca'];
} else {
$idmarca="";
}
$modelli = @mysql_query("SELECT modello.id, modello
FROM modello, settore
WHERE idmar='$idmarca'
AND settore='$set'
And idset=settore.id", $cnsdb);
if (!$modelli) {
exit('
Lista modelli non caricata!</p>');
}
?>
</select>
Scegli il modello:</p>
<label for="modello">Modello:</label>
<select name="idmodello" size="1">
<option selected value="">Tutti</option>
<?php
while ($modello=mysql_fetch_array($modelli)) {
$idmodello=$modello['id'];
$nomemodello=htmlspecialchars($modello['modello']);
echo "<option value='$idmodello'>$nomemodello</option>\n";
}
?>
</select>
<input type="submit" value="VAI" />
</form>
Torna a : Gestione Pneumatici.</p>
</body>
</html>
E il codice '.js' esterno "ricarica.function.js"
function ricarica(ObjectSelect) {
var Temp=ObjectSelect.options[ObjectSelect.selectedIndex].value;
if(Temp!="")
window.location="./cerca_pneumatici.php?idmarca="+(Temp);
}
Avete delle soluzioni per questo problema che mio porto avanti da diversi giorni ?
Grazie per ora.
Ciao.