Menu

Pas de résultat lorsqu'il n'existe pas en bdd [Résolu/Fermé]

ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 23 nov. 2016 à 16:33 - Dernière réponse : nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention
- 28 nov. 2016 à 14:56
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 :

<?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 !


Afficher la suite 

20 réponses

xpress22 53 Messages postés mardi 27 novembre 2007Date d'inscription 26 novembre 2016 Dernière intervention - 23 nov. 2016 à 16:38
nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention - Modifié par nagaD.scar le 23/11/2016 à 15:35
0
Utile
18
Salut,

   $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
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 28 nov. 2016 à 13:42
après la redirection sur ma page cible
jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention > ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 28 nov. 2016 à 13:45
Donc normal que ça ne marche pas ...
Tu dois assigner la valeur lorsqu'elle existe (c'est à dire après le SUBMIT ).
Lorsque tu fais une redirection.... les variables POST sont remises à zéro...
Tu dois donc assigner la valeur AVANT de faire la redirection.
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 28 nov. 2016 à 13:57
je ne comprend pas bien... "assigner la valeur avant la redirection (c'est à dire après le submit)"
jordane45 20602 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention > ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 28 nov. 2016 à 14:02
Bon.. de toutes façons.. il s'agit là d'une nouvelle question...
Merci donc d'ouvrir une nouvelle discussion pour ce problème.
Pense à y indiquer le code que tu utilises
nagaD.scar 4255 Messages postés samedi 8 septembre 2007Date d'inscription 16 avril 2018 Dernière intervention - 28 nov. 2016 à 14:56
haha t'es pas de bonne humeur ^^

En gros ce que tu fais, si on compare avec un envoi de colis par exemple, c'est récupérer le coli dans le centre de tri (ton POST) puis envoyé quelqu'un livre le colis (redirection) sans lui avoir au préalable donné le colis ... le gas se retrouve main vide devant le client (la page redirigée).

Donc l'étape qu il te manque c'est déplacer le colis du centre au camion AVANT que le camion parte (tu change donc de conteneur) => c'est le même principe, avant de rediriger, tu vas entrer les valeur contenu dans $_POST qui a une durée de vie limitée à la page destinataire dans le $_SESSION qui elle a une durée de vie identique à ta session.


Plus simple:
$_SESSION['numGIT']=$_POST['numGIT'];


se fera avant
header ('Location:etalonnagey.php');


naga