Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    piccola modifica select concatenate - newbie js

    Buongiorno ragazzi
    mentre con php comincio a cavicchiarmela benino, sono proprio new-new-new di js.
    Sto cercando di implementare un menu select a cascata gestito da script js. Funziona benissimo; il mio problema è che non riesco a "postare" le variabili, mi prende inevitabilmente gli "id" sul quale è basato lo script.
    Ho provato a cambiare i valori :
    addOption(select, pair[0], pair[1]); nel file list.js e combinandoli con
    $out .= $row[0] . '|' . $row[1] . ';'; del file "request.php" .

    Se cambio il primo $row[0] in $row[1] la select mi prende la variabile, ma (ovviamente ) smette di funzionare la seconda select che è basata sull'id della prima.
    Non riesco a capire cosa modificare correttamente.

    Mi date una mano ?

    Posto il codice dei due file

    list.js
    var xmlHttp = getXmlHttpObject();

    function loadList(tb, id){
    xmlHttp.open('GET', 'request.php?table='+tb+'&id='+id, true);
    xmlHttp.onreadystatechange = stateChanged;
    xmlHttp.send(null);
    }
    function addOption(select, value, text) {
    //Aggiunge un elemento <option> ad una lista <select>
    var option = document.createElement("option");
    option.value = value,
    option.text = text;
    try {
    select.add(option, null);
    } catch(e) {
    //Per Internet Explorer
    select.add(option);
    }
    }
    function getSelected(select) {
    //Ritorna il valore dell'elemento <option> selezionato in una lista
    return select.options[select.selectedIndex].value;
    }
    function stateChanged() {
    if(xmlHttp.readyState == 4) {
    //Stato OK
    if (xmlHttp.status == 200) {
    var resp = xmlHttp.responseText;

    if(resp) {
    //Le coppie di valori nella striga di risposta sono separate da ;
    var values = resp.split(';');
    //Il primo elemento Ë l'ID della lista.
    var listId = values.shift();
    var select = document.getElementById(listId);
    //Elimina i valori precedenti
    while (select.options.length) {
    select.remove(0);
    }

    if(listId == 'regioni') {
    addOption (select, 0, '-- Selezionare regione --');
    }
    var limit = values.length;

    for(i=0; i < limit; i++) {
    var pair = values[i].split('|');
    //aggiunge un elemento <option>
    addOption(select, pair[0], pair[1]);
    }
    }
    } else {
    alert(xmlHttp.responseText);
    }
    }
    }

    function getXmlHttpObject()
    {
    var xmlHttp=null;
    try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
    // Internet Explorer
    try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    return xmlHttp;
    }

    request.php
    <?php
    require 'dbconfig.php';
    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die;
    mysql_select_db(DB_NAME) or die;
    //I valori in input vanno verificati
    //id deve essere un valore numerico
    $pid = (int)$_REQUEST['id'];
    //maschera eventuali caratteri speciali in table
    $tb = mysql_real_escape_string($_REQUEST['table'], $conn);

    switch($tb) {
    case 'regioni':
    $sql="SELECT id, nome FROM `$tb` ORDER BY nome";
    break;
    case 'province':
    $sql="SELECT id, nome FROM `$tb` WHERE id_regione=$pid ORDER BY nome";
    break;
    }
    //Il primo elemento della risposta è il nome della tabella (= attributo ID del tag select)
    $out="$tb;";
    if($result = mysql_query($sql, $conn)) {
    while ($row = mysql_fetch_row($result)) {
    $out .= $row[0] . '|' . $row[1] . ';';
    }
    }
    //Rimuove il carattere ; in coda
    echo rtrim($out, ';');
    ?>

  2. #2

    Re: piccola modifica select concatenate - newbie js

    Originariamente inviato da senzaesclusiva
    Buongiorno ragazzi
    mentre con php comincio a cavicchiarmela benino, sono proprio new-new-new di js.
    Sto cercando di implementare un menu select a cascata gestito da script js. Funziona benissimo; il mio problema è che non riesco a "postare" le variabili, mi prende inevitabilmente gli "id" sul quale è basato lo script.
    Ho provato a cambiare i valori :
    addOption(select, pair[0], pair[1]); nel file list.js e combinandoli con
    $out .= $row[0] . '|' . $row[1] . ';'; del file "request.php" .

    ?>
    uhmmm...mi sa che a questo problema non nci sia soluzione se non riscrivendo del tutto lo script.

    Se è tanto vero che il primo valore della select Regione, [id] serve a riaggiornare attraverso l' ID correlato la select Provincia, poco si puo' fare, anzi nulla.
    Il valore postato dalla form sarà sempre l'ID , mentre il valore sarà solo visualizzato.

    Non ci ho riflettuto prima , ma non si puo' fare nulla in questo caso .

    Qualcuno puo' suggerirmi uno script che possa permettere di postare ( sempre sincronizzando Regioni/Province) il valore al posto dell'ID?

    Tnx
    Ed

  3. #3

    Re: Re: piccola modifica select concatenate - newbie js

    Originariamente inviato da senzaesclusiva
    uhmmm...mi sa che a questo problema non nci sia soluzione se non riscrivendo del tutto lo script.

    Se è tanto vero che il primo valore della select Regione, [id] serve a riaggiornare attraverso l' ID correlato la select Provincia, poco si puo' fare, anzi nulla.
    Il valore postato dalla form sarà sempre l'ID , mentre il valore sarà solo visualizzato.

    Non ci ho riflettuto prima , ma non si puo' fare nulla in questo caso .

    Qualcuno puo' suggerirmi uno script che possa permettere di postare ( sempre sincronizzando Regioni/Province) il valore al posto dell'ID?

    Tnx
    Ed
    Ragazzi, vi ringrazio tantissimo ...ma non tutti assieme per favore!!!
    Mi mandate in confusione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.