• User

    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


  • User Attivo

    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";
    
    

  • User

    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


  • User

    ma che scemo....
    bastava aggiungere ....&p={$_GET['p']}" al form action!
    :sbonk:

    grazie lo stesso!


  • Super User

    tutto è bene ciò che finisce bene. 🙂