select dinamiche con Jquery e php

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Partendo dal tutorial http://www.mrwebmaster.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
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
grazie, mi ero chiesta se la sezione più adatta non fosse ajax... Ma spero che qualcuno mi aiuti
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
ho provato ad analizzare il codice con Firebug ma non ho capito bene come devo procedere
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
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);
           }
}
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.303
1
0
22
Roma
alessandro1997.netsons.org
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);
           }
}
?>
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
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