Les plus longues phrases avec sql/php !
Résolu
Elodie_79
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
Elodie_79 Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Elodie_79 Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je ne sais pas comment procéder, trouver la plus longue chaîne (phrase) dans la base de de données ,au départ j'ai un ficher qui contient des phrase séparés (des lignes il y a un retour à la ligne) je doit faire un script qui vérifie pour chaque ligne la plus longue chaîne et des garder les plus petites si elle sont dans ma base de données par exemple mon fichier contient ces lignes :
'le pays des merveilles est le rêve de tous'
'la maladie de ces enfants peut être prendre en charge'
...
...
par exemple 'le pays des merveilles' est dans ma base donc je l'affiche
'rêve' est dans ma base de donnée
'la maladie' est dans la base
'enfant' est dans la base
'prendre en charge' est dans ma base
donc je ne sais pas comment faire cette requête au début j'ai penser de récupérer le fichier dans un tableau mais et chaque variable de mon tableau est un mot 'mais il y a des phrase composée soit en 2, en 3, en 4 mot.. je doive récupérer telle qu'elle sont et si je sépare chaque mot donc je perd bcp de donnée même chose si je mets dans chaque variable 2 ou 3 mots je pers les autres donc je ne sais pas franchement comment procéder pour résoudre mon problème
merci d'avance pour votre aide :(
je ne sais pas comment procéder, trouver la plus longue chaîne (phrase) dans la base de de données ,au départ j'ai un ficher qui contient des phrase séparés (des lignes il y a un retour à la ligne) je doit faire un script qui vérifie pour chaque ligne la plus longue chaîne et des garder les plus petites si elle sont dans ma base de données par exemple mon fichier contient ces lignes :
'le pays des merveilles est le rêve de tous'
'la maladie de ces enfants peut être prendre en charge'
...
...
par exemple 'le pays des merveilles' est dans ma base donc je l'affiche
'rêve' est dans ma base de donnée
'la maladie' est dans la base
'enfant' est dans la base
'prendre en charge' est dans ma base
donc je ne sais pas comment faire cette requête au début j'ai penser de récupérer le fichier dans un tableau mais et chaque variable de mon tableau est un mot 'mais il y a des phrase composée soit en 2, en 3, en 4 mot.. je doive récupérer telle qu'elle sont et si je sépare chaque mot donc je perd bcp de donnée même chose si je mets dans chaque variable 2 ou 3 mots je pers les autres donc je ne sais pas franchement comment procéder pour résoudre mon problème
merci d'avance pour votre aide :(
A voir également:
- Les plus longues phrases avec sql/php !
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Tapez cette phrase, en respectant bien les espaces et la ponctuation. - Guide
- Requête sql pix - Forum Python
2 réponses
salut
tu peux inverser ton like dans ta requête. C'est dire, au lieu de faire
tu peux plutot faire :
ensuite rajouter un
pour remonter les résultats les plus longs en premier est tout à faire possible
tu peux inverser ton like dans ta requête. C'est dire, au lieu de faire
.... AND CHAINE_BASE like '%le texte a lire%'
tu peux plutot faire :
.... AND 'le texte a lire' like concat('%',CHAINE_BASE,'%')
ensuite rajouter un
ORDER BY LENGTH(CHAINE_BASE)DESC
pour remonter les résultats les plus longs en premier est tout à faire possible
je ne sais pas est ce que en faisant des classes ou des fonctions :( :(
Bonjour; la partie la plus importante je l'ai déjà montré:
et voila ce j'ai déjà fait:
foreach($tab as $key=>$value){// $value est une ligne de mon fichier
$requete = 'SELECT mots FROM tablet WHERE \''.mysql_real_escape_string($value). '\' LIKE concat(mots) AND page_namespace=0 ORDER BY LENGTH(mots)DESC';
$result = mysql_query($requete, $link) or die (mysql_error());
if($row=mysql_fetch_row($result)){
$tabb[]=$value;
}}
print_r($tabb);
c'est ça mon code si je mets que chaque variable de $tab est une ligne de mon fichier , donc il vérifie pour l'ensemble de ligne est pas les mots
et si je déclare chaque variable de mon tableau est un mot de ces phrases donc il ignore les mots composés
Merci
et voila ce j'ai déjà fait:
foreach($tab as $key=>$value){// $value est une ligne de mon fichier
$requete = 'SELECT mots FROM tablet WHERE \''.mysql_real_escape_string($value). '\' LIKE concat(mots) AND page_namespace=0 ORDER BY LENGTH(mots)DESC';
$result = mysql_query($requete, $link) or die (mysql_error());
if($row=mysql_fetch_row($result)){
$tabb[]=$value;
}}
print_r($tabb);
c'est ça mon code si je mets que chaque variable de $tab est une ligne de mon fichier , donc il vérifie pour l'ensemble de ligne est pas les mots
et si je déclare chaque variable de mon tableau est un mot de ces phrases donc il ignore les mots composés
Merci
tu dois ajouter ton $row à ta table et non $value qui est ta valeur de base .. dans ton cas c'est le row[0] qui correspond aux mots de ta bdd, et il faut que tu ajoute un élément à ta table, par exemple :
avec i étant un compteur pour ajouter un élément à ta table. donc en gros (je vérifie pas ton code) :
$tabb[i]=$row[0]
avec i étant un compteur pour ajouter un élément à ta table. donc en gros (je vérifie pas ton code) :
$i = 0 foreach($tab as $key=>$value){// $value est une ligne de mon fichier $requete = 'SELECT mots FROM tablet WHERE \''.mysql_real_escape_string($value). '\' LIKE concat(mots) AND page_namespace=0 ORDER BY LENGTH(mots)DESC'; $result = mysql_query($requete, $link) or die (mysql_error()); if($row=mysql_fetch_row($result)){ $tabb[$i]=$value; $i++; }} print_r($tabb);
bah 2 choses, la première c'est que tu assignais $value dans tous les cas, donc ta requête n'avait pas d'impact. La seconde c'est que je n'ai aucunes infos.
déjà essaye d'afficher les requêtes qui sont jouée pour les contrôler, si tu peux les tester directement sur ta base de données, fais le et vois les résultats. Le code que tu écris à une forme qui donne l'impression que tu as déjà contrôlé pas mal de points, ecris plutot quelque chose du genre
comme ca tu pourra déjà controler quelle est la valeur de la ligne lue, quelle est sa requête construite et quels sont les résultats obtenus, de manière à assez propre pour être lisible (ce qui suffit pour débugger).
Regarde déjà ce que ca affiche
déjà essaye d'afficher les requêtes qui sont jouée pour les contrôler, si tu peux les tester directement sur ta base de données, fais le et vois les résultats. Le code que tu écris à une forme qui donne l'impression que tu as déjà contrôlé pas mal de points, ecris plutot quelque chose du genre
foreach($tab as $key=>$value)// $value est une ligne de mon fichier { echo "<div>" . $value . "<br />"; echo "-----------------------------------------------"; echo "REQUETE : " . "<br />"; $requete = 'SELECT mots FROM tablet WHERE \''.mysql_real_escape_string($value). '\' LIKE concat(mots) AND page_namespace=0 ORDER BY LENGTH(mots)DESC'; echo $requete; $result = mysql_query($requete, $link) or die (mysql_error()); //$link sort d'où? où se fait la connexion à ta bdd ? $row=mysql_fetch_row($result); //le if ne sert à rien si tu fais une assignation vu que la fonction retourne un tableau. echo "<br />RESULTATS : <br />" print_r($row) ;//regarde déjà les résultats de ta requete echo "</div>"; }
comme ca tu pourra déjà controler quelle est la valeur de la ligne lue, quelle est sa requête construite et quels sont les résultats obtenus, de manière à assez propre pour être lisible (ce qui suffit pour débugger).
Regarde déjà ce que ca affiche
j'espère que j'ai clarifié mon problème :(
et non ma requête ne vérifie pas la ligne complète, d'où l'importance des %. Je m'éxplique :
tu as en base : 'pays'. Ce que ma requête fait c'est vérifier si 'pays' est contenu dans la phrase de départ. et te permettra donc de récupérer toutes les chaines de caractère présentes dans ta base et dans une partie de ta phrase.
Ce que je t'ai donné, c'est un moyen de récupérer à partir d'une phrase unique les expressions présentes dans ta phrases et dans ta base de donnée. Pour le reste je ne vois pas quel est l'objectif.