COMMENT filtrer les données provenant d'une base de données

Fermé
Soumahila - 19 oct. 2022 à 12:31
 soumahila - 21 oct. 2022 à 13:44

Bonjour tout le monde,

Je travaille sur mon projet de fin d'étude ,et dans ce projet là il Ya une partie là où je dois afficher et filtrer les données provenant d'une base de données en fonction d'une liste déroulante HTML . Franchement dit après toutes les tentatives cela fait maintenant très longtemps que je suis bloqué au même niveau. SVP J'ai vraiment besoin de votre aide pour franchi cette étape . AIDEZ MOI SVP.

MERCI.

16 réponses

yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
19 oct. 2022 à 12:50

bonjour,

quand tu postes du code, merci de le faire comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

As-tu une question à propos de ce code?

0

Bonjour,

ok merci je vais immédiatement le rectifié.

0
<body>

	   
	<div class="container" >
	 	
		<div class="box-1">
			<div class="profil">
				<img src="logo.png" alt="">
				<h3>Centre medical de suivi des donneurs de sang</h3>
			</div>
			<div class="input">
			 <form action="" method="POST">
				<SELECT name="AGE" id="" class="option">
					<option value="">--AGE--</option>
					<option value="1">TOUS</option>
					<option value="2">ADULTE</option>
					<option value="">ENFANT</option>
				</SELECT>
			</div> 
			<div class="input" >
				<Select name="Sexe" id="" class="option" >
					<option value="" ="">----SEXE--</option>
					<option value="1">H</option>
					<option value="2">F</option>
					<option value="3">Autres</option>
				</Select> 
			</div>
			<div class="input">
					<input type="date" name="Date_Visite" class="option"> 
			</div>
			<div class="input">
				<Select name="Resultat" id="" class="option">
					<option value="" ="">----RESULTAT DEPISTAGE--</option>
					<option value="1">TOUS</option>
					<option value="2">NEGATIF</option>
					<option value="2">POSITIF</option>
				</Select>
			 </form>	
				<input type="submit" name="submit" id="" value="Afficher">
			</div>
		</div>
		<div class="box-2">	
			
			<div class="haut">
				<p class="titre">Patients Dépistés</p>
				
			</div>
			     <div class="sousbox2">
			     <table class="table">
			     	<h1 align="center">TABLEAU</h1>
			     	<thead>
			     		<tr>
			     			<th>Code</th>
			     			<th>DateVisite</th>
			     			<th>Sexe</th>
			     			<th>AGE</th>
			     			<th>Resultat</th>
			     		</tr>
			     	</thead>
			     	<tbody>
			     	<?php
			     		
	                 if (isset($_POST['submit'])) {
 
                           $AGE = $_POST['AGE'];
                           $Sexe = $_POST['Sexe'];
                           $DateVisite = $_POST['DateVisite'];
                           $Resultat = $_POST['Resultat'];

                         if($AGE != "" || $Sexe != "" || $DateVisite != "" || $Resultat != "" ){
                         	$query = "SELECT * FROM tblecdv where AGE = '$AGE' OR Sexe = '$Sexe' OR DateVisite='$DateVisite' AND RESULTAT = '$RESULTAT' ";

                         	$result=mysqli_query($connection, $query) or die('error');
                         	  
	                     
	                      	 while ($row = $result->fetch_assoc()) {
	                      	 	
	                      
			     		   echo "
  	                        <tr>
			     			   <td>" . $row["Code"] ."</td>
			     			   <td>" . $row["DateVisite"] ."</td>
			     			   <td>" . $row["Sexe"] ."</td>
			     			   <td>" . $row["AGE"] ."</td>
			     			   <td>" . $row["RESULTAT"] ."</td>
			     		    </tr>";
			     		   
			     		    
                            
                          
                            
			     		  }
			     		}
			     		?>
			     	</tbody>
				
		</div>
		<div class="">
		   	
		</div>
		
	 	   
		

	</div>
</body>
0

SVP J'ai vraiment besoin de votre aide pour franchi cette étape . AIDEZ MOI SVP.

Merci

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
19 oct. 2022 à 13:40

As-tu une question à propos de ce code?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Oui mon problème est que quand j'exécute cette portion de code rien ne s'affiche à l'affichage les données issu de la base de données ne s'affiche pas alors que toutes les connexions sont belles et bien établies

0
jordane45 Messages postés 38037 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 février 2024 4 621
19 oct. 2022 à 14:07

Bonjour,

Fais donc un echo de ta variable $query  ... puis testes le résultat directement dans ta bdd (via phpmyadmin)

Tu devrais voir que ta requête est mal formulée ....


.
Cordialement,
Jordane

0
echo
                         	$query = "SELECT * FROM tblecdv where AGE = '$AGE' OR Sexe = '$Sexe' OR 
                            DateVisite='$DateVisite' AND RESULTAT = '$RESULTAT' ";
                             exit();

Il m'affiche toujours rien.

Cordialemnt.

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
19 oct. 2022 à 14:45
$query = "SELECT * FROM tblecdv where AGE = '$AGE' OR Sexe = '$Sexe' OR DateVisite='$DateVisite' AND RESULTAT = '$RESULTAT' ";
echo $query;

puis teste le résultat directement dans ta bdd (via phpmyadmin)

0

Bonjour,

Merci beaucoup yg_be  votre Aide. Le problème d'affichage est résolu mes données s'affiche correctement . maintenant en ce qui concerne le filtrage le filtrage des données à travers les listes déroulante html  franchement dit j'ai besoin de votre aide.

<?php
// on va créer une connexion a la base de données 
$server="127.0.0.1";
$user="root";
$pass ="";
$dbname="base_kokhoua";

// Create connection
$connection = mysqli_connect($server, $user, $pass, $dbname);

//
 if (!$connection){
 	die("conenction failed: " . mysqli_connect_error());
  }
  else{
  	  echo "connection Etsablished";
  }


  $query = "SELECT * FROM tblecdv" ;
  

  $result=mysqli_query($connection, $query) or die('error');


  //if (!result) {
  	 //die("Invalid query: " . $connection->error);
  	
  //}



?>
<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		.container{
           width: 100%;
           height:100%;
           color: ;
           margin: auto	;
           display:flex;
           border :  2px solid black;
             }
        .box-1{
        	width: 100%;
        	height:100%;
        	margin: 3px; 
        	border: 1px solid black;	
        } 
        .box-2{
        	width:800px;
        	height:800px;
        	margin: 3px; 
        	border:1px solid black;	
        }   
        .container .box-1 .profil{
        	display: block;
		    width: 300px;
		    height: 200px; 
		    border:1px solid black;
		    background-color: #37C9C9;

        }
        .input{
        	display: block;
        	width: 300px;
        	height: 84px;
        	border:1px solid black;

        }
        .option{
        	display:block; 
        	width:250px;
        	height: 20px;
        	margin: 25px	;
        	border:1px solid black;
        	text-align: center;

        }
        .haut{
        	display: block;
        	width: 800px;
        	height: 100px;
        	background-color: #37C9C9;
        	border:1px solid black;
        	margin: auto;
        }
        .haut .titre{
           margin: 30px;
           text-align:center;
           font-weight: bold;
           color: #000000;
           font-size: 40px;

        }
         .Tableau{
         	text-align:center;
        	width: 900px;
        	height:500px;
        	border:3px solid black;
        	margin: auto;
         }
         table{
         	border-collapse: collapse;
         	margin:auto;
         	width: 500px;
         	height: 200px;
         }
         th, td{
         	border: 1px solid black;
         	padding: 10px;
         	border-spacing: 5px;
         	font-weight: bold;
         	width: 500px;
 

         }
          
         .sousbox2{
         	width: 800px;
        	height:500px;
        	display: block;
        	overflow: auto;

         }
       
        
       

		

	</style>
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
</head>
<body>

	   
	<div class="container" >
	 	
		<div class="box-1">
			<div class="profil">
				<img src="logo.png" alt="">
				<h3>Centre medical de suivi des donneurs de sang</h3>
			</div>
			<div class="input">
			 <form action="" method="POST">
				<SELECT name="AGE" id="" class="option">
					<option value="">--AGE--</option>
					<option value="1">TOUS</option>
					<option value="2">ADULTE</option>
					<option value="">ENFANT</option>
				</SELECT>
			</div> 
			<div class="input" >
				<Select name="Sexe" id="" class="option" >
					<option value="" ="">----SEXE--</option>
					<option value="1">H</option>
					<option value="2">F</option>
					<option value="3">Autres</option>
				</Select> 
			</div>
			<div class="input">
					<input type="date" name="Date_Visite" class="option"> 
			</div>
			<div class="input">
				<Select name="Resultat" id="" class="option">
					<option value="" ="">----RESULTAT DEPISTAGE--</option>
					<option value="1">TOUS</option>
					<option value="2">NEGATIF</option>
					<option value="2">POSITIF</option>
				</Select>
			 </form>	
				<input type="submit" name="submit" id="" value="Afficher">
			</div>
		</div>
		<div class="box-2">	
			
			<div class="haut">
				<p class="titre">Patients Dépistés</p>
				
			</div>
			     <div class="sousbox2">
			     <table class="table">
			     	<h1 align="center">TABLEAU</h1>
			     	<thead>
			     		<tr>
			     			<th>Code</th>
			     			<th>DateVisite</th>
			     			<th>Sexe</th>
			     			<th>AGE</th>
			     			<th>Resultat</th>
			     		</tr>
             </thead> 
              <tbody>
                <?php
                while ($row = $result->fetch_assoc()) { 
                  echo "
                  <tr>
                    <td>" . $row["Code"] . "</td>
                    <td>" . $row["DateVisite"] . "</td>
                    <td>" . $row["Sexe"] . " </td>
                    <td>" . $row["AGE"]  .  "</td>
                    <td>" . $row["Resultat"] . "</td>
                  </tr>";
                  
                }
                ?>
              </tbody>
			     	
			     	
		</div>
		<div class="">
		   	
		</div>
		
	 	   
		

	</div>
</body>
</html>

Voici Tout mon code .les données s'affiche correctement mais je ne sais pas comment faire pour filtrer les données en fonction des options des listes déroulantes.

Cordialement.

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
20 oct. 2022 à 13:33

J'ai l'impression que tu as supprimé le code qui filtrait les données.

0

Oui   parce que quand je mets le code de filtrage les données n'apparaissent plus et quand le modifie pour juste l'affichage il m'affiche  mes données doc je me suis dire que peut être la méthode de filtrage n'est pas correcte donc du coup j'ai dû le supprimé.

0

Salut, quelques remarques pour vous aider:

Si vous parlez de tri sur la base de données il s'agit de SQL(langage des bases de données et de programmation).

Pour vérifier vos requêtes(SQL) vous pouvez les tester directement sur le serveur de bases de données en utilisant la console. Avec PHPMyadmin/WAMP la console SQL est accessible directement dans les menus.

PHP est un langage serveur qui fait le lien entre une page HTML et la base de données dans les deux sens:

Du serveur PHP pour afficher des données issues de la base et "écrire" la page HTML, en tout cas les parties dynamiques. PHP va permettre de traiter les données(issue de la requête sur la BDD) et de les afficher

De la page HTML vers la base de données, PHP permet de construire la requête pour par exemple une insertion en récupérant des données envoyées par la page HTML. Cela se fait généralement en utilisant un formulaire HTML correctement renseigné.

Dans le cas qui vous intéresse il vous faut construire le formulaire avec les données utiles(une liste déroulante par ex.) puis faire la requête SQL à partir des données reçues par PHP. Puis traiter à nouveau les résultats de la requête pour les afficher dans le HTML.

Voilà on peut déjà remarque que vous avez un soucis dans le formulaire HTML puisque vous ne remplissez pas l'attribut action qui doit indiquer une page PHP qui va rreçevoir et traiter les données envoyées du formulaire HTML:

<form action="" method="POST">

Une recherche "formulaire PHP" vous fournira une liste de tutos et d'exemple complet. Pour le reste le langage SQL est relativement simple et adapté à toutes ortes de tris et regroupements mais cela ne veut pas dire qu'il ne faut pas apprendre(et vérifier vos requêtes éventuellement).

bon travail.

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
20 oct. 2022 à 15:15

Repars de la situation que tu présentais au départ de la discussion, et appliques la suggestion en #9.

0

Ok merci pour votre remarque .

Les listes déroulantes ont été déjà fait, et les options des différentes listes déroulantes ont déjà été rempli avec html .Mais ce que je veux fait c'est juste les filtré avec ces options-là.

Aussi l'attribut action vient d'être rempli mais toujours rien.

Ou bien vous demandez à ce que je récupère les données directement de la base de données à travers PHP pour rempli les options?

Cordialement.

0

yg_be ok je suis revenu au point de départ mais ça ne m'affiche toujours rien.

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
20 oct. 2022 à 17:15

As-tu appliqué la suggestion en #9?

0

Bonjour,

excusez-moi  si je vous  répond maintenant c'est que à la maison je n'ai pas de connexion.

après avoir appliqué vos remarques et suggestion mes données n s'affiche toujours pas.

j'ai l'impression que le problème est du à l'affichage au niveau de php ou HTML parce qu'il ne m'affiche aucun message d'erreur le seul message qu'il m'affiche est le message qui montre que la connexion a été établie au niveau de la connexion à la base de donnée

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
21 oct. 2022 à 12:31

La suggestion en #9, c'est d'afficher le texte de la requête, et de la tester directement dans ta bdd (via phpmyadmin).

As-tu fait cela?

0

OUI QUAND j'exécute la requête dans PHPMYADMIN elle m'affiche aucune valeur mais les en tête  de colonnes

0
0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
21 oct. 2022 à 13:20

Merci de partager du texte, plutôt que des images.

Ne vois-tu pas que ta requête SQL est incorrecte?

0

Oui exactement elles est incorrect 

0
yg_be Messages postés 22475 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 février 2024 1 444
21 oct. 2022 à 13:41

Prépare alors à la main une requête SQL correcte, et essaie ensuite de l'obtenir en PHP.

0

 Ok d'accord j'essai et je vous revient.

0