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());
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 :
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] ?
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
echo str_replace ($_POST['recherche'], ''.$_POST['recherche'].'',
$sortie['description']);ensuite essaye d'assigner et te faire un echod e la variable :
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 ?
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.
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) !