Bonsoir à tous,

je suis débutant en PHP et je voudrais modifier une table mais avant ça je veux récupéré les donne de cette table et après les modifier.

voici ma table employe(id_em,cin,nom_em,id_grade,id_affectation,adress)

premier chose j'ai récupéré les donnée en choisissant un id employé voici le code:

<form method="post"action="recherche.php">
<select name="id_em" >
<?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();

?>
</select>
<input type="submit" value="chercher">

</form>

après le clic sur le bouton une autre page s'affiche avec les information de employé:

<form method="post"action="update.php">
<?php
 include'fr.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();

?>
</br>
</br></br>

    </select>
<input type="submit"value="ok">

</form>

je clique sur le bouton modifier de la page 2 ce code appel la fonction modifier:

<?php

include'manager.php';
$manager=new manager();
$manager->update1();
?>

et voici la fonction:

public function update1(){
if(isset($_POST["cin"])and isset($_POST["nom_em"])and isset($_POST["id_grade"])and isset($_POST["id_affectation"])and isset($_POST["adress"])and isset($_POST["id_em"])){
$this->st=$this->pdo->prepare("update employe set cin=?, nom_em=? ,id_grade=? , id_affectation=? , adress=? where id_em=?");
return $this->st->execute(array($_POST["cin"], $_POST["nom_em"],$_POST["id_grade"], $_POST["id_affectation"], $_POST["adress"], $_POST["id_em"]));

}
}

le problème rien ne change aucun modification et le grand problème l y a aucun erreur.

pour l'information j'ai déjà tester ma fonction il fonctionne très bien.

Et merci vos aide

2 réponses


SLK
Réponse acceptée

Salut,

Je n'en suis pas sur du tout mais,
le 1er form, envoie à "recherche.php" la variable $_POST['id_em'], (donc si on fait isset($_POST['id_em'] ça renvoie true, d'accord)
mais le 2ème form n'envoie pas à "update.php" de variable $_POST['id_em'].
Je me demande du coup si isset($_POST['id_em'] renvoie true ou false ("sur update.php")

Si tu modifies comme ça, on voit quel echo ? Et que donne le var_dump($_POST['id_em']) ?

public function update1() {
    var_dump($_POST['id_em']);

    if (isset($_POST["cin"]) and isset($_POST["nom_em"]) and isset($_POST["id_grade"]) and 
        isset($_POST["id_affectation"]) and isset($_POST["adress"]) and isset($_POST["id_em"]))
    {
        echo 'IF';
        $this->st=$this->pdo->prepare("update employe set cin=?, nom_em=?, id_grade=?, id_affectation=?, adress=? where id_em=?");
        return $this->st->execute(array($_POST["cin"], $_POST["nom_em"], $_POST["id_grade"], $_POST["id_affectation"], $_POST["adress"], $_POST["id_em"]));
    }
    else
    {
        echo 'ELSE';
    }
}

Si c'était bien ça le problème, une solution pourrait être de rajouter un input caché dans le 2ème form :

...
<input type="hidden" name="id_em" value="<?= $_POST['id_em'] ?>">
...
hdfs99
Auteur

Merci j'ai deja trouver la solution merci beaucoup SLK