Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Post Id Name

  1. #1

    Post Id Name

    FILE INDEX.PHP
    Codice PHP:
    <form action="clienti/form_esercizi.php" method="post" name="form">
    <
    fieldset>
    <
    label for="province">province</label>

    <
    select name="nomeprovince" id="province" onChange="loadList('comuni', getSelected(this))" >
    </
    select>

    <
    label for="comuni">comuni</label>

    <
    select name="nomecomuni" id="comuni" onChange="loadList('cap', getSelected(this))">
    </
    select>

    <
    label for="cap">cap</label>

    <
    select name="nomecap" id="cap">
    </
    select>

    <
    input type="submit" name="submit" value="Invia" />
    </
    fieldset>
    </
    form>

    <
    script type="text/javascript">
    //<![CDATA[
    loadList('province'0);
    //]]>
    </script> 
    FILE LISTS.JS
    Codice PHP:
    var xmlHttp getXmlHttpObject();

    function 
    loadList(tbid){
    xmlHttp.open('GET''request.php?table='+tb+'&id='+idtrue);
    xmlHttp.onreadystatechange stateChanged;
    xmlHttp.send(null);
    }
    function 
    addOption(selectvaluetext) {
        
    //Aggiunge un elemento <option> ad una lista <select>
        
    var option document.createElement("option");
        
    option.value value,
        
    option.text text;
        try {
            
    select.add(optionnull);
        } 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 == 'province') {
                        
    addOption (select0'-- Seleziona la provincia --');
                    }
                    if(
    listId == 'comuni') {
                    
    addOption (select0'-- Seleziona il comune --');
                    }

                    var 
    limit values.length;
                    
                    for(
    i=0limiti++) {
                        var 
    pair values[i].split('|');
                        
    //aggiunge un elemento <option>
                        
    addOption(selectpair[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;

    FILE REQUEST.PHP
    Codice PHP:
    <?php
    require 'dbconfig.php';
    $conn mysql_connect(DB_HOSTDB_USERDB_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 
    'province':
            
    $sql="SELECT id, nome FROM `$tb` ORDER BY nome";
            break;
        case 
    'comuni':
            
    $sql="SELECT id, nome FROM `$tb` WHERE id_province=$pid ORDER BY nome";
            break;
        case 
    'cap':
            
    $sql="SELECT id, nome FROM `$tb`WHERE id_comuni=$pid";
            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';');
    ?>
    PER FUNZIONARE FUNZIONA, MA MI PASSA GLI ID DEI CAMPI DEL DATABASE E NON I NOMI,
    PERCHE'?

  2. #2
    L'attributo "name" è deprecato: http://www.w3.org/TR/xhtml1/diffs.html#h-4.10

    Se comunque specifichi sia "id" che "name" (che formalmente svolgono la stessa funzione) "id" ha la precedenza.

  3. #3
    forse non mi sono spiegato bene...
    con i file che ho postato popolo dinamicamente 3 select.
    Una volta popolate, devo inviare quei valori ad un altra tabella del db, ma in questa vengono scritti gli id dei record e non i nomi.

    con questo popolo una select
    Codice PHP:
    <select class="text" id="province" name="[B]provincia[/B] " onchange="loadList('comuni', getSelected(this))"/> 
    qui creo una variabile che riceve il dato
    Codice PHP:
    $provincia $_POST['[B]provincia[/B]']; 
    la uso nella query che mi deve inserire i dati nella nuova tabella, ma invece che il nome, viene inserito l'id numerico corrispondente, nonostante nel campo select visualizzo correttamente il nome.
    perchè?provincia

  4. #4
    Penso di aver afferrato. Dato il seguente <select>:

    Codice PHP:
    <select name="identity" id="identity">
        <
    option value="0">&#160;</option>
        
    <option value="1">ntd</option>
        <
    option value="2">rickystra</option>
    </
    select
    quando sono selezionate le opzioni viene passato l'attributo "value" a $_POST (ergo 0, 1 o 2). Se vuoi passare il nome devi usarlo come "value":

    Codice PHP:
    <select name="identity" id="identity">
        <
    option value=" ">&#160;</option>
        
    <option value="ntd">ntd</option>
        <
    option value="rickystra">rickystra</option>
    </
    select
    Nel tuo caso, che generi <option>s dinamicamente, devi modificare il javascript per ripetere il nome anche come valore:

    Codice PHP:
    ...
                        
    //aggiunge un elemento <option>
                        
    addOption(selectpair[1], pair[1]); 
    ... 

  5. #5
    ho provato a fare come hai detto tu e funziona solo con la prima select, la seconda e terza select non vengono generate; ho provato ad inviare lo stesso i dati e mi ha inserito correttamente il nome della provincia.........
    risolto un problema se ne presenta un altro.......
    e adesso?

  6. #6
    La seconda select non funziona perchè, ottenendo come value un nome e non un id numerico, la variabile $pid non è processata correttamente e quindi la query case comuni non può essere eseguita.


    come risolvo?

  7. #7
    Originariamente inviato da rickystra
    e adesso?
    E adesso sei in braghe di tela. Effettivamente fai tutte le query AJAX usando gli id. Mi chiedo: perché una volta che hai ottenuto gli id non rifai la query (come è uso) per ottenere tutti i dati che vuoi?

    Codice PHP:
    $provinciaid $_POST['provincia'];
    $sql "SELECT nome FROM `province` WHERE `id`=$provinciaid"
    // etc etc 

  8. #8

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 © 2025 vBulletin Solutions, Inc. All rights reserved.