lonewolfs
Messages postés51Date d'inscriptionsamedi 2 juin 2007StatutMembreDernière intervention17 octobre 2009
-
4 oct. 2008 à 14:43
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
4 oct. 2008 à 17:17
Bonjour a tous,
J'ai crée une base de donnée pour l'entretien des machines de mon parc.
et j'ai fait une page php pour effectuer mes recherches plus facilement.
Cette page permet de faire des recherches sur plusieurs plan et en
particulier sur des symptomes qui ont engagé une intervention.
Mon script fonctionne mais que sur un seul mot clé dans ma recherche
sur les symptomes et je souhaiterais pouvoir affiner mes recherches en
permettant plusieurs mots clés dans la case symptomes mais j'avoue que
la ca dépasse mes capacités en php.
Je viens donc vers vous, vous demander de l'aide.
Voci mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<!-- Mise en place du formulaire de recherche -->
<form method="post">
Rechercher par :
Machine : -
Utilisateur : -
Lieu : -
Symptômes :
</form>
<center>Date,
Lieu,
Machine,
Utilisateur,
Symptômes,
Intervention,
<?php
//récupération des variables
$Machine=$_POST['Machine'];
$Utilisateur=$_POST['Utilisateur'];
$Lieu=$_POST['Lieu'];
$Symptomes=$_POST['Symptomes'];
//Requêtes
mysql_connect(\"localhost\", \"root\", \"\") or die (\"Pas de connexion à la base de données\"); // Connexion à MySQL
mysql_select_db(\"Entretien\") or die (\"Pas de connexion à la base\"); // Sélection de la base coursphp
// Si seul Machine est rempli
if ((!empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine'\"); // Requête SQL
}
//Si seul Utilisateur est rempli
if ((empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'\"); // Requête SQL
}
//Si seul Lieu est rempli
if ((empty($Machine)) and (empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Lieu`='$Lieu'\"); // Requête SQL
}
//Si seul Symptome est rempli ***************************************************************************************
if ((empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Symptomes` LIKE '%$Symptomes%'\"); // Requête SQL
}
//****************************************************************************************************************
//Si Machine et Utilisateur sont rempli
if ((!empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur'\"); // Requête SQL
}
//Si Machine, Utilisateur e t Lieu sont rempli
if ((!empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu'\"); // Requête SQL
}
// Si tous les champs sont remplis
if ((!empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (!empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine' and `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu' and `Symptomes` LIKE '%$Symptomes%'\"); // Requête SQL
}
//*******************************************************************************************
//Si Utilisateur et Lieu sont rempli
if ((empty($Machine)) and (!empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur' and `Lieu`='$Lieu'\"); // Requête SQL
}
//Si utilisateur et Symptomes sont rempli
if ((empty($Machine)) and (!empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Utilisateur`='$Utilisateur'and `Symptomes` LIKE '%$Symptomes%'\"); // Requête SQL
}
//Si Lieu et Symptomes sont rempli
if ((empty($Machine)) and (empty($Utilisateur)) and (!empty($Lieu)) and (!empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Lieu`='$lieu' and `Symptomes` LIKE '%$Symptomes%'\"); // Requête SQL
}
//Si Machine et lieu sont rempli
if ((!empty($Machine )) and (empty($Utilisateur)) and (!empty($Lieu)) and (empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine' and `Lieu`='$Lieu'\"); // Requête SQL
}
//Si Machine et Symptomes sont rempli
if ((!empty($Machine)) and (empty($Utilisateur)) and (empty($Lieu)) and (!empty($Symptomes)))
{
$reponse = mysql_query(\"SELECT * FROM intervention WHERE `Machine`='$Machine' and `Symptomes` LIKE '%$Symptomes%'\"); // Requête SQL
}
// On fait une boucle pour lister tout ce que contient la table :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
----
<center><?php echo $donnees['Date']; ?></center>,
<center><?php echo $donnees['Lieu']; ?></center>,
<center><?php echo $donnees['Machine']; ?></center>,
<center><?php echo $donnees['Utilisateur']; ?></center>,
<center><?php echo $donnees['Symptomes']; ?></center>,
<center><?php echo $donnees['Intervention']; ?></center>,
<?php
}
mysql_close(); // Déconnexion de MySQL
?>
</center>
Si vous pouvez me donner une piste, un lien, une aide, je suis preneur de tout ce qui peut me faire avancer.
lonewolfs
Messages postés51Date d'inscriptionsamedi 2 juin 2007StatutMembreDernière intervention17 octobre 2009 4 oct. 2008 à 16:58
Bonjour et merci
effectivement, ca permet un code moins lourd et plus lisible.
Néanmoins ca ne resoud pas le problème de la recherche sur plusieurs mots dans le champs "Symptomes".
Actuellement, avec mon code, je suis limité à un mot pour cette recherche, ce qui est peu pratique et je souhairerais pouvoir avoir plusieurs mots pour celles ci.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 4 oct. 2008 à 17:13
Comment est fait ton champ symptôme pour avoir une idée (comment il est remplit en base)
avec une concatenation de OR LIKE dans la clause tu y arriveras peut etre
Mais avec des perfs pourries.
Ou sinon il faut chercher dans les recherches de types fulltext que je n'ai pas eu l'occassion d'utiliser sur mysql.
Internet te donneras des tutoriels sur les recherches fulltext.
Vous n’avez pas trouvé la réponse que vous recherchez ?