Code recherche
mirene22
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
voilà mon problème est simple je n'arrive pas à afficher un message d'erreur lorsque je ne trouve pas le produit recherché dans la BDD !
exemple : " le produit que vous recherchez est introuvable ! "
EDIT : Ajout des balises de code.
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
voilà mon problème est simple je n'arrive pas à afficher un message d'erreur lorsque je ne trouve pas le produit recherché dans la BDD !
exemple : " le produit que vous recherchez est introuvable ! "
<!DOCTYPE html> <html> <head> <title>Rechercher un produit</title> <meta charset="utf-8"/> </head> <body background="images/20.jpg" > <font size="5"><font color="black"> <DIV Align="center" > <h1><font size="20"><font color="yellow"> RECHERCHE PRODUIT </font></font></h1> <fieldset style="width: 600px;"> <form method="post" action="rechercher.php"> Nom du produit: <input type="text" name="nom"><br/> <div style="text-align:center;"> <input type="submit" value="rechercher"/> <input type="reset" name="Annuler" value="annuler"/> </form> <?php // On commence par récupérer le champ if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; // On vérifie si le champ est vide ?> <font size="4"><b> <center> <?php if((empty($nom))||($_POST['nom']!=$nom)) { echo '<font color="red"> Désolé, votre recherche ne contient aucun résultat. </font>'; } // Aucun champ n'est vide, on peut enregistrer dans la table else { mysql_connect("localhost","root",""); // Connexion à MySQL mysql_select_db("superette"); // Sélection de la base //requête SQL: $sql = "SELECT * FROM produit WHERE nom ='$nom'" ; //exécution de la requête: $requete = mysql_query($sql); if ($requete){ //affichage des données: while( $result = mysql_fetch_array($requete) ) { ?> <font size="6"> <div align="center"><?php echo'le nom : ',($_POST['nom']);?> </br> <?php echo 'Designation : '.$result['designation'];?></br> <?php echo 'Categorie : '.$result['categorie'];?></br> <?php echo'Prix :'.$result['prix'];?></br> <?php echo "<img src='images/".$result['photo']."' border=0 height=200 width=200 />";?> </div> </font> <?php }//fin } ?> <?php mysql_close();} ?> </font> </body> </html>
EDIT : Ajout des balises de code.
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
A voir également:
- Code recherche
- Code ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
4 réponses
Bonjour,
Regardes ceci :
https://www.php.net/manual/fr/function.mysql-num-rows.php
PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Regardes ceci :
https://www.php.net/manual/fr/function.mysql-num-rows.php
PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
salut, jordane45
le lien que vous avez posté est assez intéressant, j'ai essayé de l'exploiter dans mon code, le problème maintenant c'est que le message "ce produit est introuvable" s'affiche par défaut, même si le produit existe dans la Bdd !!
voici mon code après la modification :
le lien que vous avez posté est assez intéressant, j'ai essayé de l'exploiter dans mon code, le problème maintenant c'est que le message "ce produit est introuvable" s'affiche par défaut, même si le produit existe dans la Bdd !!
voici mon code après la modification :
<!DOCTYPE html> <html> <head> <title>Rechercher un produit</title> <meta charset="utf-8"/> </head> <body background="images/20.jpg" > <font size="5"><font color="black"> <DIV Align="center" > <h1><font size="20"><font color="yellow"> RECHERCHE PRODUIT </font></font></h1> <fieldset style="width: 600px;"> <form method="post" action="rechercher.php"> Nom du produit: <input type="text" name="nom"><br/> <div style="text-align:center;"> <input type="submit" value="rechercher"/> <input type="reset" name="Annuler" value="annuler"/> </form> <?php // On commence par récupérer le champ if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; // On vérifie si le champ est vide ?> <font size="4"><b> <center> <?php mysql_connect("localhost","root",""); // Connexion à MySQL mysql_select_db("superette"); // Sélection de la base $result = mysql_query("SELECT * FROM produit WHERE nom ='$nom'"); $num_rows = mysql_num_rows($result); Ce produit est introuvable'; mysql_close(); ?> </font> </body> </html>
le problème maintenant c'est que le message "ce produit est introuvable" s'affiche par défaut,
normal...
regarde ligne 42 de ton code....
Il manque .. un IF .. et aussi un ECHO .. et bien sûr.. des quotes ....
<font size="4"><b> <center> <?php // La connexion à la BDD serait mieux dans un autre fichier // dont tu ferais juste un INCLUDE. mysql_connect("localhost","root",""); // Connexion à MySQL mysql_select_db("superette"); // Sélection de la base // On commence par récupérer le champ si existe et non vide $nom=isset($_POST['nom']) && !empty(($_POST['nom']) ?$_POST['nom']:NULL; if($nom){ $result = mysql_query("SELECT * FROM produit WHERE nom ='$nom'"); $num_rows = mysql_num_rows($result); if($num_rows<=0){ echo '<br>Ce produit est introuvable'; } }else{ echo "<br>La variable nom n'existe pas !"; }
PS: Où est passé la PDO ou le MYSQLI_ ?
Tu es toujours avec l'ancienne extension mysql_ ... c'est dommage...
je n'arrive pas à comprendre la partie ( ?$_POST['nom']:NULL; ) de la ligne suivante :
à quoi serve-t-elle ?
effectivement je travaille avec l'ancienne extension Mysql et je ne trouve pas assez de solutions à mes problèmes sur le net je crois que je dois commencer à utiliser le PDO
// On commence par récupérer le champ si existe et non vide $nom=isset($_POST['nom']) && !empty(($_POST['nom']) ?$_POST['nom']:NULL;
à quoi serve-t-elle ?
effectivement je travaille avec l'ancienne extension Mysql et je ne trouve pas assez de solutions à mes problèmes sur le net je crois que je dois commencer à utiliser le PDO
C'est ce qu'on appelle l'écriture TERNAIRE...
En gros.. c'est un IF.
et le ISSET sert à s'assurer que la variable existe.
Autrement dit.. cette ligne de code peut se traduire ainsi .
Si la variable $_POST['nom'] existe et si elle n'est pas vide.. alors la variable $nom prend comme valeur $_POST['nom'] .. sinon.. elle prend la valeur NULL.
En gros.. c'est un IF.
et le ISSET sert à s'assurer que la variable existe.
Autrement dit.. cette ligne de code peut se traduire ainsi .
Si la variable $_POST['nom'] existe et si elle n'est pas vide.. alors la variable $nom prend comme valeur $_POST['nom'] .. sinon.. elle prend la valeur NULL.
bonjour, merci pour votre réponse je me noie dans un verre d'eau comme on dit ! c'est censé être assez simple de faire une recherche je sais pas quel est mon problème ! maintenant lorsque je tape un faux produit on ne m'affiche rien (pas de message d'erreur)
voilà mon dernier essai :
voilà mon dernier essai :
<?php // On commence par récupérer le champ if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; //requête SQL: mysql_connect("localhost","root",""); // Connexion à MySQL mysql_select_db("superette"); // Sélection de la base $sql = "SELECT * FROM produit WHERE nom ='$nom'" ; //exécution de la requête: $requete = mysql_query($sql); //affichage des données: while( $result = mysql_fetch_array($requete) ) { ?> <font size="6"> <div align="center"> <?php echo'le nom : ',($_POST['nom']);?> </br> <?php echo 'Designation : '.$result['designation'];?></br> <?php echo 'Categorie : '.$result['categorie'];?></br> <?php echo'Prix :'.$result['prix'];?></br> <?php echo "<img src='images/".$result['photo']."' border=0 height=200 width=200 />";?> </div> </font> <?php } mysql_close(); ?>
tu as inversé :
... comment connaitre le nombre de lignes .. si tu n'as pas executé la requête ??
NB : Prends l'habitude d'utiliser l'écriture TERNAIRE pour la récupération de tes variables..
$num_rows = mysql_num_rows($sql); //exécution de la requête: $requete = mysql_query($sql);
... comment connaitre le nombre de lignes .. si tu n'as pas executé la requête ??
NB : Prends l'habitude d'utiliser l'écriture TERNAIRE pour la récupération de tes variables..
$nom=isset($_POST['nom']) && !empty(($_POST['nom']) ?$_POST['nom']:'';
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top