j'ai un code qui fait une recherche dans la base de donnee de mots inscris par l'utulisateur et qui resort toutes les lignes qui les contiennent mais maintenant je voudrais l'ameliorer de sort qu'il :
En 1er) je voudrait que le code affiche les lignes dans ma base de données ou il y'a au minimum 2 de des mot_clefs inscris par l'utulisateur
Et ensuite ) les classe par ordre de pertinence c'est a dire si dans une ligne ou il y'a 3 mot_clefs inscris par l'utulisateur elle sera afficher avant celle ou il y'a seulement 2 mot_clefs
C'est interressant mais trop complexe pour ce que je cherche a faire je ne disposerait pas du temps nescessaire
Voici mon code
$mot = htmlspecialchars($_POST['mot']);
$mot_clef= explode("," , $mot);
$sql = "SELECT * FROM maladie WHERE Symptome REGEXP '";
$like ="";
foreach ($mot_clef as $value)
{
$like .= "$value|";
}
$sql .= substr($like,0,-1)."'";
$nb_resultats = $bdd -> query($sql) -> rowCount();
if ($nb_resultats > 0)
{
echo (" $nb_resultats resultat(s)" ) ;
}
else
{?>
<br/><strong><?echo ("Desoler nous n'avons pas trouver , Veuillez verifier votre saisi."); ?> <br/> <? echo (" Cela n'exclu pas l'importane de consulter un specialiste ");
}?> </strong>
<?
$resx = $bdd -> query($sql);
while ($donnees = $resx -> fetch())
{
?>
<p>
<strong> <? echo $donnees['id']; ?> </strong><?php echo $donnees['titre']; ?> <br/>
<form method="post" action="<?php echo $donnees['titre']?>.php">
<input type="submit" name="ouvrir" value=" Voir " >
</form>
<br/>
<?php
}
$bdd -> query($sql)->closeCursor();
salut
tu fais un fetchAll à la place d'un fetch.
tu iteres ton tableau pour compter les mots.
et ya plus qu'a trier le tableau avant d'aaficher les résultats.
c'est tout simple.
ça aurait été prévu avant, une autre requète aurait pu faire l'affaire.
@plus
Pierre
itération : Action de répéter, de faire de nouveau ; fait d'être répété. En informatique, procédé de calcul répétitif qui boucle jusqu'à ce qu'une condition particulière soit remplie. Répétition d'un calcul, d'une opération, d'un raisonnement.
@plus.
Pierre
J'ai aussi un autre probleme j'ai ajouter un champs conditions d'utulisation que j'ai ecrit comme ci dessous mais lorsque je charge la page j'ai directement le texte que contient le else
<form method="post" action="">
<label for="nom"> Quels sont vos symptomes ?</label>
<input type="text" name="mot" id="nom" />
<input type="checkbox" name="conditions" id="conditions" /> <label for="conditions">J'ai lu et j'accepte les conditions d'utulisations </label><br />
<input type="submit" name="envoyer" value="rechercher" />
</form>
if(isset($_POST['mot']) && $_POST['mot'] != NULL)
// on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{
}
else
{
echo ("Veuillez accepter les conditons d'utulisations");
}
Voici le code au complet
<form method="post" action="">
<label for="nom"> Quels sont vos symptomes ?</label>
<input type="text" name="mot" id="nom" />
<input type="checkbox" name="conditions" id="conditions" /> <label for="conditions">J'ai lu et j'accepte les conditions d'utulisations </label><br />
<input type="submit" name="envoyer" value="rechercher" />
</form>
<?php
if(isset($_POST['conditions']) && $_POST['conditions'] != NULL)
{
if(isset($_POST['mot']) && $_POST['mot'] != NULL)
// on vérifie d'abord l'existence du POST et aussi si la requete n'est pas vide.
{ ?>
<script language="javascript">
alert('Le système amal vous renseignent sur les causes possibles de vos symptômes il ne remplace pas un diagnostic medical.');</script>
<?
try
{
$bdd = new PDO('mysql:host=localhost;dbname=base;charset=utf8', 'root', 'root');
} catch (Exception $e ) {
die('Erreur : ' .$e->getMessage());
}
$mot = htmlspecialchars($_POST['mot']);
$mot_clef= explode("," , $mot);
$sql = "SELECT * FROM maladie WHERE Symptome REGEXP '";
$like ="";
foreach ($mot_clef as $value)
{
$like .= "$value|";
}
$sql .= substr($like,0,-1)."'";
$nb_resultats = $bdd -> query($sql) -> rowCount();
if ($nb_resultats > 0)
{
echo (" $nb_resultats resultat(s)" ) ;
}
else
{?>
<br/><strong><?echo ("Desoler nous n'avons pas trouver , Veuillez verifier votre saisi."); ?> <br/> <? echo (" Cela n'exclu pas l'importane de consulter un specialiste ");
}?> </strong>
<?
$resx = $bdd -> query($sql);
while ($donnees = $resx -> fetch())
{
?>
<p>
<strong> <? echo $donnees['id']; ?> </strong><?php echo $donnees['titre']; ?> <br/>
<form method="post" action="<?php echo $donnees['titre']?>.php">
<input type="submit" name="ouvrir" value=" Voir " >
</form>
<br/>
<?php
}
$bdd -> query($sql)->closeCursor();
}
}
else
{
echo ("Veuillez accepter les conditons d'utulisations");
}
?>
Et l'autre moyen avec la requete comment sa se passe je pense que ce serait plus simple
Parceque je ne pense pas pouvoir faire avec la l'iteration ??
Je pense que vous avez mal compris ceux que j'ai diit
je voudrais que admettons si l'utulisteur ecris : bonjour,soir
tout les resultats que j'aurai son ceux dont les lignes contiennent dans la colonne symptomes : bonjour et soir
non non , pas " ou " je dis bien " et "
il faudrait imperativement qu'il y est les 2 mots et cela au minimum parceque si il ecrit :
bonjour,soir,matin
il faudrait que le programme ressorte de la base de donnée toutes les lignes de ma table qui dans la colonne symptome contient soit :
-bonjour et soir
-bonjour et matin
-soir et matin
-soir et bonjour
-bonjour et soir et matin