Faire une Recherche en PHP

Sabrina tech
Invité n'ayant pas de compte PHPfrance

17 déc. 2010, 14:44

Salut tout le monde ,

J'ai un petit problème,

Je fais un site de bibliothèque et je veux faire un script de recherche (dont je vous affiche mon formulaire) veuillez m'aider à faire une recherche selon mes critères.
je vous explique : je veux faire une recherche dans ma base "biblio" selon la table sélectionné (Livres, Articles, ou diplomes) et selon le titre saisi, ou l'auteur et les mots clés saisis.

Voila mon formulaire :


<form method="post" action="recherche.php">
<p>Titre
<input type="text" name="titre" maxlength="200" size="50" />

<select name="categorie">
<option value="livre">Livre</option>
<option value="pub">Article</option>
<option value="these">Diplôme</option>
</select>
<br />
<br />
Mots Cl&eacute;s
<input type="text" name="motscles" maxlength="200" size="50" />
<br />
<br />
Auteur
<input type="text" name="auteur" size="50" />
  
<input type="submit" value="rechercher" name="rechercher" />
</p> </p>
</form>



Veuillez m'aider à faire ma recherche s'il vous plait, j'attends vos réponses c urgent.
Merci d'avance

ViPHP
ViPHP | 2291 Messages

17 déc. 2010, 19:30

Salut,

Une idée de départ peut-être
<?php




 $action = (iSset($_GET['action']) ? $_GET['action'] : NULL );

 switch ($action)
 {
   case 'search':

            /*
              [titre] =>
		      [categorie] => livre
		      [motscles] =>
		      [auteur] =>
		      [rechercher] => rechercher
            */
            $Where     = array();
            $Operateur = " OR ";
            $table     = (iSset($_POST['categorie']) ? mysql_real_escape_string($_POST['categorie']) : NULL );

            if(!Empty($_POST['titre']))
			{
			    $Where[] = "titre = '".mysql_real_escape_string($_POST['titre'])."'";
			}
			if(!Empty($_POST['motscles']))
			{
			    $Where[] = "motscles = '".mysql_real_escape_string($_POST['motscles'])."'";
			}
			if(!Empty($_POST['auteur']))
			{
			    $Where[] = "auteur = '".mysql_real_escape_string($_POST['auteur'])."'";
			}



			if(count($Where) != 0)
			{
			    $sql_search = " WHERE ". implode($Operateur, $Where);

			    echo $SqlSearch = " SELECT * FROM $table " . $sql_search;

			    $result = mysql_query($SqlSearch) or die ('Erreur : '.mysql_error());
				$total  = mysql_num_rows($result);
			}
			else
			{
				echo 'Merci de choisir un critère de recherche.';
			}






     break;
     default;
         echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'?action=search">
				 <p>Titre
				<input type="text" name="titre" maxlength="200" size="50" />
				<select name="categorie">
				 <option value="livre">Livre</option>
				 <option value="pub">Article</option>
				 <option value="these">Diplôme</option>
				 </select>
				 Mots Cl&eacute;s
				 <input type="text" name="motscles" maxlength="200" size="50" />
				 Auteur
				<input type="text" name="auteur" size="50" />
				<input type="submit" value="rechercher" name="rechercher" />
				 </p> </p>
			 </form>';


     break;
 }

?>

ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 11:14

Merci pour votre attention,
Mais ca n'as pas marché rien ne s'affiche veuillez m'expliquer de plus ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 déc. 2010, 11:53

cherche dans la doc de mysql
- like
- soundex
- match / against

@+
Il en faut peu pour être heureux ......

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 13:13

Merci mais c pas ca mon but et mon problème ,
j'arrive pas à faire ma recherche selon la catégorie (livre, diplome ou article) je sais pas comment le faire
S'il vous plait aider moi je dois trouver une solution le plus tot possible
merci

ViPHP
ViPHP | 2291 Messages

20 déc. 2010, 13:31

Merci mais c pas ca mon but et mon problème ,
j'arrive pas à faire ma recherche selon la catégorie (livre, diplome ou article) je sais pas comment le faire
S'il vous plait aider moi je dois trouver une solution le plus tot possible
merci
Tu pourrais mettre la structure de ta/tes table(s)
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 13:35

ok mais pourrez vous me dire comment vous afficher la structure de ma table ???

ViPHP
ViPHP | 2291 Messages

20 déc. 2010, 13:48

ok mais pourrez vous me dire comment vous afficher la structure de ma table ???
Ou simplement les champs de la tables alors !
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 déc. 2010, 14:49

utilise phpmyadmin pour faire un dump de la table, la commande describe si tu sais utiliser une console mysql.

@+
Il en faut peu pour être heureux ......

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 15:12

le logiciel que j'utilise pour créer mes bases est : phpMyAdmin

J'ai pas trouver la commande Describe


La base Biblio, contient 3 tables : Livres articles et Diplomes

Les champs de la base Livres sont : Titre, Auteur, Cote, Maison d edition, Date d edition, Lieu d edition, Page, Format, Inventaire, ISBN, Mots cles, resume, Image

Les champs de la base articles sont : Titre, Auteur, Laboratoire, Annee de parution, Langue,ISSN, Mots cles, resume, PDF

Les champs de la base Diplomes sont : Titre, Auteur, Genre, Cote, Inventaire, Mots cles, resume,

J'espère que c claire

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 15:19

Je vous decrit ce que je pense faire mais j'arrive pas à le faire :

Selon la catégorie : si catégorie = "livre" alors ma recherche se fais dans la table livres , si le titre ou l'auteur selectionné, ou les mots clés saisis existent dans la tables livres alors on affiche le résultats si non afficher un message d'erreur.

et de meme pour les autres tables Articles et Diplomes .

Pouvez vous m'aider à faire ce code ????

ViPHP
ViPHP | 2291 Messages

20 déc. 2010, 15:22

Le code en exemple devrait fonctionner, mais a toi quand même d'écrire les noms des champs de TABLE de la même manière que ceux qui sont dans tes tables.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 15:33

Ok je suis entrain de l'excuter mais j'ai pas compris que veux tu dire par : $action ???
$action = (iSset($_GET['action']) ? $_GET['action'] : NULL );


et aussi :

case 'search':

/*
[titre] =>
[categorie] => livre
[motscles] =>
[auteur] =>
[rechercher] => rechercher
*/
J'ai pas compris cette partie du code saisi

ViPHP
ViPHP | 2291 Messages

20 déc. 2010, 15:43

Bon en gros Switch est une série d'instructions et chaque instruction est appeler via la variable $action.
Et le code entre */ /* est un commentaire que j'avais placé pour voir le nom des champs qui étais récupérable.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 déc. 2010, 15:48

Bon ok j'ai fais l'insertion de ce code dans mon script mais j'ai rien recu comme résultat c à d quand je fais la recherche, rien ne s'affiche comme si il n'y a aucun enregistrement malgré que le titre que j'ai saisi existe déja dans la base