Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 74
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    Select dinamiche in Ajax (valori prelevati da DataBase)

    Ciao a tutti,
    apro questa discussione perchè ho visto che il mio problema e che ho risolto, è comune a molte persone, ovvero, popolare una select, in base alla scelte fatta su un'altra select.

    La mia necessità, però, è nata dal fatto che i valori della prima e della seconda select, venissero presi da un database e non da un array già pronto in javascript.

    Ciò mi permette di poter modificare i campi direttamente sul db e non sul javascript, quindi chiunque può farlo costruendo un semplice editor.

    Alcune parti del Javascript che ho usato le ho prese dal web e le ho modificate in base alle mie esigenze, il resto l'ho realizzato da zero.

    L'esempio che voglio portare è:

    - scelgo un continente sulla prima select
    - popolo la seconda select con gli stati appartenenti al continente che ho scelto nella prima select

    cosa ho usato:

    - database in MySQL
    - PHP
    - Ajax

    Non ho molta dimestichezza con Ajax, ma ho capito come funziona, girovagando su internet e studiando l'ogetto "XMLHttpRequest", fondamentale per realizzare uno script del genere.

    La prima cosa che ho fatto è stato il disegno del database, con la seguente struttura:

    nome database: test

    nome tabella: l1 (contiene i continenti, ecco il DUMP):

    -- phpMyAdmin SQL Dump
    -- version 2.10.0.2
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generato il: 22 Mag, 2007 at 05:10 PM
    -- Versione MySQL: 5.0.37
    -- Versione PHP: 5.2.1

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- Database: `test`
    --

    -- --------------------------------------------------------

    --
    -- Struttura della tabella `l1`
    --

    CREATE TABLE `l1` (
    `l1_id` int(11) NOT NULL auto_increment,
    `l1_name` text collate latin1_general_ci NOT NULL,
    `l1_link` text collate latin1_general_ci NOT NULL,
    `l1_order` int(11) NOT NULL,
    PRIMARY KEY (`l1_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=6 ;

    --
    -- Dump dei dati per la tabella `l1`
    --

    INSERT INTO `l1` VALUES (1, 'America', '', 100);
    INSERT INTO `l1` VALUES (2, 'Europa', '', 200);
    INSERT INTO `l1` VALUES (3, 'Asia', '', 300);
    INSERT INTO `l1` VALUES (4, 'Oceania', '', 400);
    INSERT INTO `l1` VALUES (5, 'Africa', '', 500);
    nome tabella: l2 (contiene gli stati, ecco il DUMP):

    -- phpMyAdmin SQL Dump
    -- version 2.10.0.2
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generato il: 22 Mag, 2007 at 05:10 PM
    -- Versione MySQL: 5.0.37
    -- Versione PHP: 5.2.1

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- Database: `test`
    --

    -- --------------------------------------------------------

    --
    -- Struttura della tabella `l2`
    --

    CREATE TABLE `l2` (
    `l2_id` int(11) NOT NULL auto_increment,
    `l2_name` text collate latin1_general_ci NOT NULL,
    `l2_link` text collate latin1_general_ci NOT NULL,
    `l2_order` int(11) NOT NULL,
    `l2_l1id` int(11) NOT NULL,
    PRIMARY KEY (`l2_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=9 ;

    --
    -- Dump dei dati per la tabella `l2`
    --

    INSERT INTO `l2` VALUES (1, 'Giappone', '', 100, 3);
    INSERT INTO `l2` VALUES (2, 'Cina', '', 200, 3);
    INSERT INTO `l2` VALUES (3, 'Mongolia', '', 300, 3);
    INSERT INTO `l2` VALUES (4, 'Stati Uniti', '', 100, 1);
    INSERT INTO `l2` VALUES (5, 'Canada', '', 200, 1);
    INSERT INTO `l2` VALUES (6, 'Messico', '', 300, 1);
    INSERT INTO `l2` VALUES (7, 'Italia', '', 100, 2);
    INSERT INTO `l2` VALUES (8, 'Spagna', '', 200, 2);
    Successivamente, ho realizzato 4 pagine in php:
    - inc/conn.inc.php (pagina di connessione al database)
    - inc/class/select.class.php (pagina dei metodi di selezione dei campi)
    - get.php (pagina di iterazione con il javascript)
    - index.php (pagina di visualizzazione esempio)

    ecco il codice relativo alle 4 pagine (ovviamente da 4 pagine se ne può fare anche una o due, ma io per comodità ho scelto di separare il codice):

    pagina "inc/conn.inc.php":

    <?php
    // Inizio - Connessione DataBase
    $host = 'localhost';
    $login = 'root';
    $password = 'password';
    $db = 'test';
    $conn = mysql_connect($host,$login,$password);
    mysql_select_db($db,$conn);
    // Fine - Connessione DataBase
    ?>
    pagina inc/class/select.class.php:

    <?php
    class select{

    function select(){
    }

    function getL1($id=''){
    if(!empty($id)){
    $sSQL = "SELECT * FROM l1 WHERE l1_id = $id";
    }else{
    $sSQL = "SELECT * FROM l1 Order by l1_order";
    }
    $ris = mysql_query($sSQL);
    while($row = mysql_fetch_assoc($ris)){
    $list[] = array('l1_id' => $row["l1_id"],
    'l1_name' => $row["l1_name"]);
    }
    return $list;
    }

    function getL2($id){
    $sSQL = "SELECT * FROM l2 WHERE l2_l1id = $id Order By l2_order";
    $ris = mysql_query($sSQL);
    while ($row = mysql_fetch_assoc($ris)) {
    $list[] = array('l2_id' => $row["l2_id"],
    'l2_name' => $row["l2_name"]);
    }
    return $list;
    }

    function getL3($id){
    $sSQL = "SELECT * FROM l3 WHERE l3_l2id = $id Order By l3_order";
    $ris = mysql_query($sSQL);
    while ($row = mysql_fetch_assoc($ris)) {
    $list[] = array('l3_id' => $row["l3_id"],
    'l3_name' => $row["l3_name"]);
    }
    return $list;
    }

    }
    ?>
    pagina "get.php":

    <?
    include('inc/conn.inc.php');
    include('inc/class/select.class.php');
    $id = $_REQUEST['id'];
    $obj = new select();
    $l1 = $obj->getL1($id);
    $Js = '';
    for($x=0; $x<count($l1); $x++){
    $l2 = $obj->getL2($l1[$x]['l1_id']);
    for($y=0;$y<count($l2);$y++){
    if($y < (count($l2)-1)){
    $end = ",";
    }else{
    $end = "";
    }
    $Js .= $l2[$y]['l2_id']."-".$l2[$y]['l2_name'].$end;
    }
    }
    //echo "text";
    echo $Js;
    ?>
    pagina "index.php":

    <?
    include('inc/conn.inc.php');
    include('inc/class/select.class.php');
    $obj = new select();
    $l1 = $obj->getL1();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it">
    <head>
    <title>Select dinamiche con dati provenienti da Database</title>
    <script type="text/javascript">

    var http = createRequestObject();

    function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
    ro = new XMLHttpRequest();
    }
    return ro;
    }

    function loading(){
    var id = document.getElementById('l1').value;
    http.open('GET','get.php?id='+id, true);
    http.onreadystatechange = getState;
    http.send(null);
    }

    function getState(){
    var newOption;
    var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;
    var State = document.getElementById('l2');
    while (State.options.length) {
    State.remove(0);
    }
    id = document.getElementById('l1').value;
    if(id == 'sel'){
    document.getElementById('l2').disabled = true;
    newOption = document.createElement("option");
    newOption.value = 'sel';
    newOption.text = 'Seleziona uno Stato:';
    State.add(newOption, where);
    }else{
    if(http.readyState == 4){
    if (http.status == 200) {
    var response = http.responseText;
    if(response == ''){
    document.getElementById('l2').disabled = true;
    newOption = document.createElement("option");
    newOption.value = 'sel';
    newOption.text = 'Nessuna voce';
    State.add(newOption, where);
    }else{
    coppia = response.split(',');
    max = coppia.length;
    newOption = document.createElement("option");
    newOption.value = 'sel';
    newOption.text = 'Seleziona uno Stato:';
    State.add(newOption, where);
    for(x=0;x<max;x++){
    val = coppia[x].split('-');
    newOption = document.createElement("option");
    newOption.value = val[0];
    newOption.text = val[1];
    State.add(newOption, where);
    }
    document.getElementById('l2').disabled = false;
    }
    }
    }
    }
    }

    </script>

    </head>
    <body>
    <form name="form">
    <div id="content">
    <div id="label1">
    Select 1
    </div>
    <div id="select1">
    <select name="l1" id="l1" onchange="loading()">
    <option value="sel" selected="selected">Seleziona un Continente:</option>
    <?
    for($x=0;$x<count($l1);$x++){
    ?>
    <option value="<?=$l1[$x]['l1_id']?>"><?=$l1[$x]['l1_name']?></option>
    <?
    }
    ?>
    </select>
    </div>
    <div id="label2">
    Select 2
    </div>
    <div id="select2">
    <select name="l2" id="l2" disabled>
    <option value="sel" selected="selected">Seleziona uno Stato:</option>
    </select>
    </div>
    </div>
    </form>
    </body>
    </html>
    Spero di non essermi dimenticato di qualcosa...

    Conclusione:

    Posto tutto il codice perchè mi piace condividerlo (viva l'Open Source) e perchè ritengo che, se pur funzionante (l'ho testato solo con Explorer), sicuramente può essere migliorato; ripeto, è la prima cosa che faccio in Ajax, quindi si accettano consigli e migliorie su questo argomento.

    Inoltre, tengo a precisare che lo script è rivolto a coloro che hanno già dimestichezza con php e che la discussione va fatta solo ed esclusivamente su argomenti inerenti ad Ajax.

    Saluti a tutti, Max
    http://www.mdlwork.com

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    Nel frattempo... pubblico la seconda versione

    Questa seconda versione, invece, ha tre select in cascata (invece di due); esempio:

    - seleziono il Continente
    - poi selezione la Nazione
    - poi seleziono la Città

    Nome Database: test

    Nome Tabella: l1 (tabella Continenti)

    Codice PHP:
    -- phpMyAdmin SQL Dump
    -- version 2.10.0.2
    -- [url]http://www.phpmyadmin.net[/url]
    -- 
    -- 
    Hostlocalhost
    -- Generato il23 Mag2007 at 10:54 AM
    -- Versione MySQL5.0.37
    -- Versione PHP5.2.1

    SET SQL_MODE
    ="NO_AUTO_VALUE_ON_ZERO";

    -- 
    -- 
    Database: `test`
    -- 

    -- --------------------------------------------------------

    -- 
    -- 
    Struttura della tabella `l1`
    -- 

    CREATE TABLE `l1` (
      `
    l1_idint(11NOT NULL auto_increment,
      `
    l1_nametext collate latin1_general_ci NOT NULL,
      `
    l1_linktext collate latin1_general_ci NOT NULL,
      `
    l1_orderint(11NOT NULL,
      
    PRIMARY KEY  (`l1_id`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

    -- 
    -- 
    Dump dei dati per la tabella `l1`
    -- 

    INSERT INTO `l1VALUES (1'America'''100);
    INSERT INTO `l1VALUES (2'Europa'''200);
    INSERT INTO `l1VALUES (3'Asia'''300);
    INSERT INTO `l1VALUES (4'Oceania'''400);
    INSERT INTO `l1VALUES (5'Africa'''500); 
    Nome Tabella: l2 (tabella Stati)

    Codice PHP:
    -- phpMyAdmin SQL Dump
    -- version 2.10.0.2
    -- [url]http://www.phpmyadmin.net[/url]
    -- 
    -- 
    Hostlocalhost
    -- Generato il23 Mag2007 at 10:54 AM
    -- Versione MySQL5.0.37
    -- Versione PHP5.2.1

    SET SQL_MODE
    ="NO_AUTO_VALUE_ON_ZERO";

    -- 
    -- 
    Database: `test`
    -- 

    -- --------------------------------------------------------

    -- 
    -- 
    Struttura della tabella `l2`
    -- 

    CREATE TABLE `l2` (
      `
    l2_idint(11NOT NULL auto_increment,
      `
    l2_nametext collate latin1_general_ci NOT NULL,
      `
    l2_linktext collate latin1_general_ci NOT NULL,
      `
    l2_orderint(11NOT NULL,
      `
    l2_l1idint(11NOT NULL,
      
    PRIMARY KEY  (`l2_id`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

    -- 
    -- 
    Dump dei dati per la tabella `l2`
    -- 

    INSERT INTO `l2VALUES (1'Giappone'''1003);
    INSERT INTO `l2VALUES (2'Cina'''2003);
    INSERT INTO `l2VALUES (3'Mongolia'''3003);
    INSERT INTO `l2VALUES (4'Stati Uniti'''1001);
    INSERT INTO `l2VALUES (5'Canada'''2001);
    INSERT INTO `l2VALUES (6'Messico'''3001);
    INSERT INTO `l2VALUES (7'Italia'''1002);
    INSERT INTO `l2VALUES (8'Spagna'''2002); 
    Nome Tabella: l3 (tabella Città)

    Codice PHP:
    -- phpMyAdmin SQL Dump
    -- version 2.10.0.2
    -- [url]http://www.phpmyadmin.net[/url]
    -- 
    -- 
    Hostlocalhost
    -- Generato il23 Mag2007 at 10:54 AM
    -- Versione MySQL5.0.37
    -- Versione PHP5.2.1

    SET SQL_MODE
    ="NO_AUTO_VALUE_ON_ZERO";

    -- 
    -- 
    Database: `test`
    -- 

    -- --------------------------------------------------------

    -- 
    -- 
    Struttura della tabella `l3`
    -- 

    CREATE TABLE `l3` (
      `
    l3_idint(11NOT NULL auto_increment,
      `
    l3_nametext collate latin1_general_ci NOT NULL,
      `
    l3_linktext collate latin1_general_ci NOT NULL,
      `
    l3_orderint(11NOT NULL,
      `
    l3_l2idint(11NOT NULL,
      
    PRIMARY KEY  (`l3_id`)
    ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=;

    -- 
    -- 
    Dump dei dati per la tabella `l3`
    -- 

    INSERT INTO `l3VALUES (1'Tokio'''1001);
    INSERT INTO `l3VALUES (2'Osaka'''2001);
    INSERT INTO `l3VALUES (3'Kanagawa'''3001);
    INSERT INTO `l3VALUES (4'Roma'''1007);
    INSERT INTO `l3VALUES (5'Milano'''2007); 
    Ed ecco i file che servono:

    - index.php

    Codice PHP:
    <?
      
    include('inc/conn.inc.php');
      include(
    'inc/class/select.class.php');
      
    $obj = new select();
      
    $l1 $obj->getL1();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it">
    <head>
        <title>Select dinamiche con dati provenienti da Database</title>
    <script type="text/javascript">

    var http = createRequestObject();
    var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;

    function createRequestObject() {
         var ro;
         var browser = navigator.appName;
         if(browser == "Microsoft Internet Explorer"){
              ro = new ActiveXObject("Microsoft.XMLHTTP");
         }else{
              ro = new XMLHttpRequest();
         }
         return ro;
    }

    function addElement(ogg,val,text){
      var newOption;
      newOption = document.createElement("option");
      newOption.value = val;
      newOption.text = text;
      ogg.add(newOption, where);    
    }

    function removeElement(ogg){
      if(ogg.options.length > 0){
        while (ogg.options.length) {
          ogg.remove(0);
        }    
      }
    }

    function disabledElement(ogg,val){
      document.getElementById(ogg).disabled = val;
    }

    function loadingState(oggId){
      var id = document.getElementById(oggId).value;
      var City = document.getElementById('l3');
      // inizializzazione Città  
      removeElement(City);
      addElement(City,'sel','Seleziona una Città:');
      disabledElement('l3',true);
      http.open('GET','getState.php?id='+id, true);
      http.onreadystatechange = getState;
      http.send(null);  
    }

    function loadingCity(oggId){
      var id = document.getElementById(oggId).value;
      http.open('GET','getCity.php?id='+id, true);
      http.onreadystatechange = getCity;
      http.send(null);  
    }

    function getState(){
      var State = document.getElementById('l2');
      removeElement(State);
      id = document.getElementById('l1').value;
      if(id == 'sel'){
        disabledElement('l2',true);
        addElement(State,'sel','Seleziona prima un Continente:');
      }else{
        if(http.readyState == 4){
          if (http.status == 200) {
               var response = http.responseText;
            if(response == ''){
              disabledElement('l2',true);
              addElement(State,'sel','Nessuno Stato Presente');
            }else{
              removeElement(State);
              coppia = response.split(',');
              max = coppia.length;
              addElement(State,'sel','Seleziona uno Stato:');
              for(x=0;x<max;x++){
                val = coppia[x].split('-');
                addElement(State,val[0],val[1]);
              }
              disabledElement('l2',false);
            }
             }
        }else{
          addElement(State,'sel','Loading...');
        }
      }
    }

    function getCity(){
      var City = document.getElementById('l3');
      removeElement(City);
      id = document.getElementById('l2').value;
      if(id == 'sel'){
        disabledElement('l3',true);
        addElement(City,'sel','Seleziona una Città:');
      }else{
        if(http.readyState == 4){
          if (http.status == 200) {
               var response = http.responseText;
            if(response == ''){
              disabledElement('l3',true);
              addElement(City,'sel','Nessuna voce');
            }else{
              removeElement(City);
              coppia = response.split(',');
              max = coppia.length;
              addElement(City,'sel','Seleziona una Città:');
              for(x=0;x<max;x++){
                val = coppia[x].split('-');
                addElement(City,val[0],val[1]);
              }
              disabledElement('l3',false);
            }
             }
        }else{
          addElement(City,'sel','Loading...');
        }
      }
    }
    </script>

    </head>
    <body>
    <form name="form">
    <div id="content">
      <div id="label1">
        Select 1
      </div>
      <div id="select1">
        <select name="l1" id="l1" onChange="loadingState('l1')">
         <option value="sel" selected="selected">Seleziona un Continente:</option>
         <?
           
    for($x=0;$x<count($l1);$x++){
         
    ?>
         <option value="<?=$l1[$x]['l1_id']?>"><?=$l1[$x]['l1_name']?></option>
         <?
           
    }
         
    ?>
        </select> 
      </div>
      <div id="label2">
        Select 2
      </div>
      <div id="select2">
        <select name="l2" id="l2" onChange="loadingCity('l2')" disabled>
        <option value="sel" selected="selected">Seleziona uno Stato:</option>
        </select>  
      </div>  
      <div id="label3">
        Select 3
      </div>
      <div id="select3">
        <select name="l3" id="l3" disabled>
        <option value="sel" selected="selected">Seleziona una Città:</option>
        </select>  
      </div>    
    </div>
    </form>
    </body>
    </html>
    - getCity.php

    Codice PHP:
    <?
      
    include('inc/conn.inc.php');
      include(
    'inc/class/select.class.php');
      
    $id $_REQUEST['id'];
      
    //$id = 7;
      
    $obj = new select();
      
    $l3 $obj->getL3($id);
      
    $Js '';
      for(
    $y=0;$y<count($l3);$y++){
        if(
    $y < (count($l3)-1)){
          
    $end ",";
        }else{
          
    $end "";
        }
        
    $Js .= $l3[$y]['l3_id']."-".$l3[$y]['l3_name'].$end;
      }
      echo 
    $Js
    ?>
    - getState.php

    Codice PHP:
    <?
      
    include('inc/conn.inc.php');
      include(
    'inc/class/select.class.php');
      
    $id $_REQUEST['id'];
      
    $obj = new select();
      
    $l1 $obj->getL1($id);
      
    $Js '';
      for(
    $x=0$x<count($l1); $x++){
        
    $l2 $obj->getL2($l1[$x]['l1_id']);
        for(
    $y=0;$y<count($l2);$y++){
          if(
    $y < (count($l2)-1)){
            
    $end ",";
          }else{
            
    $end "";
          }
          
    $Js .= $l2[$y]['l2_id']."-".$l2[$y]['l2_name'].$end;
        }
      }   
      
    //echo "text";
      
    echo $Js
    ?>
    - inc/conn.inc.php (creare la cartella inc)

    Codice PHP:
    <?php
      
    // Inizio - Connessione DataBase
      
    $host 'localhost';
      
    $login 'root';
      
    $password 'password';
      
    $db 'test';
      
    $conn mysql_connect($host,$login,$password);
      
    mysql_select_db($db,$conn);
      
    // Fine - Connessione DataBase
    ?>
    - inc/class/select.class.php (creare la cartella class dentro inc)

    Codice PHP:
    <?php
    class select{

      function 
    select(){
      }
      
      function 
    getL1($id=''){
        if(!empty(
    $id)){
          
    $sSQL "SELECT * FROM l1 WHERE l1_id = $id";
        }else{
          
    $sSQL "SELECT * FROM l1 Order by l1_order";
        }    
        
    $ris mysql_query($sSQL);
        while(
    $row mysql_fetch_assoc($ris)){
          
    $list[] = array('l1_id' => $row["l1_id"],
                          
    'l1_name' => $row["l1_name"]);    
        }    
        return 
    $list;    
      }
      
      function 
    getL2($id){
        
    $sSQL "SELECT * FROM l2 WHERE l2_l1id = $id Order By l2_order";
        
    $ris mysql_query($sSQL);
        while (
    $row mysql_fetch_assoc($ris)) {
          
    $list[] = array('l2_id' => $row["l2_id"],
                          
    'l2_name' => $row["l2_name"]);
        }
        return 
    $list;    
      }
      
      function 
    getL3($id){
        
    $sSQL "SELECT * FROM l3 WHERE l3_l2id = $id Order By l3_order";
        
    $ris mysql_query($sSQL);
        while (
    $row mysql_fetch_assoc($ris)) {
          
    $list[] = array('l3_id' => $row["l3_id"],
                          
    'l3_name' => $row["l3_name"]);
        }
        return 
    $list;    
      }    
        
    }
    ?>
    Ho fatto delle modifiche significative al Javascript e ho cambiato alcune cose alla classe in php

    Vi saluto Max
    http://www.mdlwork.com

  3. #3
    MAAAAAAAARRROOONNNAAA SANTA!

    caro masdel1979 non sai da quanto tempo sto cercando di fare una cosa del genere, ora proverò a utilizzare la prima versione che fa proprio al caso mio.

    GRAZIEEEEEEEEE!!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    ok...

    ...prego!!

    Io la sto utilizzando senza problemi, e devo dire che funziona bene.

    Certo, la seconda versione è molto più ordinata (intendo il codice), ma l'effetto è sempre lo stesso.

    L'unica cosa che mi lascia un pò perplesso, è il problema legato alla cache;

    esempio:

    ho sotto "Europa" le due voci:

    - Italia
    - Inghilterra

    e le visualizzo tranquillamente...

    Poi, inserisco nel database, una nuova voce sempre sotto Europa, per esempio "Germania"

    Accade spesso che si continua a visualizzare solo "Italia" e "Inghilterra", perchè rimane memorizzato in cache!!

    Se invece aggiorni il browser, compare anche "Germania".

    Io per il momento, ho risolto cambiando le impostazioni del browser in questo modo (parlo sempre di internet explorer):

    1) vai su "Strumenti"->"Opzioni Interenet"
    2) nella cartella "Generale" vai su "Impostazioni..."
    3) selezionare la voce "All'apertura della pagina" (in "ricerca versioni più recenti delle pagine memorizzate")

    Vorrei capire però, se è possibile eliminare problemi di questo tipo, magari modificando lo script... :berto:

    In realtà pensavo che ajax agisse tipo "linguaggio lato server" come PHP, ma forse non è proprio così, visto che sfrutta Javascript... :master:

    Ok, dopo questo poema, spero arriveranno altre risposte, un grande saluto Max
    http://www.mdlwork.com

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Per il problema legato alla cache ti conviene fare la chiamata ajax passando i dati via post e non get.
    Pietro

  6. #6
    OK funziona alla grande!

  7. #7
    per masdel1979,

    ma il problema della cache non lo puoi risolvere inserendo il metatag?

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    ...

    per pietro09
    Proverò siscuramente, appena ho un pò di tempo... Speriamo funzioni, grazie

    ufficio
    In realtà quel metodo non serve, quindi puoi pure eliminarlo; intendo questo:

    Codice PHP:
    function getL3($id){
    $sSQL "SELECT * FROM l3 WHERE l3_l2id = $id Order By l3_order";
    $ris mysql_query($sSQL);
    while (
    $row mysql_fetch_assoc($ris)) {
    $list[] = array('l3_id' => $row["l3_id"],
    'l3_name' => $row["l3_name"]);
    }
    return 
    $list

    Tanto per il primo esempio non serve.

    L'errore comunque non dipende da questo c'è qualche altra cosa che non va... Se hai fatto bene il copia incolla e create tutte le tabelle dovrebbe andare... :master:

    Appena posso, comunque, faccio una simulazione copiandomi il codice da questa discussione, magari ho dimenticato qualcosina...

    Purtroppo adesso non posso... verificherò prima possibile;

    Se ti va intanto prova il secondo esempio che sicuramente è migliore e può essere adattato anche al primo caso, con qualche modifica

    Ciao Max
    http://www.mdlwork.com

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    231

    Az...

    Ho letto adesso "Ufficio" meno male che funziona sono contento

    Se devo essere sincero non ho molta esperienza su come eliminare i problemi di cache (non ho mai avuto problemi legati a queste cose, programmando principalmente in PHP); non avuto neanche il tempo di verificare, comunque proverò sicuramente entrambi i casi, grazie mille

    Riusciremo a perfezionare sempre di più questo script

    Saluti Max
    http://www.mdlwork.com

  10. #10

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.