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
 

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
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
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.
 

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
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
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.
 

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.302
1
0
26
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
 
Discussioni simili
Autore Titolo Forum Risposte Data
H problema con select dinamiche e javascript Javascript 0
F Problema select dinamiche con php e jquery jQuery 1
F Select dinamiche con ASP & AJAX Ajax 11
L Select Dinamiche...da txt? PHP 3
eraclio666 [PHP] 2 SELECT DINAMICHE PHP 8
G [Javascript] select dinamiche Javascript 0
H [PHP] Select dinamiche : regioni province comuni PHP 2
H select dinamiche php mysql PHP 4
W Select dinamiche PHP 3
criric Select dinamiche : regioni province comuni Snippet PHP 28
S Select dinamiche concatenate Ajax 8
Z Select dinamiche PHP MySQL Javascript PHP 1
R select dinamiche che riportano valori in una textarea. Javascript 8
V Select dinamiche in php PHP 1
L Select dinamiche - stampa ID e non il valore PHP 3
F Select Dinamiche in fase di modifica Classic ASP 1
L Aiuto per select dinamiche in asp Classic ASP 3
A select dinamiche, errore assurdo, non compare la terza select Javascript 0
J Select automatiche o dinamiche PHP 3
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Ordinare option di una select Javascript 5
W MySQL ciclo in SELECT MySQL 0
W MySQL SELECT list dinamica MySQL 0
M Select Option dentro una Table jQuery 2
G Colorare menu select attraverso ricerca php PHP 0
L problema con query select PHP 2
F menù select dinamico da db in php PHP 3
D popolare campi tra th alla select PHP 36
M Estrarre valore con SELECT COUNT PHP 0
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
E Php select option e ajax PHP 23
R Select concatenata che non funziona la seconda volta Ajax 3
L select join e sottrazione punti PHP 13
L input dati con inser into select ? PHP 4
V hierarchy-select jQuery 0
Emix Select concatenate php sql ajax PHP 2
F query e form con select multipla PHP 17
T recupero valori select multipla da android Javascript 3
J php, scegliere autista da select e mostrare se ha fatto un incidente PHP 8
Tommy03 Select in ordine per numero di record MySQL 7
T problema con select dinamica con jquery Javascript 0
J Far comparire e scomparire un div con un select Javascript 1
M Opzioni select da 1 a 200 PHP 0
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
C input in sostituzione della select PHP 2
G Insert into select - Aiuto MySQL 0
max1974 autocomplete trigger select jQuery 0
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
M Estrarre dati da una select HTML PHP 3
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1

Discussioni simili