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

Soumahila -  
 soumahila -

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.

A voir également:

16 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

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
Soumahila
 

Bonjour,

ok merci je vais immédiatement le rectifié.

0
soumahila
 
<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
Soumahila
 

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

Merci

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

As-tu une question à propos de ce code?

0

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

Posez votre question
SOUMAHILA
 

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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

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 ....


0
soumahila
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
$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
soumahila
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

0
soumahila
 

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
petitours
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

0
soumahila
 

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
soumahila
 

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

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

As-tu appliqué la suggestion en #9?

0
soumahila
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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
SOUMAHILA
 

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

0
soumahila
 
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

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

0
soumahila
 

Oui exactement elles est incorrect 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

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

0
soumahila
 

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

0