PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-10-2009 12:12:38

chris77
Membre
Inscription : 28-10-2009
Messages : 2

recherche multi champ

Bonjour,

Je suis novice en Php et Mysql.
Je dois préparer un site pour une association de généalogie.

Les membres de l'association feront des recherches sur les actes de naissances, mariage et décès. Ils rechercheront soit l'année, soit un nom soit les deux  l'année et le nom.

J'ai mis un bouton radio pour les actes, un de ces 3 boutons doit être obligatoirement coché.

J'ai réussi à faire la recherche par année.

Mais je n'arrive pas à faire la recherche soit par année, soit par nom ou les 2.

Voici des exemples, soit faire une recherche sur l'année 1786, soit sur le nom Dupont et enfin voire s'il existe un Dupont en 1786.

Je pense que mon problème vient de la ligne 32 :$resultn = mysql_query("SELECT * from ".$tablen. " WHERE (annee=) OR (nom LIKE '%) OR ((annee=) AND (nom LIKE '%))".$_GET["an"],$connect), et particulièrement du .$_GET["an"].
lors de la recherche dans mon formulaire j'ai aucune réponse

mais quand j'écris ce code $resultn = mysql_query("SELECT * from ".$tablen." WHERE annee=".$_GET["an"], $connect)
lors de la recherche dans mon formulaire j'ai les réponses correspondantes à l'année, c'est normal.

Je fais mes tests en local avec Wamp et j'écris mon code avec Notepad++

Merci de votre aide

Voici mon code


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
</head>
<body style="font-family: verdana; background-color: rgb(200, 248, 243); font-size: 8pt;">
<p style="font-size: 12pt; font-weight: bold;">
                 Critères de Recherche du dépouillement de l'état civil
<br>
</p>
<form action="index.php" method="get"><br>
<br>

      <input name="acte" checked="checked" value="nai" type="radio">Naissances         
      <input name="acte"  value="mar" type="radio">Mariages         
      <input name="acte"  value="dec" type="radio">Décès        

<br>
<br>
<input name="rch" value="annee" type="checkbox">Année
:<input name="an" value="" type="text"><br>
<br>
<input name="rch" value="nom" type="checkbox">Nom
  
:<input name="no" value="" type="text"><br>
<br>
<br>
                       
<input name="Recherche" value="Lancer la recherche" type="submit"></form>
<?php $adress = "localhost";
$portdb = "3306"; $userdb = "root"; $pssdb = ""; $datab = "agbcr"; $tablen = "naissance";$tablem = "mariage";$tabled = "deces";
$tbl_res = "";

$acte = "";if($_GET["acte"] == "nai") { $connect = mysql_connect($adress,$userdb,'') or die("Erreur de connexion au serveur."); mysql_select_db($datab,$connect) or die ("erreur de connexion base"); $resultn = mysql_query("SELECT * from ".$tablen. " WHERE (annee=) OR (nom LIKE '%) OR ((annee=) AND (nom LIKE '%))".$_GET["an"],$connect);}

else if($_GET["acte"] == "mar"){ $connect = mysql_connect($adress,$userdb,'') or die("Erreur de connexion au serveur."); mysql_select_db($datab,$connect) or die ("erreur de connexion base"); $resultm = mysql_query("SELECT * from ".$tablem." WHERE annee=".$_GET["an"], $connect); }
else if($_GET["acte"] == "dec"){ $connect = mysql_connect($adress,$userdb,'') or die("Erreur de connexion au serveur."); mysql_select_db($datab,$connect) or die ("erreur de connexion base"); $resultd = mysql_query("SELECT * from ".$tabled." WHERE annee=".$_GET["an"], $connect); }
if($resultn){ $i=0; while ( $row = mysql_fetch_array($resultn) ){ if($i % 2 == 0){ $color = "#E8F2FF"; }else{ $color = ""; } $nom = $row[2]; $date = $row[4]; $pere = $row[5]; $mere = $row[6]; $prof = $row[7]; $cote = $row[8]; $photo = $row[9];; $tbl_res .= "<tr style=\"background-color:".$color.";\"><td>".$nom."</td><td>".$date."</td><td>".$pere."</td><td>".$mere."</td><td>".$prof."</td><td>".$cote."</td><td>".$photo."</td></tr>"; $i = $i+1; } mysql_close(); echo "Nombre de résultat trouvé, pour la recherche naissance: ".$i."<br>"; echo ' <table cellspacing="0" cellpadding="2" style="border:0; font-family:verdana; font-size:8pt;"> <tr style="background-color:#CDCDCD;"> <td>nom    </td> <td>date de naissance   </td> <td>père  </td ><td>mère  </td> <td>profession du père  </td> <td>cote  </td> <td>photo  </td> </tr>'.$tbl_res.'</table>'; }
else if($resultm){ $i=0; while ( $row = mysql_fetch_array($resultm) ){ if($i % 2 == 0){ $color = "#E8F2FF"; }else{ $color = ""; } $nom = $row[2]; $date = $row[4]; $pere = $row[5]; $mere = $row[6]; $prof = $row[7]; $cote = $row[8]; $photo = $row[9];; $tbl_res .= "<tr style=\"background-color:".$color.";\"><td>".$nom."</td><td>".$date."</td><td>".$pere."</td><td>".$mere."</td><td>".$prof."</td><td>".$cote."</td><td>".$photo."</td></tr>"; $i = $i+1; } mysql_close(); echo "Nombre de résultat trouvé, pour la recherche mariage: ".$i."<br>"; echo ' <table cellspacing="0" cellpadding="2" style="border:0; font-family:verdana; font-size:8pt;"> <tr style="background-color:#CDCDCD;"> <td>nom    </td> <td>date de naissance   </td> <td>père  </td ><td>mère  </td> <td>profession du père  </td> <td>cote  </td> <td>photo  </td> </tr>'.$tbl_res.'</table>'; }
else if($resultd){ $i=0; while ( $row = mysql_fetch_array($resultd) ){ if($i % 2 == 0){ $color = "#E8F2FF"; }else{ $color = ""; } $nom = $row[2]; $date = $row[4]; $pere = $row[5]; $mere = $row[6]; $prof = $row[7]; $cote = $row[8]; $photo = $row[9];; $tbl_res .= "<tr style=\"background-color:".$color.";\"><td>".$nom."</td><td>".$date."</td><td>".$pere."</td><td>".$mere."</td><td>".$prof."</td><td>".$cote."</td><td>".$photo."</td></tr>"; $i = $i+1; } mysql_close(); echo "Nombre de résultat trouvé, pour la recherche décès:".$i."<br>"; echo ' <table cellspacing="0" cellpadding="2" style="border:0; font-family:verdana; font-size:8pt;"> <tr style="background-color:#CDCDCD;"> <td>nom    </td> <td>date de naissance   </td> <td>père  </td ><td>mère  </td> <td>profession du père  </td> <td>cote  </td> <td>photo  </td> </tr>'.$tbl_res.'</table>'; } ?>

<br>
<br><br>
<br>


</body></html>
 

Hors ligne

#2 29-10-2009 12:08:30

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : recherche multi champ

Es-tu sûr que cette syntaxe est possible ?
Pour ma part c'est la première fois que je la vois, bon je suis pas une référence pour autant mais bon...

Qu'arrive-t-il si tu la testes directement dans le sgbd avec des valeurs statiques ?

Hors ligne

#3 29-10-2009 21:31:55

chris77
Membre
Inscription : 28-10-2009
Messages : 2

Re : recherche multi champ

Bonsoir,

je vais chercher dans ce sens.

Je vous tiens au courant.

Hors ligne

#4 21-03-2010 03:58:53

SAAD207
Membre
Inscription : 21-03-2010
Messages : 40

Re : recherche multi champ

est ce que tu as resolu ton probleme moi aussi je cherche

Hors ligne

#5 16-05-2010 20:01:55

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : recherche multi champ

Bonjour,

Bien qu'on ait déjà répondu a quelqu'un qui utilisait la même syntaxe que toi (:)) au niveau de ses requêtes mySQL et qui par conséquent avait le même problème que toi, voici la bonne syntaxe à adopter bien qu'au niveau du $_GET plusieurs écritures sont possibles pour que ca fonctionne.

chris77 a écrit :

$resultn = mysql_query("SELECT * from ".$tablen. " WHERE (annee=) OR (nom LIKE '%) OR ((annee=) AND (nom LIKE '%))".$_GET["an"],$connect),


$resultn = mysql_query("SELECT * from $tablen WHERE annee='$input_an' AND nom LIKE '%".$_GET['an']."%'",$connect);
 

PS: Si tu n'as pas eu de réponse c'est parcequ'il est demandé de parcourir le forum pour voir si la question à poser ne l'a pas déjà été au préalable, ce qui est le cas ici.

Dernière modification par Jc (16-05-2010 20:02:26)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums