Creazione menu a tendina

matteot

Nuovo Utente
31 Mar 2021
3
0
1
Salve e buonasera.
Dopo le molte ricerche effettuate su internet sul problema che stò cercando di risolvere non ho trovato nulla che mi possa aiutare e cercavo aiuto in questo forum poiché ho visto che sono presenti molti argomenti interessanti, da cui ho preso spunto.
Vorrei creare un menu a tendina che mostri gli id di alcuni utenti (fornitori) prelevati dal database e al di sotto dei campi input in cui successivamente vengano mostrati gli ulteriori dati dell'utente. Per esempio: "cognome, nome ecc...".
Successivamente, attraverso la scelta dell'id, selezionato tramite il menu a tendina vorrei che le caselle input si popolassero con i dati presi dal database inerenti al id selezionato, e che fosse possibile non solo visualizzarli ma anche modificarli, poiché stò creando un form per l'UPDATE dei dati.
Questo è il codice scritto fino ad adesso e come si può vedere volevo chiedervi come avrei potuto far si che i dati vengano visualizzati all'interno delle caselle di testo <input>.
Immagine.png

file: new.php
PHP:
<?php

function load_stati() { // funzione che verrà richiamata dopo. Stampa le option prelevandole dalla tabella.
    $conn = mysqli_connect("127.0.0.1", "root", "", "database"); // connessione al db
    $cont = "SELECT * from fornitore order by IdFornitore"; // query di estrazione
    $res = mysqli_query($conn,$cont); // eseguo la query
    while ($row = mysqli_fetch_array($res)) {
        echo "<option value='".$row['IdFornitore']."'>".$row['IdFornitore']."</option>\n"; // stampa le option della select
    }
}

?>
<!DOCTYPE html>
<html>
    <head>
        <title>Stati</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    </head>
    <body>
        <form>
            <select name="continente" id="continente" class="continente">
                <option> Scegli uno stato </option>
                <?php load_stati(); ?>
            </select>
            <br>
            <br>
            
    <div class="w3-rest">
      <input class="w3-input w3-border" name="cognome" type="text" placeholder="Cognome" value=""> <!--Sistemare il value-->
    </div>


    <div class="w3-rest">
      <input class="w3-input w3-border" name="nome" type="text" placeholder="Nome">
    </div>

    <div class="w3-rest">
      <input class="w3-input w3-border" name="email" type="text" placeholder="E-mail">
    </div>

    <div class="w3-rest">
      <input class="w3-input w3-border" name="telefono" type="text" placeholder="Numero di telefono">
    </div>



    <div class="w3-rest">
      <input class="w3-input w3-border" name="partitaiva" type="text" placeholder="Partita IVA">
    </div>


<button class="w3-button w3-block w3-section w3-blue w3-ripple w3-padding">Aggiorna</button>

</form>

</div>
</div>
            <div id="stato" class="stato"></div>
        </form>
    </body>

    <!-- CHIAMATA AJAX -->
    <script type="text/javascript">

        $(".continente").change(function() { // '.continente' è la classe associata alla select
            var country_id = $(this).val(); // 'country_id' è una variabile creata al momento che conterrà l'id della nazione (prelevato dalla tabella e salvato all'interno dell'attributo value della rispettiva <option>, ossia $row['id'])
            $.ajax({
                url: 'prova2.php', // pagina a cui inviare l'id appena prelevato
                method: 'POST', // metodo che s'intende utilizzare (nota come il form precedentemente definito non disponga di un metodo)
                data: {countryId:country_id}, // quando invierò il country_id alla pagina 'prova2.php', potrò prelevarlo attraverso $_POST['countryId']
                dataType: "text",
                success: function(res) {
                    $('.stato').html(res); // se il tutto va a buon fine inserisco all'interno del div '.stato' ciò che sputerò fuori dalla pagina 'prova2.php'
                }
            });
        });

    </script>
    <!-- FINE CHIAMATA AJAX -->

</html>

file prova2.php
PHP:
<?php

$conn = mysqli_connect("127.0.0.1", "root", "", "database"); // connetto al db

$query = "SELECT * FROM fornitore where IdFornitore = '".$_POST['countryId']."'"; // definisco la query
// seleziono il continente che ha come id lo stesso id della nazione che ho selezionato nel menu a tendina

$cognome = ""; // definisco una variabile $output vuota
$nome="";
$ntel="";
$piva="";
$email="";
$res = mysqli_query($conn,$query); // eseguo la query

while ($row = mysqli_fetch_array($res)) {
  $cognome = "<span>".$row['Cognome']."</span>"; // salvo il risultato della query in una stringa pronta da mostrare
  $nome="<span>".$row['Nome']."</span>"; // salvo il risultato della query in una stringa pronta da mostrare
  $ntel="<span>".$row['NumeroTelefono']."</span>";
  $piva="<span>".$row['PartitaIVA']."</span>";
  $email="<span>".$row['Email']."</span>";
}

echo $cognome; // STAMPA DEL RISULTATO (passaggio fondamentale)
echo "&nbsp;";
echo $nome;
echo "&nbsp;";
echo $ntel;
echo "&nbsp;";
echo $piva;
echo "&nbsp;";
echo $email;
?>
Sono nuovo in questo forum, spero di essermi espresso come da regolamento. Buonaserata.
 

Tommy03

Utente Attivo
6 Giu 2018
600
55
28
17
Vicenza
Dovresti inviare un array dal file PHP e poi mettere i vari dati negli input corrispondenti, così:
PHP:
while($row = mysqli_fetch_array($result)){
    
$cognome = $row['Cognome'];
  $nome=$row['Nome'];
$ntel=$row['NumeroTelefono'];
$piva=$row['PartitaIVA'];
$email=$row['Email'];
}
$return_arr=array("cognome"=> $cognome, "nome"=> $nome, "ntel"=>$ntel, "piva"=>$piva, "email"=>$email);
echo json_encode($return_arr);

Poi nel codice javascrupt riprendi i dati cosi:
JavaScript:
success: function(res) {
                    $('#cognome').html(res.cognome);
$('#nome').html(res.nome);
$('#ntel').html(res.ntel);
$('#piva').html(res.piva);
$('#email').html(res.email);
}
Oltre a copiare questo codice devi anche inserire nei vari input l'ID corrispondente (ad esempio nell'input del cognome aggiungi id="cognome")

Intanto prova così, se funziona poi passiamo all'update
 

matteot

Nuovo Utente
31 Mar 2021
3
0
1
Buongiorno Tommy03, ho provato a dare una sistemata al codice attraverso i tuoi consigli, e ti ringrazio molto, ma ancora i dati non vengono proiettati all'interno delle caselle di testo. Anzi, se clicco per due volte su una cassella di testo mi appare questo :
(non saprei come disattivare questa "funzione" di questo menu a tendina)
Condivido nuovamente il codice aggiornato per visualizzare eventuali errori.
Immagine.png

File: new.php
PHP:
<?php

function load_stati() { // funzione che verrà richiamata dopo. Stampa le option prelevandole dalla tabella.
    $conn = mysqli_connect("127.0.0.1", "root", "", "maturita2021"); // connessione al db
    $cont = "SELECT * from fornitore order by IdFornitore"; // query di estrazione
    $res = mysqli_query($conn,$cont); // eseguo la query
    while ($row = mysqli_fetch_array($res)) {
        echo "<option value='".$row['IdFornitore']."'>".$row['IdFornitore']."</option>\n"; // stampa le option della select
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Aggiorna</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    </head>
    <body>
        <form>
            <select name="continente" id="continente" class="continente">
                <option> Selezionare un ID </option>
                <?php load_stati(); ?>
            </select>
            <br>
            <br>
            
    <div class="w3-rest">
      <input class="w3-input w3-border" name="cognome" class="cognome" type="text" placeholder="Cognome" value=""> <!--Sistemare il value-->
    </div>


    <div class="w3-rest">
      <input class="w3-input w3-border" name="nome" class="nome" type="text" placeholder="Nome">
    </div>

    <div class="w3-rest">
      <input class="w3-input w3-border" name="email" id="email" type="text" placeholder="E-mail">
    </div>

    <div class="w3-rest">
      <input class="w3-input w3-border" name="telefono" id="ntel" type="text" placeholder="Numero di telefono">
    </div>



    <div class="w3-rest">
      <input class="w3-input w3-border" name="partitaiva" id="piva" type="text" placeholder="Partita IVA">
    </div>


<button class="w3-button w3-block w3-section w3-blue w3-ripple w3-padding">Aggiorna</button>

</form>

</div>
</div>
      
    </body>

    <!-- CHIAMATA AJAX -->
    <script type="text/javascript">

        $(".continente").change(function() { // '.continente' è la classe associata alla select
            var fornitore_id = $(this).val(); // 'fornitore_id' è una variabile creata al momento che conterrà l'id del fornitore (prelevato dalla tabella e salvato all'interno dell'attributo value della rispettiva <option>, ossia .$row['IdFornitore'])
            $.ajax({
                url: 'prova2.php', // pagina a cui inviare l'id appena prelevato
                method: 'POST', // metodo che s'intende utilizzare (nota come il form precedentemente definito non disponga di un metodo)
                data: {fornitoreId:fornitore_id}, // quando invierò il fornitore_id alla pagina 'prova2.php', potrò prelevarlo attraverso $_POST['fornitoreId']
                dataType: "text",
        success: function(res) {
                $('#cognome').html(res.cognome);
                $('#nome').html(res.nome);
                $('#ntel').html(res.ntel);
                $('#piva').html(res.piva);
                $('#email').html(res.email);
}
            });
        });

    </script>
    <!-- FINE CHIAMATA AJAX -->

</html>

file: prova2.php
PHP:
<?php

$conn = mysqli_connect("127.0.0.1", "root", "", "maturita2021"); // connetto al db

$query = "SELECT * FROM fornitore where IdFornitore = ".$_POST['fornitoreId'].""; // definisco la query
// seleziono il fornitore che ha come id lo stesso id che ho selezionato nel menu a tendina

$cognome=""; // definisco una variabile $output vuota
$nome="";
$ntel="";
$piva="";
$email="";
$res = mysqli_query($conn,$query); // eseguo la query

while($row = mysqli_fetch_array($res)){   
$cognome = .$row['Cognome'];
$nome=.$row['Nome'];
$ntel=$row['NumeroTelefono'];
$piva=$row['PartitaIVA'];
$email=$row['Email'];
}
$return_arr=array("cognome"=> $cognome, "nome"=> $nome, "ntel"=>$ntel, "piva"=>$piva, "email"=>$email);
echo json_encode($return_arr);


/*echo $cognome; // STAMPA DEL RISULTATO
echo "&nbsp;";
echo $nome;
echo "&nbsp;";
echo $ntel;
echo "&nbsp;";
echo $piva;
echo "&nbsp;";
echo $email;*/
?>
Grazie mille.
 

matteot

Nuovo Utente
31 Mar 2021
3
0
1
(localhost/prova/new.php?continente=1&cognome=&nome=&email=&telefono=&partitaiva=)
Mentre questo è ciò che viene visualizzato nella barra di ricerca.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G creazione menu a tendina e invio a pagina php PHP 1
L Software per la creazione di menu a tendina in visuale Javascript 0
L Aiuto creazione menu mancante WordPress 0
C Creazione Menu dinamico con Checkbox PHP 0
M Aiuto.....creazione menu!!!! HTML e CSS 4
S CREAZIONE DI SITO PER CORSI DI FORMAZIONE WordPress 0
spider81man Creazione di un UNICA tabella da più file .CSV PHP 1
S Download di un file in automatico dopo la sua creazione PHP 2
M Problemi con creazione maschere Presentati al Forum 1
F Creazione script Tv Presentati al Forum 1
W Creazione Cartella Classic ASP 2
A recuperare data creazione di un file PHP 6
D Neofita. Creazione applicativo prenotazione automezzi Offerte e Richieste di Lavoro e/o Collaborazione 12
E Creazione URL per chat whatsapp WordPress 1
L Creazione di 2 o più record PHP 6
W Creazione di una griglia HTML e CSS 1
E Creazione di un sito di news PHP 16
S Scelta software/cms per creazione sito Webdesign e Grafica 6
E Creazione gestionale timesheet partendo da foglio excel Offerte e Richieste di Lavoro e/o Collaborazione 0
M Creazione notifica sonora Javascript 1
R Creazione sito eccomerce privato. Offerte e Richieste di Lavoro e/o Collaborazione 2
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
D Difficile creazione excel di dati di grandi dimensioni Classic ASP 2
I creazione stile css HTML e CSS 3
A [Offro][retribuito] Creazione siti web/ web app (Django) Offerte e Richieste di Lavoro e/o Collaborazione 2
Stefano Migotto Creazione di un div con php o js PHP 9
G [OFFRO][RETRIBUITO] Creazione siti web e loghi professionali Offerte e Richieste di Lavoro e/o Collaborazione 0
D Creazione sito Offerte e Richieste di Lavoro e/o Collaborazione 0
D CREAZIONE E GESTIONE SITO E-COMMERCE Offerte e Richieste di Lavoro e/o Collaborazione 2
C [WordPress] Retribuzione creazione Sito Web vetrina Discussioni Varie 3
I [Javascript] Creazione di una piccola libreria e integrazione in angular Javascript 2
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
T [php] problema creazione query select-where PHP 5
Daniele_Carrara [PHP] Creazione Carrello PHP 1
G Creazione Landing Page Offerte e Richieste di Lavoro e/o Collaborazione 2
P [HTML] Creazione pagina web da dove iniziare HTML e CSS 2
L Creazione form html HTML e CSS 3
Monital [PHP]Far riconoscere stringa o numerico epr creazione campo tabella PHP 6
W [PHP] Creazione classe PDO PHP 4
K [PHP] Creazione di Calendario con orario PHP 4
V [CREO] Creazione profilo INSTAGRAM ad hoc per SVILUPPO MARKETING aziendale Offerte e Richieste di Lavoro e/o Collaborazione 0
Store creazione campo search in php PHP 1
Store creazione barra search sito web Presentati al Forum 3
C Creazione di una funzione per il filtraggio dei campi di un db Presentati al Forum 0
F Info aws ed ec2 per creazione sito vendita orodotti digitali Server Dedicati e VPS 0
S [PHP] Aiuto creazione form php per completamento modello word PHP 1
Web93 Creazione spedizione a pezzo - sito wordpress woocommerce WordPress 2
W Creazione Wallet per Bitcoin Offerte e Richieste di Lavoro e/o Collaborazione 6
A [PHP] Creazione tabelle dinamiche PHP 16
S Creazione app Presentati al Forum 1

Discussioni simili