select dinamiche con Jquery e php

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Partendo dal tutorial https://www.mrw.it/ajax/articoli/select-dinamiche-jquery-php_1062_2.html ho cercato di adattarlo alla mia esigenza di avere quattro select e non solo tre. I file li ho impostati in questo modo:
form con le quattro select:
HTML:
<form method="post" action="monumenti.php">
      <p>
              <label for="region"><strong>Regione:</strong></label><br />
              <select id="region" name="region" onchange="selProvCom(this.value);">
              <option value="" selected="selected">scegli la regione </option>
              <?php
              // Collegamento ad database. 
              include("connessione.php");
      
              // Query selezione tutte le regioni.
              $sql = "select * from regioni order by regione";
      
              // Eseguo la query. 
              $result = mysql_query($sql, $link);
              while($region = mysql_fetch_array($result)) {
              ?>
              <option value="<?php echo $region['id']; ?>"><?php echo $region['regione']; ?></option>
              <?php
              }
              ?>
              </select>
      </p>
      <p>
              <label for="province"><strong>Provincia:</strong></label><br />
              <select id="province" name="province" onchange="selCom(this.value);">
              <option value="" selected="selected">scegli la provincia</option>
              <?php

              // Query selezione tutte le province.
              $sql = "select * from province order by provincia"; 
      
              // Eseguo la query. 
              $result = mysql_query($sql, $link);
              while($province = mysql_fetch_array($result)) {
              ?>
              <option value="<?php echo $province['id']; ?>"><?php echo $province['provincia']; ?></option>
              <?php
              }
              ?>
              </select>
      </p>
      <p>
              <label for="city"><strong>Citt&agrave;:</strong></label><br />
              <select id="city" name="city" onchange="selMonum(this.value);">
              <option value="" selected="selected">scegli il comune</option>
              <?php

              // Query selezione tutte le province.
              $sql = "select * from comune order by comuni";
      
              // Eseguo la query. 
              $result = mysql_query($sql, $link);
              while($comune = mysql_fetch_array($result)) {
              ?>
              <option value="<?php echo $comune['id']; ?>"><?php echo (htmlspecialchars($comune['comune'])); ?></option>
              <?php
              }
              ?>
              </select>
      </p>
      <p>
              <label for="monumento"><strong>Monumento:</strong></label><br />
              <select id="monumento" name="monumento">
              <option value="$monumento" selected="selected">scegli il monumento</option>
              </select>
      </p>

      <input name="submit" type="submit" class="submit" value="cerca" />
</form>

ho inserito nel head il richiamo alla libreria jquery.js ed in un file esterno ho inserito lo script javascript in questo modo:
HTML:
function selProvCom(idRegion) {
  // Seleziono province di questa regione.
  $.get("select_abitativa00.php", { regionid: idRegion, requestItems: 'province'},
  function(dataProvince){
    $("select[id='province']").empty();
    var options = '<option value="">scegli la provincia</option>';
    var arrayProvince = dataProvince.split( '||');
    for (var i = 1; i < arrayProvince.length; i++) {
      var provincia = arrayProvince[i].split( /,/);
      options += '<option value="' + provincia[0] + '">' + provincia[1] + '</option>';
    }
    $("select[id='province']").html(options);
  });
  // Seleziono comuni di questa regione.
  $.get("select_abitativa00.php", { regionid: idRegion, requestItems: 'comuni'},
  function(dataComuni){
    $("select[id='city']").empty();
    var options = '<option value="">scegli il comune</option>';
    var arrayComuni = dataComuni.split( '||');
    for (var i = 1; i < arrayComuni.length; i++) {
      var comune = arrayComuni[i].split( /,/);
      options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    }
    $("select[id='city']").html(options);
  });
}

//seleziono i comuni della provincia
function selCom(idProvincia) {
  // Seleziono i comuni di questa provincia
	  $.get("select_abitativa00.php", { provinciaid: idProvincia, requestItems: 'comuni'},
  function(dataComuni){
    $("select[id='city']").empty();
    var options = '<option value="">scegli il comune</option>';
    var arrayComuni = dataComuni.split( '||');
    for (var i = 1; i < arrayComuni.length; i++) {
      var comune = arrayComuni[i].split( /,/);
      options += '<option value="' + comune[0] + '">' + comune[1] + '</option>';
    }
    $("select[id='comuni']").html(options);
  });
  // Seleziono monumenti di questa provincia.
  $.get("select_abitativa00.php", { provinciaid: idProvincia, requestItems: 'monumenti'},
  function(dataMonumenti){
    $("select[id='monumento']").empty();
    var options = '<option value="">scegli il monumento</option>';
    var arrayMonumenti = dataMonumenti.split( '||');
    for (var i = 1; i < arrayMonumenti.length; i++) {
      var monumento = arrayMonumenti[i].split( /,/);
      options += '<option value="' + monumento[0] + '">' + monumento[1] + '</option>';
    }
    $("select[id='monumento']").html(options);
  });
}
function selMonum(idComune) {
	// Seleziono i monumenti di questo comune
	$.get("select_abitativa00.php", { cityid: idCity, requestItems: 'monumenti'},
   function(dataMonumenti){
    $("select[id='monumento']").empty();
    var options = '<option value="">scegli il monumento</option>';
    var arrayMonumenti = dataMonumenti.split( '||');
    for (var i = 1; i < arrayMonumenti.length; i++) {
      var monumento = arrayMonumenti[i].split( /,/);
      options += '<option value="' + monumento[0] + '">' + monumento[1] + '</option>';
    }
    $("select[id='monumento']").html(options);
  });
}

Il file select_abitativa00.php ha il seguente codice:

PHP:
<?php

// Seleziona Province e Comuni.
include("connessione.php");

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM province
WHERE id_regione = '$regionID'
ORDER BY provincia
EOQ;
    $result = mysql_query($query, $link);
    $returnProvince = '';
    while ($row = mysql_fetch_array($result)) {
      $returnProvince .= "||".$row['id'].",".$row['provincia'];
    }
    print_r($returnProvince);
  }
  else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM comuni
WHERE id_regione = '$regionID'
ORDER BY comune
EOQ;
    $result = mysql_query($query, $link);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['comune'];
    }
    print_r($returnComuni);
  }
    else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_regione = '$regionID'
ORDER BY monumento
EOQ;
    $result = mysql_query($query, $link);
    $returnMonumenti = '';
    while ($row = mysql_fetch_array($result)) {
      $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
    }
    print_r($returnMonumenti);
  }
}
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
            if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
              $provinciaID = intval($_GET['provinciaid']);
              $query = <<<EOQ
          SELECT *
          FROM comuni
          WHERE id_provincia = '$provinciaID'
          ORDER BY comune
          EOQ;
              $result = mysql_query($query, $link);
              $returnComuni = '';
              while ($row = mysql_fetch_array($result)) {
                $returnComuni .= "||".$row['id'].", ".$row['comune'];
              }
              print_r($returnComuni);
            }
            else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $provinciaID = intval($_GET['provinciaid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_provincia = '$provinciaID'
        ORDER BY monumento
        EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
else if (isset($_GET['cityid']) and is_numeric($_GET['cityid'])) {
     if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $comuneID = intval($_GET['cityid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_comune = '$cityID'
        ORDER BY monumento
        EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
?>


Impostando il codice in questo modo si caricano le regioni e le province inizialmente, ma una volta che ho selezionato la regione non ho il caricamento delle province.
Deduco che l'errore è o nel file javascript oppure nel file select_abitativa00.php.
Se qualcuno può darmi delle indicazioni, ho più volte riveduto il codice senza riuscire ad individuare l'ingrippo
Grazie
 
grazie, mi ero chiesta se la sezione più adatta non fosse ajax... Ma spero che qualcuno mi aiuti
 
Puoi fare il debugging di questa applicazione con Firebug, che è un'estensione di Firefox usata dai webmaster. Tra le altre cose visualizza anche le richieste GET effettuate al server e ciò che restituiscono. Così almeno vedi se la richiesta restituisce i dati corretti.
 
Quando apri Firebug devi cliccare su "Net", e controllare se anche dopo il caricamento della pagina ci sono richieste verso la pagina PHP che restituisce i risultati. In caso, controllane il responso cliccando sull'URL della richiesta.
 
cercando di capire il funzionamento di Firebug mi sono accorta che con il file select_abitativa00.php mi da il seguente errore:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/vhosts/adivades000005/httpdocs/select_abitativa00.php on line 65

ma non riesco a capire dove è il problema?
Riporto di nuovo il codice:
PHP:
<?php

// Seleziona Province e Comuni.
include("connessione.php");

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM province
WHERE id_regione = '$regionID'
ORDER BY provincia
EOQ;
    $result = mysql_query($query, $link);
    $returnProvince = '';
    while ($row = mysql_fetch_array($result)) {
      $returnProvince .= "||".$row['id'].",".$row['provincia'];
    }
    print_r($returnProvince);
  }
  else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM comuni
WHERE id_regione = '$regionID'
ORDER BY comune
EOQ;
    $result = mysql_query($query, $link);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['comune'];
    }
    print_r($returnComuni);
  }
    else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_regione = '$regionID'
ORDER BY monumento
EOQ;
    $result = mysql_query($query, $link);
    $returnMonumenti = '';
    while ($row = mysql_fetch_array($result)) {
      $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
    }
    print_r($returnMonumenti);
  }
}
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
            if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
              $provinciaID = intval($_GET['provinciaid']);
              $query = <<<EOQ
          SELECT *
          FROM comuni
          WHERE id_provincia = '$provinciaID'
          ORDER BY comune
          EOQ;
              $result = mysql_query($query, $link);
              $returnComuni = '';
              while ($row = mysql_fetch_array($result)) {
               $returnComuni .= "||".$row['id'].",".$row['comune'];
               }
               print_r($returnComuni);
            }
            else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $provinciaID = intval($_GET['provinciaid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_provincia = '$provinciaID'
        ORDER BY monumento
        EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .="||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
else if (isset($_GET['cityid']) and is_numeric($_GET['cityid'])) {
     if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $comuneID = intval($_GET['cityid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_comune = '$cityID'
        ORDER BY monumento
        EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
?>
 
La sigla EOQ; non deve essere indentato. Correggi così:
PHP:
<?php

// Seleziona Province e Comuni.
include("connessione.php");

if (isset($_GET['regionid']) and is_numeric($_GET['regionid'])) {
  if (isset($_GET['requestItems']) and $_GET['requestItems']==='province') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM province
WHERE id_regione = '$regionID'
ORDER BY provincia
EOQ;
    $result = mysql_query($query, $link);
    $returnProvince = '';
    while ($row = mysql_fetch_array($result)) {
      $returnProvince .= "||".$row['id'].",".$row['provincia'];
    }
    print_r($returnProvince);
  }
  else if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM comuni
WHERE id_regione = '$regionID'
ORDER BY comune
EOQ;
    $result = mysql_query($query, $link);
    $returnComuni = '';
    while ($row = mysql_fetch_array($result)) {
      $returnComuni .= "||".$row['id'].",".$row['comune'];
    }
    print_r($returnComuni);
  }
    else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
    $regionID = intval($_GET['regionid']);
    $query = <<<EOQ
SELECT *
FROM monumenti
WHERE id_regione = '$regionID'
ORDER BY monumento
EOQ;
    $result = mysql_query($query, $link);
    $returnMonumenti = '';
    while ($row = mysql_fetch_array($result)) {
      $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
    }
    print_r($returnMonumenti);
  }
}
else if (isset($_GET['provinciaid']) and is_numeric($_GET['provinciaid'])) {
            if (isset($_GET['requestItems']) and $_GET['requestItems']==='comuni') {
              $provinciaID = intval($_GET['provinciaid']);
              $query = <<<EOQ
          SELECT *
          FROM comuni
          WHERE id_provincia = '$provinciaID'
          ORDER BY comune
EOQ;
              $result = mysql_query($query, $link);
              $returnComuni = '';
              while ($row = mysql_fetch_array($result)) {
               $returnComuni .= "||".$row['id'].",".$row['comune'];
               }
               print_r($returnComuni);
            }
            else if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $provinciaID = intval($_GET['provinciaid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_provincia = '$provinciaID'
        ORDER BY monumento
EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .="||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
else if (isset($_GET['cityid']) and is_numeric($_GET['cityid'])) {
     if (isset($_GET['requestItems']) and $_GET['requestItems']==='monumenti') {
            $comuneID = intval($_GET['cityid']);
            $query = <<<EOQ
        SELECT *
        FROM monumenti
        WHERE id_comune = '$cityID'
        ORDER BY monumento
EOQ;
            $result = mysql_query($query, $link);
            $returnMonumenti = '';
            while ($row = mysql_fetch_array($result)) {
            $returnMonumenti .= "||".$row['id'].",".$row['monumento'];
           }
           print_r($returnMonumenti);
           }
}
?>
 
Ora mi da questo errore:

Parse error: syntax error, unexpected T_SL in /var/www/vhosts/adivades000005/httpdocs/select_abitativa00.php on line 9

Non mi pare di aver saltato qualche parentesi
 

Discussioni simili