Bonjour,
J'essaie de faire une sorte d'annuaire local.
J'ai deux formulaires. Un pour l'inscription qui demande de renseigner le nom, le numéro de téléphone et un commentaire (qui fonctionne parfaitement, les inscriptions se font dans la base de données) et un pour la recherche à partir du nom (donc qui ne comporte que le champ nom et un bouton de validation).
Mon problème : Lorsque je tape un nom existant dans la base de données, j'ai bien le nom qui s'affiche mais pour le reste des données (numéro de téléphone, commentaire) j'ai le message d'erreur suivant :
Warning: Undefined array key "nom" in C:\xampp\htdocs\sitesweb\recherche.php on line 29
Voici le code du formulaire et le script de ma requête

                <form method="POST" id="form2" action="recherche.php" target="_blank">
                    <div>
                        <input type="text" id="nom" name="nom" size="30" placeholder="Saisissez le nom" value="<?php if (isset($_POST['nom'])) echo htmlspecialchars($_POST['nom']);?>">
                            <?php 
                                if (isset($_POST['nom']) && !empty($_POST['nom'])){
                                    echo '';
                        }
                            ?>
                    </div>
                    <input type="button" id="envoyer" name ="envoyer" value="Envoyer" />
                </form>
$requete = $connexion->prepare("SELECT * FROM membres WHERE nom=?");
 $requete->execute([$_POST['nom']]); 
 $recherche = $requete->fetch();
 echo '<span class="titre_form">';
 echo '<u>Résultat de la recherche</u><br /><br />';
 if ($recherche) {
    echo 'le nom '.$_POST['nom'].' figure bien dans l\'annuaire';
    echo '<br />Son numéro de téléphone est '.$_POST['telephone'];
    echo '<br />Son commentaire est '.$_POST['message'];
 } else {
    echo 'Cette personne ne figure pas dans l\'annuaire';
 }
 echo '</span>';

Merci pour votre possible aide

6 réponses


Carouge10
Réponse acceptée

Bonsoir,
Tout le code est sur le même fichier? Si oui, tu vérifies bien avant de faire la requête que le formulaire a bien été soumis ?
le téléphone et message n'existe pas dans le tableau $_POST, c'est celui de $recherche qu'il faut

Quand tu fais isset + !empty, tu peux retirer isset car cette dernière est comprise dans la fonction empty

Bonsoir , non le code est sur 2 fichiers differents Le formulaire est sur un fichier form_rech.php qui appelle le fichier recherche.php (qui est dans le action de la balise form). Quand je valide l'envoi le fichier recherche s'affiche bien dans une autre fenêtre avec le message d'erreur que j'ai joins

"le téléphone et message n'existe pas dans le tableau $_POST, c'est celui de $recherche qu'il faut"

Oui c'est bien ce que je pense (quand je fais un var_dump j'ai une reponse nulle) mais je ne sais pas comment faire pour l'afficher

tu as résolu ton soucis pour avoir valider ton sujet ?
utilise le "markdown" pour insérer ton code
sur le dernier code, il n'y a pas de condition donc tu affiches tous les membres

OUPS désolé oui c'est bon. J'ai résolu mon problème c'était bête comme chou

un bug du forum, fait redescendre ton message vu que tu as éditer ton message
tu as résolu ton soucis pour avoir valider ton sujet ?

sur le dernier code, il n'y a pas de condition donc tu affiches tous les membres

Oh non désolé oui c'est un avantage. J'ai répondu à mon inquiétude que c'était maladroit comme un chou. Merci beaucoup pour vos suggestions..... cps test ometv