Bonjour,

Je rencontre un petit probleme avec mon code
j'ai créé une base de données et j'y insère des infos
Maintenent je créé un formulaire de recherche , ensuite afficher le resultat dans un autre (celui de l'insertion) pour modification
Décrivez ici votre code ou ce que vous cherchez à faire


<?php
include('set.php');
?>
<!-- Formulaire de recherche--> 
<link rel="stylesheet" media="screen" type="text/css" href="style/inserstyl.css" /> 
<form action="" method="post">

<div class="input-line">
        <span class="icon"><i class="fa fa-user-circle-o fa-1x" aria-hidden="true"></i></span><input class="put" type="first-name" name="nom" placeholder="Votre nom" value="<?php /*?><?php echo $_POST['nom']; ?><?php */?>">
   </div>

   <div class="input-line">
       <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
<span></span><input class="put" type="email" name="email" placeholder="Votre Adresse mail"  value="<?php /*?><?php echo $_POST['email']; ?><?php */?>">
   </div>

<div class="input-line">
   <input class="btn" type="submit" name="recherche" value="Rechercher">
   <INPUT TYPE="reset"  class="btn" NAME="annuler" VALUE=" Annuler ">
  </div>
</form>

<?php
if(isset($_POST['recherche']))
            {
if(($_POST['nom']) && ($_POST['email']))
        {

$nom=htmlentities($_POST['nom']);
$email=htmlentities($_POST['email']);

$verifier=$base_form->prepare('SELECT * FROM client WHERE nom = \''.$nom.'\' and email = \''.$email.'\';');
$verifier->execute(array('.$nom.' => $_POST['nom'],
                         '.$email.' => $_POST['email']
                        ));
while($result = $verifier->fetch(PDO::FETCH_OBJ)){

    echo'
         <form action="" method="post">
   <div class="input-line">
        <span class="icon"><i class="fa fa-user-circle-o fa-1x" aria-hidden="true"></i></span><input class="put" type="first-name" name="nom" placeholder="Votre nom" value=".$nom$_POST["nom"].">
   </div>

   <div class="input-line">
       <span class="icon"><i class="fa fa-list-ul fa-21x" aria-hidden="true"></i></span><input class="put" type="last-name" name="prenom" placeholder="Votre Prénom" value="<?php  echo($result->prenom) ?>" >
   </div>

   <div class="input-line">
       <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
<span></span><input class="put" type="email" name="email" placeholder="Votre Adresse mail"  value="echo($result->email)">
   </div>

      <div class="input-line">
       <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
<span></span><input class="put" type="text" name="pays" placeholder="Pays" value="echo($result->pays); ?>">
   </div>

    <div class="input-line">
       <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
<span></span><input class="put" type="text" name="ville" placeholder="Ville" value="<?php echo($result->ville);?> "/>
   </div>

   <div class="input-line">
   <input class="btn" type="submit" name="modifier" value="Modifier">
   <INPUT TYPE="reset"  class="btn" NAME="annuler" VALUE=" Annuler ">
  </div>
</form>

           ';

    }
}

else{
    echo'Le formulaire ne pas êtres vide';
    }

            }

?>

Ce que je veux c'est afficher le resultat de recherche dans un formulaire pour modification
Donc partir d'un formulaire de recherche pour afficher les resultats si ils existent dans un formulaire(celui de l'insertion) pour les modifier

Mais je n'y arrive pas, j'ai besoin d'aide
j'espère que je me suis fait comprendre merci

2 réponses


Salut,

Normale que ton code ne fonctionne pas, il y a plein de fautes

  • Les requêtes préparées ne s'écrivent pas comme ça
  • echo($result->pays); ?> => Il manque des choses là
  • 2 Formulaires = 2 pages distinctes (Tu t'y retrouveras mieux)
  • Ne pas utiliser isset pour les formulaires, car les champs du formulaire, même vide seront définie dans le variable$_POST

Dans une requête préparée, on place des clés qu'on vient remplacer par les valeurs au moment de l'éxécution. Ici tu mets directement des valeurs.

Exemple de requête préparée

<?php
$stmt = $conn->prepare('SELECT * FROM table WHERE col_1 = :col_1 AND col_2 = :col_2'); // :col_1 et :col_2 sont mes clés à remplacer plus tard
$stmt->execute([
    // Clé à remplacer dans le requête => Valeur à associer
    'col_1' => 'Ma valeur pour col_1',
    'col_2' => 'Ma valeur pour col_2'
]);

Je me suis permis de reprendre ton code et de le modifier. Je sais pas si ça fonctionne, je ne l'ai pas testé. Mais ca t'orientes sur la façon dont tu dois coder.
C'est pas dit que ça fonctionne. Tu vas devoir débuger et adapter à ton cas si ça balance des erreurs.

<?php
include 'set.php';

$isEdit = false;

if (!empty($_POST['recherche'])) {
    if (!empty($_POST['nom']) && $_POST['email']) {
        $nom    = htmlentities($_POST['nom']);
        $email  = htmlentities($_POST['email']);

        // Utilisation de LIKE à la place de =, LIKE est plus associé à une fonction de recherche
        $stmt   = $base_form->prepare('SELECT * FROM client WHERE nom LIKE :nom AND email LIKE :email');
        $stmt->execute([
            'nom'   => "%$nom%",  // %$nom% => toutes chaînes contenants le contenu de la variable $nom
            'email' => "%$email%"
        ]);

        $res    = $stmt->fetchAll(PDO::FETCH_OBJ);
        $isEdit = true; // On passe en mode édition
    } else {
        die('Le formulaire ne peut être vide');
    }
} elseif (!empty($_POST['modifier'])) {
    if (!empty($_POST['nom']) /* && A compléter */) {
        $isEdit = false; // On passe en mode recherche
    } else {
        die('Le formulaire ne peut être vide');
    }
}
?>

<link rel="stylesheet" media="screen" type="text/css" href="style/inserstyl.css" />

<?php if (!$isEdit): ?>

    <!-- Formulaire de recherche -->
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
        <div class="input-line">
            <span class="icon"><i class="fa fa-user-circle-o fa-1x" aria-hidden="true"></i></span>
            <input class="put" type="first-name" name="nom" placeholder="Votre nom" value="">
        </div>
        <div class="input-line">
            <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
            <span></span><input class="put" type="email" name="email" placeholder="Votre Adresse mail" value="">
        </div>
        <div class="input-line">
            <input class="btn" type="submit" name="recherche" value="Rechercher">
            <INPUT TYPE="reset" class="btn" NAME="annuler" VALUE=" Annuler ">
        </div>
    </form>

<?php else; ?>

    <?php foreach ($res as $v): ?>

    <!-- Formulaire de modification -->
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
        <div class="input-line">
            <span class="icon"><i class="fa fa-user-circle-o fa-1x" aria-hidden="true"></i></span>
            <input class="put" type="first-name" name="nom" placeholder="Votre nom" value="<?= $v->nom; ?>">
        </div>

        <div class="input-line">
            <span class="icon"><i class="fa fa-list-ul fa-21x" aria-hidden="true"></i></span>
            <input class="put" type="last-name" name="prenom" placeholder="Votre Prénom" value="<?= $v->prenom; ?>">
        </div>

        <div class="input-line">
            <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
            <span></span><input class="put" type="email" name="email" placeholder="Votre Adresse mail" value="<?= $v->email; ?>">
        </div>

        <div class="input-line">
            <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
            <span></span><input class="put" type="text" name="pays" placeholder="Pays" value="<?= $v->pays; ?>">
        </div>

        <div class="input-line">
            <span class="icon"> <i class="fa fa-envelope-o fa-1x" aria-hidden="true"></i></span>
            <span></span><input class="put" type="text" name="ville" placeholder="Ville" value="<?= $v->ville; ?>" />
        </div>

        <div class="input-line">
            <input class="btn" type="submit" name="modifier" value="Modifier">
            <INPUT TYPE="reset" class="btn" NAME="annuler" VALUE=" Annuler ">
        </div>
    </form>

    <?php endforeach; ?>

<?php endif; ?>

Merci Balsakup pour ta réponse c'est déj suffisant je vais le tester et le débuger comme tu l'as dit . Merci encore