[PHP] Salvare campo di una tabella in una variabile

Mastiffs1990

Nuovo Utente
30 Apr 2019
5
0
1
Salve a tutti,

sto cercando di creare un form di ricerca per un sito e sto avendo problemi a salvare un valore di un campo della tabella in una variabile. Vi scrivo di seguito i dettagli. Avete qualche consiglio?
Grazie anticipatamente!

DB:
Nome Tabella: Partenze
Campi: Bus_num, nome_fermata, orario, id_tratta

Codice php:
PHP:
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";

$connect = mysqli_connect($servername, $username, $password, $dbname);
$request = mysqli_real_escape_string($connect, $_POST["query"]);

$query = " SELECT orario FROM partenze WHERE nome_fermata LIKE '%".$request."%'";

$result = mysqli_query($connect, $query);

if(mysqli_num_rows($result) > 0)
{
 while($row = mysqli_fetch_assoc($result))
 {
//  $data[] = $row["nome_fermata"];
echo '<option value="'.$row['nome_fermata'].'">'.$row['orario'].'</option>';
printf("bus_num: %s\n",$fieldinfo->bus_num);
 }
  }
?>
Come potete vedere in $request ci sarà il nome_fermata precedentemente scelto.
Obbiettivo: una volta scelto nome_fermata dovrà essere salvato in una variabile il valore nel campo bus_num relativo.
 
Ultima modifica:
@Mastiffs1990
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008

Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 
  • Like
Reactions: Mastiffs1990
Grazie @Max 1 e scusa per l'inconveniente.
ciao prima di tutto leva i dati del tuo db di aruba.. perché dopo si inventano altre cose per farci complicare la vita ad noi programmatori e poi dite che dopo aruba non va.
contatta un'amministratore e fatti oscurare i dati di login al tuo db.
e se voi chiedi la cancellazione del mio post.

Perché dopo mettono altre regole che poi ci faranno tribolare per le persone che pubblicano tutto.
 
  • Like
Reactions: Mastiffs1990
ciao prima di tutto leva i dati del tuo db di aruba.. perché dopo si inventano altre cose per farci complicare la vita ad noi programmatori e poi dite che dopo aruba non va.
contatta un'amministratore e fatti oscurare i dati di login al tuo db.
e se voi chiedi la cancellazione del mio post.

Perché dopo mettono altre regole che poi ci faranno tribolare per le persone che pubblicano tutto.
Hai ragione.

Visto che da quanto leggo sei un programmatore, per caso hai qualche soluzione al mio problema?
Grazie.
 
ciao dovrebbe più meno essere cosi.. io lo fatto sulla frutta ma forse il tuo codice manca select name etc..
vedi il mio .
Io lo fatto senza database per fare una prova veloce.
PHP:
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
<?php
if(isset($_POST["invia"]))
{
    $request = $_POST["frutta"];
    echo $request;
}
?>
<form name="form_frutta" method="post" action="prova.php">
    <select name="frutta">
        <option value="mela">mela</option>
        <option value="banana">banana</option>
        <option value="arancia">arancia</option>
        <option value="fragola">fragola</option>
    </select>
      <input type="submit" value="invia" name="invia">
</form>
  </body>
</html>

vedi. ciao e buona notte e buon 1 maggio.
 
vedi se ti basta scritto così, altrimenti fatti vivo
PHP:
$query = " SELECT Bus_num, nome_fermata, orario, id_tratta FROM partenze WHERE nome_fermata LIKE '%" . $request . "%'";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
    while($row = mysqli_fetch_assoc($result))
    {
        $Bus_num      = $row['Bus_num'];
        $nome_fermata = $row['nome_fermata'];
        $orario       = $row['orario'];
        $id_tratta    = $row['id_tratta'];
        //..............
    }
}
 
  • Like
Reactions: Mastiffs1990
Grazie @Max 1 e scusa per l'inconveniente.
ciao prima di tutto leva i dati del tuo db di aruba.. perché dopo si inventano altre cose per farci complicare la vita ad noi programmatori e poi dite che dopo aruba non va.
contatta un'amministratore e fatti oscurare i dati di login al tuo db.
e se voi chiedi la cancellazione del mio post.

Perché dopo mettono altre regole che poi ci faranno tribolare per le persone che pubblicano tutto.
e poi usa PDO ,con bindparam che protegge tutto e hai meno da scrivere.
Cosa hai voluto dire? Sai io sono un po' duro di testa e non ho capito bene!
 
presa dalla guida:

Il metodo prepare() di PDO mette a disposizione uno strumento più avanzato e più sicuro per l'esecuzione delle query, attraverso di esso infatti sarà possibile accedere in "modalità protetta" anche a dati provenienti da fonti esterne, inoltre, il metodo consente di mettere il database interrogato al riparo di minacce come per esempio le SQL Injections; si analizzi il seguente esempio:

PHP:
# utilizzo del metodo prepare()

// preparazione della query 
$sql = $db->prepare('SELECT nome, cognome FROM anagrafica');

// esecuzione della query 
$sql->execute(); 

// creazione di un array dei risultati 
$res = $sql->fetchAll();

// visualizzazione dei risultati 
print_r($res);
 
io uso cosi:
PHP:
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id=:id";
$query = $db->prepare($sql);
$query->execute(array(':id' => $id));

while($row = $query->fetch(PDO::FETCH_ASSOC))
{
    $fname = $row['fname'];
    $age = $row['age'];
    $email = $row['email'];
}
 
dicevo per bindparam si usa per insert o update da quello che sto studiando.
PHP:
    $sql = "INSERT INTO users(fname, age, email) VALUES(:fname, :age, :email)";
        $query = $db->prepare($sql);

        $query->bindparam(':fname', $name);
        $query->bindparam(':age', $age);
        $query->bindparam(':email', $email);
        $query->execute();
 
vedi se ti basta scritto così, altrimenti fatti vivo
PHP:
$query = " SELECT Bus_num, nome_fermata, orario, id_tratta FROM partenze WHERE nome_fermata LIKE '%" . $request . "%'";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
    while($row = mysqli_fetch_assoc($result))
    {
        $Bus_num      = $row['Bus_num'];
        $nome_fermata = $row['nome_fermata'];
        $orario       = $row['orario'];
        $id_tratta    = $row['id_tratta'];
        //..............
    }
}
Ciao e grazie per la tua risposta.
Il codice che mi hai scritto purtroppo non va bene (o forse sono io che non riesco ad usarlo al meglio) per le mie esigenze.
Oltre a salvare il campo num_bus in una variabile quando una persona sceglie nome_fermata, questa deve essere passata nell'index.php per popolare la query che partira dopo il click sul tasto "Cerca".
Ti riporto il pezzo di codice interessato di seguito. Grazie!

Index.php
PHP:
...
  <script>
//Alla scelta di nome_fermata carica automaticamente una dropdown con gli orari

   $('#country').on('change',function(){
       var query = $(this).val();
       if(query){
           $.ajax({
               type:'POST',
               url:'orari.php',
               data:'query='+query,
               success:function(html){
                   $('#orari').html(html);
               }
           });
       }else{
           $('#orari').html('<option value="">Seleziona prima la fermata</option>');
       }
   });
 });
</script>
...
//Al click del tasto "Cerca"
  <?php

    if (isset($_POST['submit'])) {
      $departure = $_POST['country'];
      $arrival = $_POST['country1'];
      $tipo_bus = $_POST['tipo_bus'];
      $orario = $_POST['orario'];
                  if ($departure != "" || $arrival != "" || $tipo_bus != "" || $orario != "" ) {

                    $query = "SELECT * FROM search_bar_tutorial WHERE departure = '$departure' AND arrival = '$arrival' OR tipo_bus = '$tipo_bus' AND orario_partenza>= '$orario'  AND bus_num=$bus_num ORDER BY orario_partenza ASC";
                    $data = mysqli_query($conn,$query) or die('error');
                    if (mysqli_num_rows($data) > 0) {
                      while ($row = mysqli_fetch_assoc($data)) {
                        $id = $row['id'];
                        $departure = $row['departure'];
                        $arrival = $row['arrival'];
                        $tipo_bus = $row['tipo_bus'];
                        $orario_partenza = $row['orario_partenza'];
                        $orario_arrivo = $row['orario_arrivo'];
                        $linea_bus = $row['linea_bus'];
                        $bus_num= $row['bus_num'];

                        ?>
                          <tr>
                            <td><?php echo $departure; ?></td>
                            <td><?php echo $arrival; ?></td>
                            <td><?php echo $tipo_bus; ?></td>
                            <td><?php echo $orario_partenza; ?></td>
                            <td><?php echo $orario_arrivo; ?></td>
                            <td><?php echo $linea_bus; ?></td>
                          </tr>
                        <?php
...

Orari.php
PHP:
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
$connect = mysqli_connect($servername, $username, $password, $dbname);
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = " SELECT orario, id_tratte FROM partenze WHERE nome_fermata LIKE '%".$request."%'";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
 while($row = mysqli_fetch_assoc($result))
 {

$orario= $row['orario'];
$id_tratte= $row['id_tratte'];

//passo $id_tratta
echo '<option> '. $id_tratte .'</option>';
// PROBLEMA: Passare $orario in index.php
echo '<option> '. $orario .'</option>';

}
  }
?>
 
Ultima modifica:
non mi "trovo" con il codice che hai postato,
ti ho preparato brevi script html e php
che ripresentano in html il valore scelto e un testo
penso che potrai modificare per ottenere il risultato voluto
HTML:
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Prova Ajax</title>
    <script type="text/javascript" src="jquery.min.js"></script>

    <script type="text/javascript">
$(document).ready(function(){
    $('#fermata').on('change',function(){
        var query = $(this).val();
        alert('query = '+query);
        if(query != 0){
            $.ajax({
                type:  'post',
                cache: false,
                url:  'esempio_12.php',
                data: 'query='+query,
                success:function(html) {
                    $('#orari').html(html);
                },
                error: function(request, status, error)
                {
                    $('#orari').html('ERRORE : il server non risponde o lo ha fatto in modo anomalo '+request.responseText);
                }
            });
        }
        else {
            $('#orari').html('Seleziona prima la fermata');
        }
    });
});
    </script>
  </head>
  <body>
    <select id="fermata" name="fermata">
      <option value="0">Seleziona la fermata</option>
      <option value="1">fermata 1</option>
      <option value="2">fermata 2</option>
      <option value="3">fermata 3</option>
    </select>
    <br />
    <div id="orari"> </div>
  </body>
</html>

PHP:
<?php
echo "<br /><br />";
echo $_POST['query'];
echo "<br />";
echo "ho ricevuto il valore che ho visualizzato";
?>

risultato ottenuto

upload_2019-5-2_15-39-2.png
 

Discussioni simili