- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema settaggio variabili
-
problema settaggio variabili
hola,
dunque ho questo codice:
[php] <?php
$query = mysql_query("SELECT abbonamento FROM tbl_product WHERE pd_id = {$_GET['p']}")or die(mysql_error());
while($row = mysql_fetch_array($query))if($row['abbonamento']=='N') {
?>
<script type="text/javascript">var shipping = new Object()
shipping["1"] = [{value:"1", text:"<?php echo $lang['carta']; ?>"},
{value:"2", text:"<?php echo $lang['contrassegno']; ?>"},
{value:"3", text:"<?php echo $lang['bollettino']; ?>"}];
shipping["2"] = [{value:"1", text:"<?php echo $lang['carta']; ?>"},
{value:"4", text:"<?php echo $lang['bonifico']; ?>"}];
shipping["3"] = [{value:"1", text:"<?php echo $lang['carta']; ?>"},
{value:"4", text:"<?php echo $lang['bonifico']; ?>"}];function setCost(chooser) {
var newElem;
var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
var costChooser = chooser.form.elements["id_pag"];
while (costChooser.options.length) {
costChooser.remove(0);
}
var choice = chooser.options[chooser.selectedIndex].value;
var db = shipping[choice];
newElem = document.createElement("option");
newElem.text = "<?php echo $lang['pag2']; ?>";
newElem.value = "";
costChooser.add(newElem, where);
if (choice != "") {
for (var i = 0; i < db.length; i++) {
newElem = document.createElement("option");
newElem.text = db*.text;
newElem.value = db*.value;
costChooser.add(newElem, where);
}
}
}</script>
<select name="id_area" onchange="setCost(this)">
<option value="" selected="selected"><?php echo $lang["area"]; ?></option><option value="1"><?php echo $lang["italia"]; ?></option>
<option value="2"><?php echo $lang["Europa"]; ?></option>
<option value="3"><?php echo $lang["extraeuropa"]; ?></option>
</select>
</td></tr>
<tr><td colspan="8">
<select name="id_pag" onchange="this.form.submit();">
<option value="" selected="selected"><?php echo $lang["pag"]; ?></option>
</select><?php
} else { echo "fa qualcos'altro";}?>[/php] n pratica cosa succede: quando ricevo la var $_GET['p'] ho una condizione if, in cui if($row['abbonamento']=='N') {
//mi carica la select multipla
} else { echo "fa qualcos'altro";}
?>
il problema è che quando seleziono le opzioni dalla select il form action mi fa l'update della tabella, ma perdo il valore di $_GET['p'], quindi mi genera un errore di notice e uno di sql.
come posso aggirare l'ostacolo?
grazie
-
Non ho capito bene il problema. Ma se il problema è il notice è sufficiente che controlli che la variabile sia valorizzata:
if (isset($_GET['p'])) echo "bene"; else echo "Manca";
-
provo a spiegarmi meglio.
da una pagina ricevo una var $_GET['p'].
eseguo la query [php]$query = mysql_query("SELECT abbonamento FROM tbl_product WHERE pd_id = {$_GET['p']}"[/php]controllo che tipo di dato è inserito nel campo "abbonamento".
se è 'N' mi carica il codice JS che ho postato e altro non è che una select multipla.
Se il dato è 'S', mi carica qualcos'altro. ok?mettiamo caso che il risultato della query sia 'N'.
Seleziono dalla select le opzioni che mi interessano e passo il tutto al submit.
il form action fa quello che deve fare e mi ritorna la pagina aggiornata ( sono le spese di spedizone in un carrello ).
e proprio lì, quando riaggiorno la pagina ( NON il refresh ) che perdo il valore di $_GET['p'] e mi da un errore non solo di notice ma anche di SQL.quindi dovrei fare in modo che $_GET['p'] sia sempre settata....:?...forse?
spero di essere stato più chiaro
-
ma che scemo....
bastava aggiungere ....&p={$_GET['p']}" al form action!
grazie lo stesso!
-
tutto è bene ciò che finisce bene.