Surlignage de réponse

Résolu
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005 - 5 juil. 2005 à 12:10
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005 - 6 juil. 2005 à 21:57
Bonjour,

J'interroge une BD avec risque de nombreuses réponses et des réponses assez longues. Y a-t'il moyen de surligner le mot cherché dans les réponses ?

Ma requête est celle-ci pour l'instant :

$req = mysql_query("SELECT url, description from actes_tbl where description LIKE '%$_POST[recherche]%' Order by url Asc limit 0,1 ") or die ("erreur req ".mysql_error());

16 réponses

cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
6 juil. 2005 à 21:57
Désolé de reprendre le forum aussi longtemps après la dernière réponse mais j'avais un pb de connexion. Maintenant c'est OK, j'ai essayé la dernière proposition (avec correction ). Tout va bien. Je rappelle le code final si ça interesse quelqu'un un jour :

while( $sortie = mysql_fetch_array($req))
{
$var = str_replace ($_POST['recherche'], ''.$_POST['recherche'].'', $sortie['description']);
print '
';
print $sortie[url].'
';
echo $var;
print '

}//fin de boucle

MERCI BEAUCOUP
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 12:17
Hello,



bah, dans l'affichage des resultats de ta requete, tu fais un truc comme ceci :

echo str_replace ($_POST['recherche']', '.$_POST['recherche'].'',
$resultat['description']);
0
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
5 juil. 2005 à 12:19
C'est exactement ce que j'aurais fait, sauf que j'aurais suggéré
...

Ca fait un effet Google en somme...

===========
Validez les réponses si ok...

ViewVite XP : HTML
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 12:55
Merci mais pour afficher la réponse j'ai :

print '
';
print $sortie[url].'
';
print $sortie[description].'
';

Où puis-je ajouter la ligne de commande ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 13:28
a la place de ca :



print $sortie[description].'
';
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 13:48
Ce ne fonctionne pas :
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/free.fr/e/e/ch.yernaux/recherche.php on line 45

Pourquoi y-a 'il des ' dans $_POST['recherche'] par exemple ? Mon intitulé habituel est $_POST[recherche]
Je suppose que $resultat['description'] est en fait $sortie[description] ?

Pour l'instant j'ai :
print '
';
print $sortie[url].'
';
echo str_replace ($_POST[recherche]', '.$_POST[recherche].'', $sortie[description]);
print '

Mais toujours avec le même message d'erreur !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 15:16
Parce que c'est faux, il doit TOUJOURS y avoir des quotes pour les index d'un tableau associatif. $_POST['recherche']
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 15:28
Soit mais ça ne marche pas !

Au mieux j'ai mon mot recherché surligné en rouge et remplacé par le texte : $_POST[recherche]
avec ce code :

print '
';
print $sortie[url].'
';
echo str_replace ("$_POST[recherche]", '$_POST[recherche]', $sortie[description]);
print '
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 15:34
Ben la je ne vois pas de quotes.

echo str_replace ("$_POST['recherche']", ''.$_POST['recherche'].'',
$sortie['description']);
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 15:43
Justement, il n'y a que quand il n'y a pas de quotes que j'obtiens un résultat potable. Sinon avec ton code j'ai :


Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/free.fr/e/e/ch.yernaux/recherche.php on line 45

Voici le code complet: (la ligne 45 est celle d'"echo... "tout en bas. Cette page fait suite à un formulaire de recherche :

<?
if(strlen($_POST[recherche])<2)//on vérifie que la demande comporte au moins 3 caractères
print '

LE CHAMP DOIT CONTENIR AU MOINS 3 CARACTERES

Cliquez sur "Précédente"'; //s'il y a moins de 3 caractères, message d'erreur
else{
//----------------------------------------------------------------
//
// Page de recherche avec le mot ou les mots clés
//
// recherche.php
//
//----------------------------------------------------------------


$mysql_host = 'sql.free.fr'; // entrer votre hote ici
$mysql_user = 'ch.yernaux'; // entrer votre login
$mysql_password = '6d3k9267'; // entrer votre password
$mysql_base = 'ch_yernaux'; // entrer le nom de votre base


//----------------------------------------------------------------
//Attention, je ne vais pas reprendre les vérifications de formulaires, vous les avez vu dans les cours précédents.


//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");


//sélection de votre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion base");



//requête de recherche
$req = mysql_query("SELECT url, description from annuaire_tbl where description LIKE '%$_POST[recherche]%' Order by url Asc limit 0,1 ") or die ("erreur req ".mysql_error());


//on compte les résultats
$res= mysql_numrows($req);


//on affiche le nombre de résultats trouvés
print ' Pour le mot '.$recherche.' il y a '.$res.' résultat(s)

';


//----------------------------------------------------------------------
//on ressort les infos par ordres alphabétiques, voir order dans la requête


while( $sortie = mysql_fetch_array($req))
{


print '
';
print $sortie[url].'
';
echo str_replace ("$_POST['recherche']", ''.$_POST['recherche'].'', $sortie['description']);
print '
-----------------------------------------------------------------

'; // c'est juste une ligne de séparation ;-)


}//fin de boucle


//on ferme la connexion
mysql_close();
}
?>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 15:53
Deja tu peux enlever les doubles quotes :



echo str_replace ($_POST['recherche'], ''.$_POST['recherche'].'',
$sortie['description']);ensuite essaye d'assigner et te faire un echod e la variable :

$var = str_replace ($_POST['recherche'], ''.$_POST['recherche'].'',
$sortie['description']);

echo $var;

Le probleme doit etre au niveau de l'echo et des simples quotes.

Pour le reste de ton code, tu auras des pb un jour si tu continues a
utiliser les tableaux associatifs sans quotes pour les index.
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 16:04
Oui mais non (si, si !)


Du coup le champ $sortie['description'] ne s'affiche plus du tout. Il trouve une réponse à ma recherche mais il n'affiche plus que $sortie[url]...

$var = str_replace ($_POST['recherche'], ''.$_POST['recherche'].'', $sortie['description']);
while( $sortie = mysql_fetch_array($req))
{


print '
';
print $sortie[url].'
';
echo $var;
print '
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 16:13
Question annexe: Comment str_replace sait-il ce qui est à remplacer et par quoi ? Les guillemets permettaient de définir les deux parties: remplacer "recherché" par "recherché surligné en rouge" dans $sortie['description'] mais là ??? Tout est dans la parenthèse ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 16:17
Tu fais une recherche sur str_replace () ...dans la doc.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 juil. 2005 à 16:26
Heu et la tu as mis le str_replace AVANT la recherche dans ta base,
donc $sortie['description'] n'existe pas. Tu dois le mettre dans la
boucle allant chercher les resultats de ta requete.
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
5 juil. 2005 à 16:31
C'est fait, c'est justement là que j'ai vu qu'habituellement il y a des guillemets.
Je ne sais pas ce qu'à le site PHPCS mais il met une ou deux minutes pour afficher une page en ce moment (en ADSL) !
0
Rejoignez-nous