begin process at 2012 05 31 06:15:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

prbleme recheche multi champ


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

prbleme recheche multi champ

mercredi 28 octobre 2009 à 11:28:07 | prbleme recheche multi champ

cs77

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:
Code PHP :
<!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;">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Crit&egrave;res de Recherche du d&eacute;pouillement de l'&eacute;tat civil 
<br>
</p>
<form action="index.php" method="get"><br>
<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="acte" checked="checked" value="nai" type="radio">Naissances &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="acte"  value="mar" type="radio">Mariages &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="acte"  value="dec" type="radio">D&eacute;c&egrave;s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<br>
<br>
<input name="rch" value="annee" type="checkbox">Ann&eacute;e
:<input name="an" value="" type="text"><br>
<br>
<input name="rch" value="nom" type="checkbox">Nom
&nbsp;&nbsp;
:<input name="no" value="" type="text"><br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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 &nbsp;&nbsp; </td> <td>date de naissance &nbsp;&nbsp;</td> <td>père&nbsp;&nbsp;</td ><td>mère&nbsp;&nbsp;</td> <td>profession du père&nbsp;&nbsp;</td> <td>cote&nbsp;&nbsp;</td> <td>photo&nbsp;&nbsp;</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 &nbsp;&nbsp; </td> <td>date de naissance &nbsp;&nbsp;</td> <td>père&nbsp;&nbsp;</td ><td>mère&nbsp;&nbsp;</td> <td>profession du père&nbsp;&nbsp;</td> <td>cote&nbsp;&nbsp;</td> <td>photo&nbsp;&nbsp;</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 &nbsp;&nbsp; </td> <td>date de naissance &nbsp;&nbsp;</td> <td>père&nbsp;&nbsp;</td ><td>mère&nbsp;&nbsp;</td> <td>profession du père&nbsp;&nbsp;</td> <td>cote&nbsp;&nbsp;</td> <td>photo&nbsp;&nbsp;</td> </tr>'.$tbl_res.'</table>'; } ?>

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


</body></html>

lundi 2 novembre 2009 à 05:54:38 | Re : prbleme recheche multi champ

phpAnonyme

Slt,

J'ai regardé vite fait ton code, et j'avoue que j'ai eu un peu de mal à comprendre la logique. Il y a des choses superflues aussi ! Bref, je regarde ça plus tard et te tiens au courant sauf si quelqu'un d'autre répond avant moi :) !
lundi 2 novembre 2009 à 15:32:31 | Re : prbleme recheche multi champ

phpAnonyme

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)

Heu, je pense que oui, hin !
Si tu ne renseigne pas à quoi comparer tes champs c'est un peu normal !
- Où est la variable à laquelle tu compare le champs 'annee' ?
- Où est la variable à laquelle tu compare le champs 'nom' ?
lundi 2 novembre 2009 à 20:46:39 | Re : prbleme recheche multi champ

cs77

Il doit falloir que je numérote ma checkbox rch. Je vais essayer de ce coté ci
lundi 2 novembre 2009 à 21:23:10 | Re : prbleme recheche multi champ

phpAnonyme

Il doit falloir que je numérote ma checkbox rch. Je vais essayer de ce coté ci

Non, je pense pas que ça soit cela le problème. De plus t'es checkbox sont superflues et ne servent à rien en l'état.
Les valeurs 'nom' et 'annee' seront récupérer par les input avec la méthode GET : $_GET['nom'] et $_GET['annee']
lundi 2 novembre 2009 à 21:29:12 | Re : prbleme recheche multi champ

TychoBrahe

Salut,

Première remarque, quand on demande de l'aide sur une requête SQL on commence toujours par fournir une description complète de la table. Faire un DESCRIBE c'est pas bien compliqué, ça ne prend pas de temps et ça aide tout le monde.

Pour ce qui est de ta requête, tu as le droit de la créer en plusieurs morceaux, de cette manière par exemple :
Code PHP :
<?php
$query = 'SELECT * FROM ta_table WHERE ';
if (!empty($_GET['an']))
  $query .= 'annee = ' . intval($_GET['an']) . (!empty($_GET['nom']) ? ' AND ' : '');
if (!empty($_GET['nom']))
  $query .= 'nom LIKE \'%' . mysql_real_escape_string($_GET['nom']) . '%\'';
?>


Ton code étant d'une laideur a pleurer (bon sang l'indentation ce n'est pas fait pour les chiens) ne t'attends surtout pas a obtenir une solution pour ton code exactement, a toi d'adapter quelque chose de relativement générique comme l'exemple que je vient de mettre. Perso je ne vais pas me faire chier a lire un code complètement obfusqué et j'ai presque envie de prendre une telle obfuscation comme du foutage de gueule contre ceux qui veulent t'aider.


Cette discussion est classée dans : date, mysql, recherche, row, cote


Répondre à ce message

Sujets en rapport avec ce message

mysql requette comment faire??? [ par jordangj ] bonjour je vous explique mon pb voici le code qui me permet de crée un tableau: $result=mysql_query("select count(nb_visite) as somme,date from visite Non inscription dans la base [ par chris tuckers ] Bonjour, aujourd'hui je vais etre enervant car je vais mettre beaucoup dans ce message, je suis completement paumé !!!Mon problème est que chaque fois transfert de données d'un page aa l'autre [ par cobra176 ] bonjour a tous j'ai un probleme de transfert de donnéesj'ai fait un moteur de recherche sur un base sqlil m'affiche certains que lui indique puis je v commentaire [ par csmgroup ] Bonjour à tous,je viens vers vous car j'ai un petit soucis.J'ai instalé un script de news-commentaires, au niveau base de données, tout fonctionne. Le recherche dans MySQL de l'ip en fonction de la date [ par Brikse ] Bonjour à tous,Je voudrais savoir si quelqu'un à une idée sur un script que j'ai récupéré et que je veux un peu modifier.Alors c'est un compteur avec scroll tableau php [ par rudybiss ] Bonjour à tous!!!Voila je devéloppe un site et je dois gerer des évenements.Alors j'ai un table qui contient tous les évenements liées à des dates et Problème lors de l'envois des valeurs des cases à cocher [ par ChristOffAum ] Bonjour à toutes et à tous, me voilà sur ce forum en esperant trouver réponses à mes questions... Je n'ai pas trouvé de section présentation n'hésitez Recherche une période de date à date. [ par Calypdoso ] Bonjour et merci pour vos aident précédentes. Je poursuis le développement dem on site. Tout se passe globalement bien et j'essais de ne pas trop vous mysql/php [ par aamsa ] Bonsoir, j'ai un script qui permet d'afficher groupes (groupe est une table mysql)dont le code est le suivant: '; echo ""; echo ''; echo php mysql tableau probleme [ par toto6311 ] Bonjour tout le monde , j'ai un petit soucis , pour afficher ma base membre dans un tableau sur mon site . Voila les champs de ma table $id' ,'$emai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales