Surlignage de réponse [Résolu]

Signaler
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005
-
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005
-
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

Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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']);
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
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
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

Merci mais pour afficher la réponse j'ai :

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

Où puis-je ajouter la ligne de commande ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
a la place de ca :



print $sortie[description].'
';
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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 !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Parce que c'est faux, il doit TOUJOURS y avoir des quotes pour les index d'un tableau associatif. $_POST['recherche']
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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 '
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ben la je ne vois pas de quotes.

echo str_replace ("$_POST['recherche']", ''.$_POST['recherche'].'',
$sortie['description']);
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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();
}
?>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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 '
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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 ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Tu fais une recherche sur str_replace () ...dans la doc.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
50
Date d'inscription
vendredi 29 octobre 2004
Statut
Membre
Dernière intervention
12 juillet 2005

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) !