Toutankharton Posté 26 Juillet 2005 Posté 26 Juillet 2005 Je voudrais que dans mes paragraphes, si jamais un nom propre étant dans la base de donnée s'affiche, celui ci soit transformé en lien... J'ai crée une petite fonction qui semble tourner à l'infini. En tout cas elle ne marche pas et s'affiche : Fatal error: Maximum execution time of 30 seconds exceeded.... au lieu de mon texte. La voici, si vous pouvez m'aider : function linkage($str) { $tok = strtok($str," \n\t"); while ($tok) { if(strlen($tok) >= 4 && preg_match("![A-Z]!",$tok[0])) { $sql_tok = "SELECT id,nom FROM noms_propres WHERE nom LIKE '%" .$tok. "%'"; $req_tok = mysql_query($sql_tok); mysql_num_rows($req_tok); if(mysql_num_rows($req_tok) < 0) { $str = str_replace($tok, "<a href=''>$tok</a>",$str); return $str; } } } $tok = strtok(" \n\t"); }
Boo2M0rs0 Posté 28 Juillet 2005 Posté 28 Juillet 2005 La ligne "$tok = strtok(" \n\t");" doit être placée juste avant la fin de la boucle while, et pas juste après car sinon la boucle analyse toujours le même segment et continue à l'infini. Enfin, de mon point de vue ça sera pas un script très rapide (du point de vue d'un seul affichage ça ne se voit pas, mais si des dizaines de visiteurs passent, le serveur pourrait en souffrir) vu que le nombre de requête sql sera proportionnel (ou presque ...) au nombre de mot dans le paragraphe (c'est à dire , beaucoup !).
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant