Pas de résultat lorsqu'il n'existe pas en bdd
Résolu
ismael-ouatt
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
nagaD.scar Messages postés 4272 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travaille sur un projet pour mon entreprise. je dois faire une application web gérant un de nos département.
Sur cette image ci-dessus vous constaterez qu'il ya a 3 champde recherche, pour le moment je travail avec le premier champ "N° GIT". en entrant une donnée dans le champ N° GIT, il doit faire une recherche en base de donnée pour savoir sil existe ou pas. s'il existe, alor je serai redirigé vers une page x, dans le cas contraire, je serai redirigé vers une page y. voici mon code :
Ce que je constate, c'est que mon code marche quand la valeur entrée se trouve en bdd. dans le cas contraire, j'ai aucune réaction, pas de redirection, même quand je fais un echo, il n'y a pas de réponse, aucune réaction, j'ai cherché depuis plusieurs heurs à remédier à ce problème mais j'ai pas pu. Quelqu'un peut-il m'aider svp!
Merci !
Je travaille sur un projet pour mon entreprise. je dois faire une application web gérant un de nos département.

Sur cette image ci-dessus vous constaterez qu'il ya a 3 champde recherche, pour le moment je travail avec le premier champ "N° GIT". en entrant une donnée dans le champ N° GIT, il doit faire une recherche en base de donnée pour savoir sil existe ou pas. s'il existe, alor je serai redirigé vers une page x, dans le cas contraire, je serai redirigé vers une page y. voici mon code :
<?php
try
{
$bdd=new PDO('mysql:host=localhost;dbname=my_db','login','password');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
////////////D'abord nous vérifierons si une valeur a été rentrée//////////////////////////////////////
if(isset($_POST['rechEquipement']))
{
$numGIT=htmlspecialchars($_POST['numGIT']);
$numEnt=htmlspecialchars($_POST['numEnt']);
$numSerie=htmlspecialchars($_POST['numSerie']);
if(!empty($_POST['numGIT']) OR !empty($_POST['numEnt']) OR !empty($_POST['numSerie']))//vérification si l'un des champ a été renseigné
{
switch(isset($_POST['rechEquipement']))
{
case $numGIT:
//echo 'numero git selectionné';
$rech=$bdd->prepare('SELECT * FROM equipement WHERE code_git LIKE ?');//Chercher les enregistrements dans la table equipement dont le code GIT est comme la valeur entrée dans le champ numGIT
$rech->execute(array($_POST['numGIT']));//excécute la requete
$count=$rech->rowCount();
while($result=$rech->fetch())
{
//echo $result['nom_equipement'];
/*switch($count)
{
case 0:
header ('Location:operation.php');
break;
case 1:
header ('Location:etalonnagey.php');
break;
default;
header ('Location:operation.php');
}*/
if($count>=1)
{
/*echo $count.' résultats trouvé';
echo 'Cette valeur existe en base de données';
echo $result['nom_equipement'];*/
header ('Location:etalonnagey.php');
}
else//Si cette valeur n'existe pas en base de données
{
/*echo $count.' résultat trouvé';
echo 'Cette valeur n\'existe pas en base de données';*/
header ('Location:operation.php');
}
}
break;
case $numEnt:
//echo 'numero entreprise selectionné';
$rech=$bdd->prepare('SELECT * FROM equipement WHERE id_entreprise LIKE ?');
$rech->execute(array($_POST['numEnt']));
while($result=$rech->fetch())
{
echo $result['nom_equipement'];
/*if(isset($result['nom_equipement']))//SI cette valeur existe en base de données
{
//echo 'Cette valeur existe en base de données';
header ('Location:etalonnagey.php');
}
else//Si cette valeur n'existe pas en base de données
{
echo 'Cette valeur n\'existe pas en base de données';
//header ('Location:etalonnagen.php');
}*/
}
break;
case $numSerie:
echo 'numero de serie selectionné';
break;
default:
}
}
else
{
$erreurverif='<font color="red">Veillez renseigner un champ SVP !</font>';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Etalonnage</title>
<meta charset="utf-8">
</head>
<body>
<h3>Etalonnage<hr></h3>
<div id="etalonnage">
<form method="POST" action="">
<fieldset>
<table>
<tr>
<tr>
<caption><i>Recherche de l'équipement en base de données à partir du numéro GIT, de l'identification interne ou du numéro de série. S'il n'existe pas, cela signi qu'il n'a jamais été étalonné ou vérifié par GIT. Dans ce cas remplissez directement le formulaire.</i></caption>
</tr>
</tr>
</tr>
<td><input type="text" id="numGIT" name="numGIT" placeholder="N° GIT" /></td><td>    </td>
<td><input type="text" id="numEnt" name="numEnt" placeholder="N° Entreprise" /></td><td>    </td>
<td><input type="text" id="numSerie" name="numSerie" placeholder="N° de série" /></td><td>    </td>
<td><input type="submit" value="Vérifier" id="rechEquipement" name="rechEquipement"/><td>
</tr>
</table>
</fieldset>
<?php
if (isset($erreurverif))
{
echo $erreurverif;
}
?>
</form>
<a href="operation.php" rel="nofollow noopener noreferrer" target="_blank">Cet équipement ne possède pas de code GIT</a>
</form>
</div>
</body>
</html>
Ce que je constate, c'est que mon code marche quand la valeur entrée se trouve en bdd. dans le cas contraire, j'ai aucune réaction, pas de redirection, même quand je fais un echo, il n'y a pas de réponse, aucune réaction, j'ai cherché depuis plusieurs heurs à remédier à ce problème mais j'ai pas pu. Quelqu'un peut-il m'aider svp!
Merci !
A voir également:
- Pas de résultat lorsqu'il n'existe pas en bdd
- Resultat foot - Télécharger - Vie quotidienne
- Ymail.com existe - Forum Réseaux sociaux
- Obtenir une adresse ymail - Forum Mail
- Datedif excel n'existe pas ✓ - Forum Excel
- Un périphérique qui n'existe pas a été spécifié - Forum Matériel & Système
2 réponses
Salut,
J ai juste regardé vite fait, mais cette partie n est pas bonne: si le fetch marche, c'est que tu as un résultat.
Donc il faut sortir le vérification du count:
naga
$count=$rech->rowCount(); while($result=$rech->fetch()) { //echo $result['nom_equipement']; /*switch($count) { case 0: header ('Location:operation.php'); break; case 1: header ('Location:etalonnagey.php'); break; default; header ('Location:operation.php'); }*/ if($count>=1) { /*echo $count.' résultats trouvé'; echo 'Cette valeur existe en base de données'; echo $result['nom_equipement'];*/ header ('Location:etalonnagey.php'); } else//Si cette valeur n'existe pas en base de données { /*echo $count.' résultat trouvé'; echo 'Cette valeur n\'existe pas en base de données';*/ header ('Location:operation.php'); } }
J ai juste regardé vite fait, mais cette partie n est pas bonne: si le fetch marche, c'est que tu as un résultat.
Donc il faut sortir le vérification du count:
$count=$rech->rowCount(); if($count>=1) { while($result=$rech->fetch()) { header ('Location:etalonnagey.php'); } } else//Si cette valeur n'existe pas en base de données { header ('Location:operation.php'); }
naga
Bonjour,
Par contre... NE PAS UTILISER ROWCOUNT
Le résultat n'est pas garanti pour des requêtes de type SELECT
Dans le manuel PHP il est indiqué :
A la place... tu peux faire un fetchAll et faire un count (php) dessus
Par contre... NE PAS UTILISER ROWCOUNT
Le résultat n'est pas garanti pour des requêtes de type SELECT
Dans le manuel PHP il est indiqué :
Si la dernière requête SQL exécutée par l'objet PDOStatement associé est une requête de type SELECT, quelques bases de données retourneront le nombre de lignes retournées par cette requête. Néanmoins, ce comportement n'est pas garanti pour toutes les bases de données et ne devrait pas être exécuté pour des applications portables.
A la place... tu peux faire un fetchAll et faire un count (php) dessus
//recuperation propre des variables AVANT de les utiliser $GIT = !empty($_POST['numGIT']) ? $_POST['numGIT'] : NULL; //Preparation de la requete $sql = "SELECT * FROM equipement WHERE code_git LIKE ?"; $datas = array($git); //exécution de la requete : $rech=$bdd->prepare($sql); $rech->execute($datas); //On stocke le resultat dans un array $resultat = $rech->fetchAll(); //on regarde combien de résultats sont retournés par la requete $count = !empty($resultat ) ? count($resultat ) : 0; //on teste si il y a eu des resultats if($count >0 ){ //la valeur existe header ('Location:etalonnagey.php'); exit(); }else{ //pas de resultat header ('Location:operation.php'); exit() ; //toujours mettre un exit apres une redirection }