J'ai un formulaire je veux récupérer les informations de celui ci dans un tableaux ensuite faire une recherche de ces informations dans ma base de donnée
$mot = htmlspecialchars($_POST['mot']);
$mot_clef = explode(" ", $mot);
try
{
$bdd = new PDO('mysql:host=localhost;dbname=base;charset=utf8', 'root', 'root');}
catch (Exception $e )
{
die('Erreur : ' .$e->getMessage());
}
$reponse = $bdd->query("SELECT * FROM Titre WHERE Symptome LIKE '%$mot_clef%' ORDER BY id ASC");
voici mon script mais il ne marche pas
Même si il faut changer le code , il faudrait que je puisse récupérer la phrase inscrite par l'utilisateur et que je fasse une recherche de chaque mot qu'elle contient dans ma base de donner et ensuite j'afficherait les résultats pour les afficher j'utilise le code suivant :
<strong> <? echo $donnees['id']; ?> </strong><?php echo $donnees['titre']; ?> <br/>
Par la suite apres avoir régler ce problème je trouverait un moyen d'enlever les virgules qui seront surment saisi par l'utulistaeur .
Mais ce qui serait encore mieux ce serait de pouvoir faire une recherche dans ma base de donnée des mots séparer par une virgule , qui serait saisi par l'utulistaeur
tu as un truc du genre ça au niveau de chaque post.
tu cliques sur celui qui à répondu à ta question.
tu confirmes et c'est fini.
@plus
Pierre
Salut,
$inputuser = "une phrase avec des mots et même encore plus";
$mots= explode(" ", $inputuser);
$sql = "SELECT * FROM Titre WHERE Symptome REGEXP '";
$like ="";
foreach ($mots as $value){
$like .= "$value|";
}
$sql .= substr($like,0,-1)."'";
echo $sql;
@plus
Pierre
pour info, pour enlever la ponctuation, je t'ais donné la solution dans un autre topic.
@plus
Pierre
Bonjour le debut du code marche mais apres je n'arrive pas a afficher les information
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 .');
</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 Titre WHERE Symptome REGEXP '";
$like ="";
foreach ($mot_clef as $value){
$like .= "$value|";
}
$sql .= substr($like,0,-1)."'";
$nb_resultats = $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>
<?
while ($donnees = $sql->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
}
$sql->closeCursor();
}
?>
$sql est une string ;)
si tu fais un rowCount sur une string, ça risque pas de fonctionner ;)
faut faire une trux du genre :
$bdd->query($sql)
@plus
Pierre
Mainetant c'est faitle rowcount est bon mais je n'est toujours pas le reste du code celui qui affiche les resultats avec le while
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 .');
</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 Titre 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>
<?
while ($donnees = $sql->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();
}
?>
<?php
$resx = $bdd -> query($sql); // ressources sur les données
$resx ->rowCount(); // nombre d'enregistrement extrait
$while ($donnees = $resx->fetch())
{
// l'affichage de tes données
}
?>
@plus
Pierre
Le code ne marchait pas au debut au niveau du rowcount donc j'ai laisser le code de base et j'ai changer au niveau du while
$resx = $bdd -> query($sql);
while ($donnees = $resx -> fetch())
{
}
MERCI !!!! Beaucoup tu m'a bien aider sa fait 2 , 3 jours que j'essaie de regler ce problemes j'ai chercher partout
Mais mainetant un autres problemes se pose parceque :
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
ton 1er problème est résolu ;)
met ce topic en résolu et ouvre un autre topic.
@plus
Pierre