Bonjour,
Je suis débutant en PHP et j'ai un petit problème.
Je souhaite afficher un texte, à la manière d'un livre d'or (tous les textes sont stocké dans une base SQL) et quand le texte contient le nom de quelqu'un (une autre base de donnnée existe avec une liste d'identifiant) celui-ci s'affiche en rouge (par la suite, j'aimerais faire un lien vers la fiche de la personne)
voici le code de ma page qui m'affiche les différent texte entré :
<?
// Page d'affichage des messages
session_start();
// Parametres de connexion à la base de données include("connexion.inc.php");
// Déclaration des variables $nb_rep_pages=10; // Nombre de réponses par pages
//on se connecte à la base de donnée $db = mysql_connect($BD_serveur,$BD_utilisateur,$BD_motDePasse) or die ("erreur de connexion");
//sélection de votre base de donnée mysql_select_db($BD_base,$db) or die ("erreur de connexion base");
// Initialisation des variables if(empty($page)) $page = 1; if(empty($fin)){ $sql = "select count(*) as qte from $id"; $p = @mysql_query($sql,$db); $fin = @mysql_result($p,"0","qte"); }
// Déclaration de la variable début $debut = ($page - 1) * $nb_rep_pages;
//la requète de selection des messages $req = mysql_query("SELECT date,message from $id Order by date_verif Desc LIMIT $debut,$nb_rep_pages ") or die ("erreur requete");
// Ici on calcul le nombre de page $nbpages = ceil($fin / $nb_rep_pages); // Ici on arrondi
echo '<p><a href="sectionmembre_acces_accueil.php">Cliquez ici pour retourner à l\'accueil des membres</a></p>';
echo "<table width='100%' border='0' cellspacing='0' cellpadding='2'>";
//on ressort le contenu en boucle, et on stock dans un tableau avec mysql_fetch_array while( $contenu = mysql_fetch_array ($req)) {
//on affiche le résultat print '<tr><td bgcolor="#FFFF99">Le '.$contenu[date].'</td></tr>'; print '<tr><td bgcolor="#FFFFCC">'; // echo stripslashes($contenu[message]);
$str=stripslashes($contenu[message]); $arr=explode(" ",$str); foreach ($arr as $elem) { mysql_select_db($BD_base,$id_link); $sql_id = 'SELECT id FROM table_utilisateurs'; $req_id = mysql_query($sql_id) or die('Erreur SQL ID !<br>'.$sql_id.'<br>'.mysql_error()); while($data = mysql_fetch_array($req_id)) { if ($elem == $data['id']) { echo "<font color='#FF0000'>$elem </font>"; } else { echo "$elem "; } } }
print '</td></tr>'; print '<tr><td><hr></td></tr>'; }
print '</table>';
// Affichage par page :) for($i = 1;$i <= $nbpages;$i ++){ echo "<a href=\"?page=$i&fin=$fin\">Page $i</a>"; if($i < $nbpages) echo " - "; }
//on referme la connexion mysql_close();
?>
|
C'est grace à while($data = mysql_fetch_array($req_id)) que j'arrive a afficher les noms en rouge, mais le problème, c'est que tous les mots de mon texte sont répétés autant de fois que j'ai d'enregistrement dans la table 'table_utilisateurs'.
Je ne sais pas comment éviter ce problème. si je retire le while($data = mysql_fetch_array($req_id)) , sans oublier de retirer les { et } qui vont avec, mon texte s'affiche normalement, mais il n'y a plus la reconnaissance des noms enregistré...
HELP !