Faire une recherche par élimination

Résolu
manoula -  
 manoula - 5 juin 2010 à 13:24
Bonjour, tous le monde

je suis débutante en php , et j'aimerai bien quelqu'un qui m'aide pour résoudre ce problème.

j'ai une partie dans mon backoffice qui contient une liste(prmis_list.php) qui affiche tous les gens qui veulent avoir leur permis de bâtir, la table contenant tous ses informations s'appelle "permis" avec les champs suivante : CIN,identifiant,nom,adresse,date,sujet,architecte et enfin etat. Qunad je veux ajouter un permis j'insere les donnes dans une page qui s'appelle permis_ detail.php ensuite l'insertion s'affiche dans la page permis_liste.php jusqu'à ici tous va bien :)
le grand problème c 'est que ma liste est devenu très long donc j'ai décidé de faire dans la page permis_liste.php un petit moteur de recherche qui m'aide à chercher un permis bien précis bien sur par élimination , j'ai crée le formulaire qui contient cette recherche spécifique(avec un select pour spécifier la recherche soit avec le nom ou CIN ou bien autre chose) mais j'ai trouver des difficultés dans le code php :( ????

voila la page permis_liste.php
<?php  
    require("access.inc.php");  
   
 require("../lib/db_connect.inc.php");  
 require("../lib/util.php");  
   
 require_once("../lib/bd.class.php");  
   
 $connexion=db_connexion();  
    mysql_query("set names utf8");  
 $resultat =mysql_query("SELECT * FROM permis ORDER BY date_depot DESC");  
 ?>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"  
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" lang="ar">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<meta name="description" content="Espace d'administration" />  
<link rel="stylesheet" type="text/css" href="css/administration.css" />  
<title>[Sousse] - Espace d'administration</title>  
<style type="text/css">  
<!--  
.Style1 {color: #26c}  
-->  
</style>  
</head>  

<body >  
<div id="main">  

<?php include('HautPage.php'); ?>  

<h3 class="headerstyle" align="left"> Gestion des Permis </h3>  

<p>  
<form name="ListeNews" method="post" action="Sommaire.php">  
<TABLE WIDTH="650" border="0" align="center" cellpadding="0" cellspacing="0">  
  <TR>  
    <TD ALIGN="LEFT" class="Titre16"><br>  
          
        <div class="TexteDroite"><a href="Permis_Details.php?Num=-1">Ajouter un   
          permis</a></div></TD>  
      
      
  </TR>  
  <tr>  
   <td> </td>  
  </tr>  
   <TR>  
    <TD ALIGN="center" class="Titre16"><br>   
   <span class="Style1">Chercher un permis</span><br />  
   <br />  
      Trier par :  
   <select name="recherche" size="1" style="width: 100px">  
                   <option>CIN</option>  
       <option>N° de Permis</option>  
       <option>Nom</option>  
       <option>Architecte</option>  
          </select>  
   <br /><br />  
     Saisir votre recherche:   
     <input class="TexteDroite" size="15" />  
  <input name="ok" type="submit" value="ok" />  
     <br />  
  <br />  
      
   </TD>  
      
      
  </TR>  
  <TR>  
      <TD align="left" style=" xpadding:20px">   
      <?php  $ligne = mysql_num_rows($resultat);  
    if ($ligne != 0) {  ?>  
        <table border="0" cellpadding="0" cellspacing="0" width="100%" class="Tab">  
          <thead id="thead">  
            <tr>  
       <td width="10%" align="center" valign="middle">CIN</td>  
    <td width="10%" align="center" valign="middle">Identifiant</td>  
              <td width="22%" align="center" valign="middle">Nom et Prénom</td>  
     <td width="14%" align="center" valign="middle">Adresse</td>  
     <td width="14%" align="center" valign="middle">Sujet</td>  
      <td width="14%" align="center" valign="middle">Architecte</td>  
     <td width="11%" align="center" valign="middle">Date du dépot</td>  
         <td width="8%" align="center" valign="middle">Note</td>  
              <td width="4%" align="center" valign="middle"> </td>   
              <td width="1%" align="center" valign="middle"> </td>  
            </tr>  
          </thead>  
          <tbody>  
           <?php  
     $i = 0 ;  
while ($Enreg=mysql_fetch_array($resultat)) {  
   if ($i % 2 == 0) $bgColor = "";  
  else    $bgColor = "#CCCCCC";  
  $i++;  

   ?>  
    <tr onmouseover=" this.bgColor='#ABABAB'" onmouseout="this.bgColor='<?php print $bgColor;?>';" bgcolor="<?php  print $bgColor;?>">  
        <td align="center" valign="middle"><?php print $Enreg["CIN"];?></td>  
             <td align="center" valign="middle"><?php print $Enreg["numeros_permis"];?></td>  
             <td align="center" valign="middle"><?php print $Enreg["nom"];?></td>  
     <td align="center" valign="middle"><?php print $Enreg["adresse"];?></td>  
     <td align="center" valign="middle"><?php print $Enreg["sujet"];?></td>  
     <td align="center" valign="middle"><?php print $Enreg["archit"];?></td>  
     <td align="center" valign="middle"><?php print date2string($Enreg["date_depot"]);?></td>  
     <td align="center" valign="middle"><?php print Etat($Enreg["etat"]);?></td>   
    <td align=center valign="middle"><a href="Permis_Details.php?Num=<?php print $Enreg["id"];?>"><img src="img/voir.gif" border=0></a></td>  
      
              <td width=4% align=center valign="middle"><a href="Permis_Supprime.php?Num=<?php print $Enreg["id"];?>" onClick="return confirm('Voulez-vous supprimer ce Permis ?')"><img src="img/supprimer.gif" border=0></a></td>  
      </tr><?php   
          }  
  ?>   
          </tbody>  
    </table>  
       <?php  } else { echo "  
        <b>Il n'y a aucun contact.</b> ";  
      }?>  
      </TD>  
  </TR>  
</TABLE>  
</form>  

</p>  



</div>  


</body>  
</html>  






merci d'avance

12 réponses

manoula
 
coucou je suis lààààà :)
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Pour commencer:

<select name="recherche" size="1" style="width: 100px">
<option>CIN</option>
<option>N° de Permis</option>
<option>Nom</option>
<option>Architecte</option>
</select>

Ca ne sert à rien en l'état:
Par contre, je te propose de changer ca par:



<select name="recherche" size="1" style="width: 100px">
<option value="CIN">CIN</option>
<option value="numeros_permis">N° de Permis</option>
<option value="nom">Nom</option>
<option value="archit">Architecte</option>
</select>


Ce serait un bon début,,, mais la page reste pardon,, un peu eu,, pas très propre (le passage sans arret entre php et html). Je te propose un sript bp plus joli...
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
<?php

demarage();
affichage();

function demarage(){
require("access.inc.php");
require("../lib/db_connect.inc.php");
require("../lib/util.php");
require_once("../lib/bd.class.php");

mysql_connect($localhost,$root,$xxx); // changer par mot de pass ... etc
mysql_select_db($basededonnee); // Nom de ta bdd
}


function affichage(){
echo'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ar">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Espace d\'administration" />
<link rel="stylesheet" type="text/css" href="css/administration.css" />
<title>[Sousse] - Espace d\'administration</title>
<style type="text/css">
<!--
.Style1 {color: #26c}
-->
</style>
</head>

<body >
<div id="main"> ';

include("HautPage.php");

echo '
<h3 class="headerstyle" align="left"> Gestion des Permis </h3><p>
<form name="ListeNews" method="post" action="Sommaire.php">

<TABLE WIDTH="650" border="0" align="center" cellpadding="0" cellspacing="0">
<TR>
<TD ALIGN="LEFT" class="Titre16"><br>

<div class="TexteDroite"><a href="Permis_Details.php?Num=-1">Ajouter un
permis</a></div></TD>
</TR>
<tr>
<td> </td>
</tr>
<TR>
<TD ALIGN="center" class="Titre16"><br>
<span class="Style1">Chercher un permis</span><br />
<br />
Trier par :
<select name="recherche" size="1" style="width: 100px">
<option value="CIN">CIN</option>
<option value="numeros_permis">N° de Permis</option>
<option value="nom">Nom</option>
<option value="archit">Architecte</option>
</select>
<br /><br />
Saisir votre recherche:
<input class="TexteDroite" size="15" name="texterecherche" />
<input type="submit" value="ok" />
<br />
<br />

</TD>


</TR>
<TR>
<TD align="left" style=" xpadding:20px"> ';

afftableau();

echo ' </TD>
</TR>
</TABLE>
</form>
</p>
</div>
</body>
</html>';
}


function afftableau(){

$resultat=mysql_query("SELECT * FROM permis ORDER BY date_depot DESC");
if (mysql_num_rows($resultat)>0){
echo' <table border="0" cellpadding="0" cellspacing="0" width="100%" class="Tab">
<thead id="thead">
<tr>
<td width="10%" align="center" valign="middle">CIN</td>
<td width="10%" align="center" valign="middle">Identifiant</td>
<td width="22%" align="center" valign="middle">Nom et Prénom</td>
<td width="14%" align="center" valign="middle">Adresse</td>
<td width="14%" align="center" valign="middle">Sujet</td>
<td width="14%" align="center" valign="middle">Architecte</td>
<td width="11%" align="center" valign="middle">Date du dépot</td>
<td width="8%" align="center" valign="middle">Note</td>
<td width="4%" align="center" valign="middle"> </td>
<td width="1%" align="center" valign="middle"> </td>
</tr>
</thead>
<tbody> ';

$type_de_recherche=$isset($_POST['recherche'])?$_POST['recherche']:"";
$txt_de_recherche=$isset($_POST['texterecherche'])?$_POST['texterecherche']:"";

for($i=0;$i<mysql_num_rows($resultat);$i++){
$Enreg=mysql_fetch_array($resultat);
if (i%2==0){$bgColor = "";}else{$bgColor = "#CCCCCC";}
if ($Enreg["type_de_recherche"]==$txt_de_recherche){
echo '<tr onmouseover=" onmouseover="this.bgColor=\'#ABABAB\'" onmouseout="this.bgColor=\''.$bgColor.'\'" bgcolor="'.$bgColor.'">
<td align="center" valign="middle">'.$Enreg["CIN"].'</td>
<td align="center" valign="middle">'.$Enreg["numeros_permis"].'</td>
<td align="center" valign="middle">'.$Enreg["nom"].'</td>
<td align="center" valign="middle">'.$Enreg["adresse"].'</td>
<td align="center" valign="middle">'.$Enreg["sujet"].'</td>
<td align="center" valign="middle">'.$Enreg["archit"].'</td>
<td align="center" valign="middle">'.date2string($Enreg["date_depot"])'.</td>
<td align="center" valign="middle">'.Etat($Enreg["etat"])'.</td>
<td align=center valign="middle"><a href="Permis_Details.php?Num='.$Enreg["id"].'><img src="img/voir.gif" border=0></a></td>
<td width=4% align=center valign="middle"><a href="Permis_Supprime.php?Num='.$Enreg["id"].'" onClick="return confirm(\'Voulez-vous supprimer ce Permis ?\')"><img src="img/supprimer.gif" border=0></a></td>
</tr>';
}
}
echo '</tbody></table>';
}else{
echo "Il n'y a pas de permis";
}

}

?>
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Le problème de ce type de script, c'est que si l'utilisateur souhaite faire une recherche sur un nom par exemple, et que le nom n'existe pas, les titres des colonnes du tableau vont s'afficher... Il y a un autre script qui existe, bp plus simple aussi à mon avis, mais impossible à mettre en place si tu as disons plus de 100.000 lignes ds ta table... (=> trop lourd dans ce cas)

Aussi, à ta place, je n'aurai pas mis de select, mais un simple <input type=text name=recherche> et un bouton submit à coté. Il aurait chercher directement dans toutes les colonnes de ta table le "texte_recherché";

J'espère avoir répondu à tes attentes (PS: C'est un script que j'ai fait de tete sans testé, alors s'il y a des erreurs, dit les moi...
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
je suis connecté si ta besoin...
0
manoula
 
bonjour et merci pour votre réponse :)
c maintenant que je me suis connecté je vais essayer ton script et je te dit ;)
0

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

Posez votre question
manoula
 
coucou moi aussi je suis la :) bon je suis entrain j'essaye ton script si j'ai un pb je te dirais
0
manoula
 
ree :)

2 msg d'arreur :

Notice: Undefined variable: isset in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 110

Fatal error: Call to undefined function: () in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 110

$type_de_recherche=$isset($_POST['recherche'])?$_POST['recherche']:"";
$txt_de_recherche=$isset($_POST['texterecherche'])?$_POST['texterecherche']:"";

???
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
pardon, pas de $ avant isset
$type_de_recherche=isset($_POST['recherche'])?$_POST['recherche']:"";
$txt_de_recherche=isset($_POST['texterecherche'])?$_POST['texterecherche']:"";
0
manoula
 
oui c vrai pas de pb :)

j'ai corrigé mais ...

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 116

Notice: Use of undefined constant i - assumed 'i' in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 115

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
remplacer i par $i
Par contre, $Enreg["type_de_recherche"] à remplacer par $Enreg["$type_de_recherche"] ou encore $Enreg[$type_de_recherche] si ca marche pas
0
manoula
 
merci bien, mais il reste Notice: Undefined index: type_de_recherche
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
OK. ds ce cas,,, peux tu me dire quels st les n° de colonne dans ta table qui corresponde à ;

CIN, numeros_permis, Nom et archit.
0
manoula
 
A oui c l' id qui fait l'auto_increment
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Sinon il y a bien ca à faire: si
CIN = colonne 0,
numeros_permis = colonne 1,
Nom = colonne 3
archit= colonne 7.

alors tu remplaces le select par:

<select name="recherche" size="1" style="width: 100px">
<option value="0">CIN</option>
<option value="1">N° de Permis</option>
<option value="3">Nom</option>
<option value="7">Architecte</option>
</select>


et aussi:

if ($Enreg["type_de_recherche"]==$txt_de_recherche){
par
if ($Enreg[$type_de_recherche]==$txt_de_recherche){

La c'est certain que ça marche...
0
manoula
 
désolé mais il ya des erreurs je croix c la syntax car la ligne 118 :
if ($Enreg[$type_de_recherche]==$txt_de_recherche){ 


Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Undefined index => veut dire que dans ta base de donnée, l'index n'existe pas ou est mal orthographié.

CIN, numeros_permis, Nom et archit. => Vérifie les minuscules et les majuscules...

ou encore:

$type_de_recherche=isset($_POST['recherche'])?$_POST['recherche']:"";

$type_de_recherche est défini à cette ligne la^^
Sinon, donne moi le n° de tes colonnes dans ta table, et la ca marchera direct...

je crois que Nom s'écris nom ds ta bdd donc,,,
dans le select, option value="nom" et pas Nom
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
essaie de recherche par autre chose que par nom aussi...
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Pardon, je croix avoir compris mon pb:
remplace ca:
if ($Enreg["type_de_recherche"]==$txt_de_recherche){
par:
if ((($type_de_recherche<>"")and($Enreg["type_de_recherche"]==$txt_de_recherche))or($type_de_recherche=="")){

Sinon, ca recherche qqch que tu n'as pas encore demander de chercher...

(Pas évident de réparer un pb sans voir ce qu'il y a à l'écran...)
0
manoula
 
parce avant il n'avait pas la partie recherche donc je travail sur sommaire.php
mais mnt il après avoir ajouter la recherche il faux que sa reste sur la mm page
0
manoula
 
oui c vrai c pas évident :)
0
manoula
 
merci louloute300 tt les erreur sont disparut :)
mais il y a une autre chose quand j'ai saisie ma recgerche et j'ai valider il m'a emener vers la page sommaire.php ??? il l m' a pas afficher la ligne que je veut afficher dans tt la liste ??
est ce qu 'il faux changer l'action du form ???
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Oui effectivement, je n'avais pas vu.
<form name="ListeNews" method="post">

Ca ca irai, mais maintenant ca dépend, pourquoi voulais tu "Sommaire.php", sinon, on peut faire un bouton pour retourner au sommaire.php à toi de voir

eeeee
0
manoula
 
donc j'ai changer l'action par Permis_liste.php
alors j'ai eu les erreurs suivantes

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

Notice: Undefined index: type_de_recherche in c:\program files\easyphp1-8\www\site2010\admin\permis_liste.php on line 118

alors j'ai changer cette ligne
if ((($type_de_recherche<>"")and($Enreg["type_de_recherche"]==$txt_de_recherche))or($type_de_recherche=="")){ 

par 

<code>if ((($type_de_recherche<>"")and($Enreg["$type_de_recherche"]==$txt_de_recherche))or($type_de_recherche=="")){ 


pas d'erreur mais quand j'ai fé ma recherche ya rien qui s'affiche la liste est vide ??
</code>
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
Ok, commençons par le début:
1) Si tu ne fait pas de recherche, est-ce qu'il y a qq ch qui apparait?

2) As tu fait une recherche partiel ou total?
ex:
ds ta table, colonne "nom", il y a une case dans laquelle est écrite: "Bertrand"
Si tu recherche "Bertrand " alors, c'est différent de "Bertrand" ou encore "bertrand"
Le script n'acepte que la recherche totale .
0
manoula
 
si je ne fait pas de recherche tt la liste est la elle est affichée
et quand je fé la recherche par le mot entier il ne m'affiche rien
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
$Enreg["$type_de_recherche"] et si tu remplaces par : $Enreg[$type_de_recherche]

Sinon, je suis en panne d'inspiration... Au moins, on ne rencontre pas ce genre de pb avec les n° de colonne... mdr

par contre, pr ton retour à sommaire.php:
echo'
<li><a href="Sommaire.php" class="LienSommaire">retour au sommaire</a></li>';
à rajouter ou tu veux...
0
manoula
 
pour le somaire .php pas de probleme j'en ai deja <?php include('HautPage.php'); ?> qui me fais rederige r
mais pour la recherche rien n'a changer :(
merci bcp pour ton aide
0
louloute300 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   29
 
peut être qu'en glissant ca:

echo $Enreg[$type_de_recherche]."=?=".$txt_de_recherche;

avant le if, tu verra mieux ce qu'il se passe...
0