par
Sabrina tech » 03 janv. 2011, 11:47
Bjr, J'ai un programme de bibliothéque et j'essaye de faire un moteur de recherche pour afficher les titres de livres selon des mots saisis.
J'ai essayé par un script dont je vais vous monter ci dessous mais j'ai pas arriver à un résultat complet :
Voila mon script :
<?php
$host="localhost";
$login="root";
$pass="";
$bd="biblio";
$cat=$_POST['categorie'];
if (isset($_POST['titre']) and isset($_POST['auteur']))
{
$titre=$_POST['titre'];
$auteur=$_POST['auteur'];
$motscles=$_POST['motscles'];
//Connexion à la base de donnée
$link= mysql_connect($host,$login,$pass) or exit(mysql_error());
$datab = mysql_select_db($bd, $link) or exit(mysql_error());
if ($cat = 'livre')
{
if (($titre == "")&&($auteur == "")&&($motscles == ""))
{
// Si aucun mot clé n'a été saisi,le script demande à l'utilisateur de bien vouloir préciser un mot clé
?>
<script language="javascript">
alert('Veuillez entrez un mot clé si vous voulez');
</script>
<?php
}
else
{
// On selectionne les enregistrements contenant le mot clé dans les Titre ou l'auteur
$query = "SELECT distinct count(Titre) FROM livres
WHERE (titre LIKE \"%$titre%\") OR (titre LIKE \"$titre%\") OR (titre LIKE \"%$titre\")";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$Nombre = $row[0];
// Si aucun enregistrement n'est retourné, on affiche un message adéquat
if ($Nombre == "0")
{
?>
<script language="javascript">
alert('Aucun résultat ne correspond à votre recherche');
</script>
<?php
}
// Sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-mêmes
else
{
$query = "SELECT distinct Cote,Auteur,Titre FROM livres
WHERE (titre LIKE \"%$titre%\") or (titre LIKE \"$titre%\") or (titre LIKE \"%$titre\" )
ORDER by titre ASC";
$result = mysql_query($query);
// Si un seul enregistrement est trouvé, on affiche un message au singulier
if ($Nombre == "1")
{
?>
<div class="header_01">
<P> <?php echo " <a name=\"#resultat\"><h2><p> </p> <p>Un résultat trouvé</P></h2></a> <p>"; ?> </P>
</div>
<?php
}
// Dans le cas contraire le message est au pluriel...
else
{
?>
<div class="header_01">
<p> <?php echo " <a name=\"#resultat\"><h2>Résultat: $Nombre résultats trouvés</h2></a> <p>"; ?> </p>
</div>
<p>
<?php
}
while($row = mysql_fetch_row($result))
{
echo " <p>\n
<p align = justify><ul> <li><b>$row[2]</b></li></ul></p> <p> </p> \n
<p>\n
";
}
}
}
}
}
else {echo "la table n est pas livre"; }
?>
Quand je saisi un mot dans la zone du titre, ca marche c à dire elle m'affiche le résultat, mais mon problème consiste à :
1. j'ai fais un teste pour la catégorie mais ca ne marche pas

c à d mon résultat s'affiche pour n'importe quel catégorie (livres, diplômes ou articles)
2. je veux aussi ajouter un test pour saisir un auteur et des mots clés
MONT BUT est :
faire la recherche selon ces critères : voir ce formulaire pour mieux comprendre :
<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="article">Article</option>
<option value="diplome">Diplome</option>
</select>
Auteur <input type="text" name="auteur" maxlength="200" size="50" />
Mots Clés <input type="text" name="motscles" size="50" />
<input type="submit" value="rechercher" name="rechercher" />
</p>
</p>
</form>
Veuillez m'aider s'il vous plait à résoudre mon problème
J'attends vos réponses
Merci
Bjr, J'ai un programme de bibliothéque et j'essaye de faire un moteur de recherche pour afficher les titres de livres selon des mots saisis.
J'ai essayé par un script dont je vais vous monter ci dessous mais j'ai pas arriver à un résultat complet :
Voila mon script :
[php]
<?php
$host="localhost";
$login="root";
$pass="";
$bd="biblio";
$cat=$_POST['categorie'];
if (isset($_POST['titre']) and isset($_POST['auteur']))
{
$titre=$_POST['titre'];
$auteur=$_POST['auteur'];
$motscles=$_POST['motscles'];
//Connexion à la base de donnée
$link= mysql_connect($host,$login,$pass) or exit(mysql_error());
$datab = mysql_select_db($bd, $link) or exit(mysql_error());
if ($cat = 'livre')
{
if (($titre == "")&&($auteur == "")&&($motscles == ""))
{
// Si aucun mot clé n'a été saisi,le script demande à l'utilisateur de bien vouloir préciser un mot clé
?>
<script language="javascript">
alert('Veuillez entrez un mot clé si vous voulez');
</script>
<?php
}
else
{
// On selectionne les enregistrements contenant le mot clé dans les Titre ou l'auteur
$query = "SELECT distinct count(Titre) FROM livres
WHERE (titre LIKE \"%$titre%\") OR (titre LIKE \"$titre%\") OR (titre LIKE \"%$titre\")";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$Nombre = $row[0];
// Si aucun enregistrement n'est retourné, on affiche un message adéquat
if ($Nombre == "0")
{
?>
<script language="javascript">
alert('Aucun résultat ne correspond à votre recherche');
</script>
<?php
}
// Sinon, on affiche le nombre d'enregistrements correspondant et les résultats eux-mêmes
else
{
$query = "SELECT distinct Cote,Auteur,Titre FROM livres
WHERE (titre LIKE \"%$titre%\") or (titre LIKE \"$titre%\") or (titre LIKE \"%$titre\" )
ORDER by titre ASC";
$result = mysql_query($query);
// Si un seul enregistrement est trouvé, on affiche un message au singulier
if ($Nombre == "1")
{
?>
<div class="header_01">
<P> <?php echo " <a name=\"#resultat\"><h2><p> </p> <p>Un résultat trouvé</P></h2></a> <p>"; ?> </P>
</div>
<?php
}
// Dans le cas contraire le message est au pluriel...
else
{
?>
<div class="header_01">
<p> <?php echo " <a name=\"#resultat\"><h2>Résultat: $Nombre résultats trouvés</h2></a> <p>"; ?> </p>
</div>
<p>
<?php
}
while($row = mysql_fetch_row($result))
{
echo " <p>\n
<p align = justify><ul> <li><b>$row[2]</b></li></ul></p> <p> </p> \n
<p>\n
";
}
}
}
}
}
else {echo "la table n est pas livre"; }
?>
[/php]
Quand je saisi un mot dans la zone du titre, ca marche c à dire elle m'affiche le résultat, mais mon problème consiste à :
1. j'ai fais un teste pour la catégorie mais ca ne marche pas :( c à d mon résultat s'affiche pour n'importe quel catégorie (livres, diplômes ou articles)
2. je veux aussi ajouter un test pour saisir un auteur et des mots clés
[b]MONT BUT est : [/b]
faire la recherche selon ces critères : voir ce formulaire pour mieux comprendre :
[php]
<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="article">Article</option>
<option value="diplome">Diplome</option>
</select>
Auteur <input type="text" name="auteur" maxlength="200" size="50" />
Mots Clés <input type="text" name="motscles" size="50" />
<input type="submit" value="rechercher" name="rechercher" />
</p>
</p>
</form>
[/php]
Veuillez m'aider s'il vous plait à résoudre mon problème
J'attends vos réponses
Merci