Potresti fare una chiamata Ajax. Dovrai munirti principalmente di un paio di pagine.
form.php
PHP:
<?php
// ADATTARE LE CREDEDENZIALI DI ACCESSO
$servername = "localhost";
$username = "root";
$password = "";
$dbname = ""; // IMPORTANTE
$str = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
$opt = array(
PDO::ATTR_EMULATE_PREPARES => FALSE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
try {
$conn = new PDO($str,$username,$password,$opt);
} catch(PDOException $ex) {
echo "ERRORE!";
}
?>
<html>
<head>
<title></title>
<style type="text/css">
label,input,select {margin: 5px;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<form action="" method="post">
<label for="codice_cliente"><strong>Codice Cliente</strong></label><input readonly id="codice_customer" value=""><br>
<label for="cliente"><strong>Nome Cliente</strong></label>
<select name="cliente" id="cliente">
<option selected disabled>Seleziona un cliente...</option>
<?php
$select = "SELECT nome_cliente FROM prova";
$stm = $conn->prepare($select);
$stm->execute();
while ($riga = $stm->fetch(PDO::FETCH_ASSOC)) {
echo "<option value='".$riga['nome_cliente']."'>".$riga['nome_cliente']."</option>\n";
}
?>
</select>
<br>
<input type="submit">
</form>
<script type="text/javascript">
$("#cliente").change(function() {
$.ajax({
type: "POST",
url: "chiamata.php",
data: $('select#cliente').serialize()
}).done(function(data) {
$("#codice_customer").val(data);
});
})
</script>
</body>
</html>
chiamata.php
PHP:
<?php
// ADATTARE LE CREDEDENZIALI DI ACCESSO
$servername = "localhost";
$username = "root";
$password = "";
$dbname = ""; // IMPORTANTE
$str = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
$opt = array(
PDO::ATTR_EMULATE_PREPARES => FALSE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
try {
$conn = new PDO($str,$username,$password,$opt);
} catch(PDOException $ex) {
echo "ERRORE!";
}
if(isset($_POST['cliente'])) {
$cliente=$_POST['cliente'];
} else {
$cliente = 0;
}
$ricerca_users = "SELECT cod_cliente FROM prova where nome_cliente = ? ";
$stm = $conn->prepare($ricerca_users);
$stm->execute(array($cliente));
$riga = $stm->fetch(PDO::FETCH_ASSOC);
echo $riga['cod_cliente'];
?>
Nella pagina
form.php, attraverso JQuery, viene prelevato il
nome del cliente e passato tramite una chiamata Ajax, a
chiamata.php.
Qui, viene eseguita una query che recupera il
codice del cliente in cui il nome è uguale a quello della variabile passata precedentemente (è importante, quindi, che non vi siano nomi clienti uguali all'interno della tabella a cui vengono assegnati codici diversi).
A questo punto il codice del cliente torna indietro a
form.php, popolando automaticamente un campo input.
Ti consiglio di creare una nuova pagina (e.g.
config.php) in cui inserisci il codice necessario per la connessione al db, in modo da non doverlo riscrivere ogni volta. Ti basterà poi solamente includerlo nel file che stai utilizzando. (attraverso
require_once() ad esempio). Il codice di cui parlo è il seguente:
config.php
PHP:
<?php
// ADATTARE LE CREDEDENZIALI DI ACCESSO
$servername = "localhost";
$username = "root";
$password = "";
$dbname = ""; // IMPORTANTE
$str = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
$opt = array(
PDO::ATTR_EMULATE_PREPARES => FALSE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
try {
$conn = new PDO($str,$username,$password,$opt);
} catch(PDOException $ex) {
echo "ERRORE!";
}
?>