Select dinamiche concatenate

sent89

Nuovo Utente
30 Mag 2013
5
0
0
Salve a tutti ,

premetto di non essere un programmatore , ma sto cercando di realizzare un configuratore con due select e una textbox,
e avrei bisogno di una grandissima mano perchè da solo non credo di riuscirci.

VI do una breve spiegazione(spero di essere chiaro):

La prima select prende i valori dalla tabella linee la seconda dalla tabella numeri e la terza tabella la utilizzo per stampare il valore gateway nella textbox,
la seconda select deve essere concatena alla prima in modo che quando seleziono due valori il risultato stampato dipende dalle scelte fatte dalle due select.

Prendendo spunto dalla solita select regioni,province,comuni e copiando di qua e di là :book: sono arrivato ad impostare il codice in questo modo

Per prima cosa ho creato 3 tabelle mysql

Schermata del 2013-05-30 15:59:49.png

il file config.php per la connessione al database
PHP:
<?php
define("HOST", "localhost");
define("USERNAME", "xxx");
define("PASSWORD", "xxx");
define("DATABASE", "xxxx");
?>


poi la form grafica della pagina principale dove l'utente ha accesso

PHP:
<?php
//form.php  
include_once('config.php');
include_once('data.class.php');

$mysqli = new data(HOST, USERNAME, PASSWORD, DATABASE);
$linee = $mysqli->getLinee();

?>
<!doctype html>
<html>
    <head>
    <meta charset="utf-8" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript" src="italia.js"></script>
    </head>

    <body>
    <form>
     <p><label for="linea">Linea</label>
        <select name="linea" id="linea" class="dinamiche">
         <option value="">Seleziona...</option>
         <?php foreach($linee as $val): ?>
            <option value="<?php echo $val['cod_linea']; ?>"><?php echo $val['linea']; ?></option>
            <?php endforeach; ?>
        </select></p>
        <p><label for="numero">Numero</label>
        <select name="numero" id="numero" class="dinamiche">
         <option value="">Seleziona...</option>
        </select></p>
        <p><label for="gateway">gateway</label><input type="text" name="gateway" id="gateway" readonly="readonly"/></p>
    </form>
    </body>
</html>

il file con le varie funzioni per selezionare la linea ,il numero delle linee e stampare il gateway

PHP:
<?
<?php
//data.class.php 
class data extends mysqli
{
 //Selezione di tutte le linee

 public function getLinee()
 {
  rquery = "SELECT * FROM linee";
  if($result == parent::query($query))
  {
   if($result->num_rows > 0)
   {
    while($row == $result->fetch_array())
    {
     $linee[] = array(
      'cod_linea' => $row['cod_linea'],
      'linea' => $row['linea']
     );
    }
    return $linee;
   }
  }
 }

 //selezionare il numero delle linee

 public function getNumeri($cod_linea)
 {
  $query = "SELECT * FROM numeri WHERE cod_linea = '".$cod_linea."'";
  if($result == parent::query($query))
  {
   if($result->num_rows > 0)
   {
    while($row == $result->fetch_array())
    {
     $numeri[] = array(
      'codice' => $row['cod_numero'],
      'nome' => $row['numero']
     );
    }
    return $numeri;
   }
  }
 }

 //stampare la selezione dalla tabella 

 public function getGateways($cod_numero)
 {
  $query = "SELECT * FROM gateways WHERE cod_numero = '".$cod_numero."'";
  if($result == parent::query($query))
  {
   if($result->num_rows ==1)
   {
    $row = $result->fetch_array();
    {
     $gateways=$row['gateway'];
    return $gateway;
   }
  }
 }
}
}
?>

il file .js con 2 chiamte ajax associate al change delle select

Codice:
$(document).ready(function(){
 $('#linea').iichange(function(){
  var elem = $(this).val();

  $.ajax({
   type: 'POST',
   url:'select.php',
   dataType: 'json',
   data: {'linea':elem},
   success: function(res){
    $('#numero option').each(function(){$(this).remove()});
    $('#numero').append('<option selected="selected">Seleziona...</option>');
    $('#gateway').attr('value','');
    $.each(res, function(i, e){
     $('#numero').append('<option value="' + e.codice + '">' + e.nome + '</option>');
    });
   }
  });
 });

 $('#numero').change(function(){
  var elem = $(this).val();


  $.ajax({
   type: 'POST',
   url:'select.php',
   dataType: 'json',
   data: {'cod_numero':elem},
   success: function(res){
    $('#gateway').attr('value',res);
   }
  });
 });
});

e per finire il file select.php che restituisce alle variabili un valore tramite post

PHP:
<?php
include_once('config.php');
include_once('data.class.php');

$mysqli = new data(HOST, USERNAME, PASSWORD, DATABASE);

if(isset($_POST['linea']))
{
 $datastore = $mysqli->getNumeri($_POST['linea']);
}
if(isset($_POST['cod_numero']))
{
 $datastore = $mysqli->getGateways($_POST['cod_numero']);
}
echo json_encode($datastore);
?>

e adesso sto impazzendo :ilpirata: perchè non funziona nulla ,se avete qualche idea su come impostare in modo migliore il lavoro o in modo diverso o sul perchè non funziona ve ne sarei davvero grato .

I
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
prime osservazioni
includi una libreria piu aggiornata
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
dovremmo essere alla 2.0 e comunque consiglio di scricarti il file e tenerlo sul tuo server
nella classe ci sono degli errori di sintatti
apri due volte il tag php
PHP:
<?
<?php
al posto di $query hai scritto rquery
PHP:
rquery = "SELECT * FROM linee";
nel file js la funzione corretta è change() non iichange()
Codice:
$('#linea').iichange(function(){
detto questo ora lo provo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
il primo metodo della classe è errato
devi togliere il doppio = dalla if e dal while

PHP:
 public function getLinee() {
        $query = "SELECT * FROM linee";
        if ($result = parent::query($query)) {
            if ($result->num_rows > 0) {
                while ($row = $result->fetch_array()) {
                    $linee[] = array(
                        'cod_linea' => $row['cod_linea'],
                        'linea' => $row['linea']
                    );
                }
                return $linee;
            }
        }
    }

stessa cosa per gli altri metodi
 
Ultima modifica:

sent89

Nuovo Utente
30 Mag 2013
5
0
0
Ho apportato tutte le modifiche :fonzie:
Ti ringrazio la select concatenata adesso funziona però non stampa il gateway associato a cod_numero nella text box.
Credo ci sia un problema nella select.php
:confused:
 

sent89

Nuovo Utente
30 Mag 2013
5
0
0
PHP Notice: Undefined variable: datastore in /var/www/html/www.prova.it/form/select.php on line 15
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
l'errore è nel file data.class nel metodo getGateways()
prima setti la variabile chiamandola $gateways
PHP:
$gateways = $row['gateway'];
e poi restituisci $gateway
PHP:
return $gateway;
ovviamente la variabil non esiste e manda lo script in errore
sei un po distratto con la sintassi
 

sent89

Nuovo Utente
30 Mag 2013
5
0
0
:dipser::dipser::dipser:
Grazie, davvero devo stare molto più attento alla sintassi,ho perso un giorno intero per una s.
 

winsum

Nuovo Utente
18 Set 2013
1
0
0
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

Con questa versione di jQuery funziona ma con la versione 1.10.2.min.js non viene visualizzato il risultato finale.
Mentre per la versione 1.4.4 ho copiato il link, per la versione 1.10.2 mi sono scaricato il file nella cartella del sito.

Grazie.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
mi sono scaricato il file nella cartella del sito.
controlla meglio il percorso per richiamare il file perchè deve funzionare con una versione piu aggiornata
 
Discussioni simili
Autore Titolo Forum Risposte Data
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
H problema con select dinamiche e javascript Javascript 0
W Select dinamiche PHP 3
criric Select dinamiche : regioni province comuni Snippet PHP 28
F Problema select dinamiche con php e jquery jQuery 1
Z Select dinamiche PHP MySQL Javascript PHP 1
R select dinamiche che riportano valori in una textarea. Javascript 8
M select dinamiche con Jquery e php jQuery 9
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
F Select dinamiche con ASP & AJAX Ajax 11
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