Bonsoir tt le monde,
je suis débutant en PHP et je voudrais affiche un seul enregistrement en choisissant un id_em(id employe)
voila mes tables
employe(id_em,cin,nom_em,id_grade,id_affectation,adress)
affectation("num,nom_a)
grade(id,libelle)
je voudrais au moment de clique sur un id_em bien sur tout les id_em sont met dans une liste déroulante au moment de clique le programme m'affiche(cin,nom_em,libelle,nom_a,adress)
voila mon code:
<form method="post"action="">
<select name="id_em"
onChange="this.form.submit();" >
<?php
try
{
$bdd=new PDO('mysql:host=localhost;dbname=gestion;charset=utf8','root','');
}
catch (Exception $e)
{
die('ERREUR : '.$e->getMessage());
}
$res= $bdd->query('select * from employe');
while ($ligne=$res->fetch())
{?>
<option > <?php echo $ligne['id_em']; ?> </option>
<?php }
$res->closeCursor();
?>
<?php
$requete=$bdd->prepare("select employe.cin,employe.nom_em,grade.libelle,affectation.nom_a,employe.adress from employe,grade,affectation where employe.id_grade=grade.id and employe.id_affectation=affectation.num and employe.id_em=?");
$requete->execute(array($_POST["id_em"]));
if(isset($_POST['id_em'])){
while($res1=$requete->fetch()){
?>
<input type="text"name="cin" value="<?php echo $res1["cin"] ?>">
</br>
<input type="text"name="nom_em" value="<?php echo $res1["nom_em"] ?>">
</br>
<input type="text"name="id_grade" value="<?php echo $res1["libelle"] ?>">
</br>
<input type="text"name="id_affectation" value="<?php echo $res1["nom_a"] ?>">
</br>
<input type="text"name="adress" value="<?php echo $res1["adress"] ?>">
</br>
<?php
}}
$requete->closecursor();
?>
mais mon problème le programme affiche seulement les dernier enregistrement.
Et merci pour vos aide
Je te conseil déjà dans un premier temps de faire tes requette comme ceci :
$post = isset($_POST['id_em']);
$req = $db->prepare('SELECT champ de ta table FROM nom de la table WHERE id = ?');
$req->execute([$id]); // execute toujours dans un tableau array() ou [ ceci est un tableau ]
$post = $req->fetchObject();
Majuscule pour les SELECT, FROM, WHERE, LIMITE etc... seul le nom de la table et les champ de la table doivent être en minuscule.
Ensuite avec cette requette tu n'a rien d'autre a faire si tu veut plusieur entré tu fait un foreach ou while tu peut choisir un odre avec ORDER BY date DESC ou ASC par exemple pour afficher les éléments tu a juste a faire un echo <?= $post->blabla; ?>
Et encore ta connexion a ta base de donée tu peut choisir de la faire a chaque fois que tu veut faire une requette ou la mettre dans fichier que tu inclu a chaque fois que tu en a besoin.
$dbhost = 'localhost';
$dbname = 'cms';
$dbuser = 'root';
$dbpswd = 'pass';
try{
$db = new PDO('mysql:host=' . $dbhost . ';dbname='.$dbname,$dbuser,$dbpswd,array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' ));
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);//ou FETCH_ASSOC
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //exception or WARNING
}catch(Exception $e){
/* echo $e->getMessage(); */
die('Imopsible de ce connecter a la BDD');
}