Select Concatenate Ajax, php, sql

Savi

Nuovo Utente
6 Giu 2017
12
0
1
21
Salve, ho un problema sulle select concatenate. Si tratta di 3 select (marca, modello e citta). A seconda della marca , apparirà il proprio modello e di seguito la città. Infine c'è un submit "cerca " che fa comparire il modello e la città selezionata. Il problema è che mi fa visualizzare tutti i modelli e non esclusivamente quello selezionato.

Questa è un pezzo delll'index.php:
PHP:
<html>
<head>

    <title>Car Shop</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/4.2.0/normalize.css">
    <link rel="stylesheet" href="Prova.css">
  <link rel="stylesheet" type="text/css" href="ie.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript" src="js/jquery.js"></script>
  <script type="text/javascript" src="js/script.js"></script>
  <script>
  $(document).ready(function() {
 
    $('#marca').change(function() {
 
        //recupero variabile "discriminante"
        var marca = $("#marca").val();
 
        //chiamata ajax
        $.ajax({
 
        type: "POST",
 
        url: "elaborazione_dati.php",
 
        data: "marca=" + marca,
        dataType: "html",
 
        success: function(msg)
        {
        $("#modelli").html(msg);//stampa i risultati dentro la seconda select
        },
        error: function()
        {
        alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
        }
    });
 });   
 
});//FINE FUNCTION

  $(document).ready(function() {
 
    $('#modelli').change(function() {
 
        //recupero variabile "discriminante"
        var modelli = $("#modelli").val();
 
        //chiamata ajax
        $.ajax({
 
        type: "POST",
 
        url: "elaborazione_dati.php",
 
        data: "modelli=" + modelli,
        dataType: "html",
 
        success: function(msg)
        {
        $("#citta").html(msg);//stampa i risultati dentro la seconda select
        },
        error: function()
        {
        alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
        }
    });
 });   
 
});//FINE FUNCTION
</script>

</head>
<body>

  <div class="navigation">
    <ul>
      <a href="#home">
        <li>Home</li>
      </a>
      <li id="logo">Car Shop</li>
      <a href="#marche">
        <li>Marche</li>
      </a>
    </ul>
  </div>
  <div class="w3-container w3-black w3-padding-64 w3-xxlarge" id="home">
  <div class="w3-content">
<div id="cover">
    <div class="cover-content">
        <h1 align="center">Cerca Auto</h1>
        <form action="elaborazione_dati.php" method="post">
 
                       <!-- Marca -->
        <select name="marca" id="marca" required>
            <option>Scegli Marca...</option>
 
            <?php
                $host="127.0.0.1";
                $username="root";
                $db="auto";

                error_reporting(E_ALL ^ E_DEPRECATED);
                mysql_connect("localhost", "root") or die ("Non riesco a creare la connessione");
                mysql_select_db($db) or die ("Non trovo il DB");
                  
                $query= "SELECT Nome FROM concessionaria";
                $ris = mysql_query($query);
                    
                while ($riga = mysql_fetch_array($ris)) {
                    
            ?>
            
                <option><?php echo $riga['Nome']; ?></option>
                <?php   } ?>
        </select>
            
         <!-- Modello -->
        <select name="modelli" id="modelli" required>
        </select><br><br><br><br /><br />

          <!-- Città -->
        <select name="citta" id="citta" required>
        </select>
        <br /><br /><br /><br /><br />
                    <input type="submit" value="Cerca" name="submit">
        </form>
      </div>
  </div>
Questa è la pagina elaborazione_dati.php, dove vengono effettuate le query :

PHP:
<html>
<head>
  <title>Car Shop</title>
</head>
<body>

<?php

    $host="127.0.0.1";
    $username="root";
    $db="auto";
    $marca=$_POST['marca'];
    $modelli=$_POST['modelli'];

    error_reporting(E_ALL ^ E_DEPRECATED);
    mysql_connect($host, $username) or die ("Non riesco a creare la connessione");
    mysql_select_db($db) or die ("Non trovo il DB");

    $sql = "SELECT Modello FROM automobile INNER JOIN concessionaria ON (ID_C=ID_Concessionaria) WHERE Nome = '$marca'";

    $ris = mysql_query($sql);

    echo "<option>Scegli</option>";

    while ($riga = mysql_fetch_array($ris)) {

       echo "<option>".$riga['Modello']."</option>";

       }

    $sql2 = "SELECT Citta FROM concessionaria INNER JOIN automobile ON (ID_C=ID_Concessionaria) WHERE Modello = '$modelli'";

    $ris2 = mysql_query($sql2);
                    
    while ($riga2 = mysql_fetch_array($ris2)) {
 
        echo "<option>".$riga2['Citta']."</option>";

    }

 ?>
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
certo che NON utilizzare i tag per postare il codice fa passare la voglia di capire come è fatto il codice !
 

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
come tutti gli altri,

il codice che hai postato è abbastanza lungo, si devono individuare delle parti,
se non ci aiuti tu, chi aiuta te ?

quando componi il messaggio, in alto ci sono una fila di icone, prova a capirne l'utilizzo
 

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
ci sono diverse cose da cambiare, una per tutte,
tratti la marca ma selezioni la concessionaria ....
PHP:
        <select name="marca" id="marca" required>
            <option>Scegli Marca...</option>

                $query= "SELECT Nome FROM concessionaria";
se non interpreto male io

potresti prendere spunto dallo snippet di criric
https://forum.mrwebmaster.it/threads/select-dinamiche-regioni-province-comuni.36007/
giusto 3 livelli, che con poche variazioni (al limite solo i nomi), può essere usato profiquamente
 

Savi

Nuovo Utente
6 Giu 2017
12
0
1
21
Ho cambiato il codice per le mie esigenze e funziona..ma se devo far comparire i campi delle select selezionate in un altra pagina come dovrei fare?
 

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
modifica così,
PHP:
<form id="ricerca" method="post" action="comuni_next.php">
.....
.....
<br />
<button class="button" type="submit" value="submit">Prossimo Script</button>
</form>
le trovi in $_POST['regione'], $_POST['provincia'] e $_POST['comune']
 
  • Like
Reactions: Savi

Savi

Nuovo Utente
6 Giu 2017
12
0
1
21
Ho anche un problema nel far mostrare le immagini dal database. Le immagini le ho caricate nella tabella automobile dove c'è il campo Immagine(BLOB) in cui inserisco il nome del file.
Ho provato cosi ma non funziona:

PHP:
    $query = "SELECT Immagine FROM automobile WHERE Immagine = ID_Auto";

    $risultato = mysql_query($query) or die('Query non valida: ' . mysql_error());
    $tmp = mysql_fetch_array($risultato);

    echo $tmp['Immagine'];
 

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
hai provato a guardare nel log di php se c'e' un messaggio di errore ?

in ogni caso dovrebbe visualizzare il nome del file ?
 

Savi

Nuovo Utente
6 Giu 2017
12
0
1
21
L'immagine non c'è nel db. Si trova dentro una cartella..nel db c'è solo il nome
 

marino51

Utente Attivo
28 Feb 2013
2.865
153
63
Lombardia
in ogni caso dovrebbe visualizzare il nome del file ?

Nono dovrebbe visualizzare l'immagine del campo Immagine

come è stata memorizzata l'immagine nel db ?

L'immagine non c'è nel db. Si trova dentro una cartella..nel db c'è solo il nome
quindi chiarito quanto quotato, l'istruzione
PHP:
echo $tmp['Immagine'];
restituisce solo il nome oppure il percorso ed il nome del file da visualizzare ?
ciò che restituisce è corretto ?