Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144

    Select dinamica (stessa tabella db)

    Ciao a tutti!
    Allora vorrei porre una domanda...

    Ho trovato in rete uno script per le select dinamiche in ajax.
    L'ho modificato e adattato alle mie esigenze (solo due select, non tre) e ho apportato qualche modifica al codice.

    Ora mi ritrovo con tre file:
    1) uno php che contiene il form seguente:
    Codice PHP:
    <script type="text/javascript" src="listspren.js"></script>

    <form name="modulo" enctype="multipart/form-data" action="pagina.php" 
     method="post" >

    <label for="pren">Prenotazione</label>

    <select name="pren" id="pren" onChange="loadList('pren1', getSelected(this))"  >
    </select>

    <label for="pren1">Bla bla bla</label>

    <select name="pren1" id="pren1">
    </select>




    <input type="submit" name="Submit" value="Procedi"> 



    <script type="text/javascript">
    //<![CDATA[
    loadList('pren', 0);
    //]]>
    </script>
        
    </form> 
    ecco adesso il file listspren.js contiene funzioni ajax, tra cui la loadlist mi invia al terzo file (requestpren.php) il nome della tabella e l'id.
    Codice PHP:
    function loadList(tbid){
    xmlHttp.open('GET''requestpren.php?table='+tb+'&id='+idtrue);
    xmlHttp.onreadystatechange stateChanged;
    xmlHttp.send(null);

    il file requestpren.php riceve il nome tabella e l'id e fa due query diverse in base al nome della tabella passata (la prima se si tratta della prima tabella -> prima select ... la seconda se ho già scelto il valore nella prima select e allora mi andrà a riempire la seconda select con i valori della seconda tabella)...
    Codice PHP:
    session_start();
    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 
    'pren':
            
    $sql="SELECT ....
            FROM `
    $tb`
            WHERE ..... 
            ORDER BY ....;
            break;
            
            case 'pren1':
            
    $sql="SELECT ....
    FROM `$tbWHERE ... ORDER BY ....";
            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, ';');
    ?> 
    Ok, fin qua tutto bene e funziona!
    Ma la mia domanda è... se volessi prendere i dati da riempire le due select dalla stessa tabella e non da due, come posso fare? Perchè ovviamente se metto il nome della stessa tabella es. pren , in request.php nello switch sarebbero due case pren e quindi non saprebbe dove andare o cosa fare (in effetti provando non va a funzionare il riempimento della seconda select...).

    Qualcuno di voi ha mica un' idea?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    144
    nessuno ha un idea? sto impazzendo

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.