cs77
Messages postés2Date d'inscriptionmercredi 21 octobre 2009StatutMembreDernière intervention 2 novembre 2009
-
28 oct. 2009 à 11:28
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
2 nov. 2009 à 21:29
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>
Critères de Recherche du dépouillement de l'état civil
<form action="index.php" method="get">
Naissances
Mariages
Décès
Année
:
Nom
:
</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."
"; echo ' nom, date de naissance, père, mère, profession du père, cote, photo, '.$tbl_res.'
'; }
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."
"; echo ' nom, date de naissance, père, mère, profession du père, cote, photo, '.$tbl_res.'
'; }
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."
"; echo ' nom, date de naissance, père, mère, profession du père, cote, photo, '.$tbl_res.'
'; } ?>
</html>
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 2 nov. 2009 à 05:54
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 :) !
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 2 nov. 2009 à 15:32
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' ?
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 2 nov. 2009 à 21:23
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']
Vous n’avez pas trouvé la réponse que vous recherchez ?
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 2 nov. 2009 à 21:29
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 :
<?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.