Problème avec BB-code et smileys

Répondre
fran6
le 20/04/2009 à 10:45
fran6
Non je n'ai pas encore mis ce code dans ma page. Je veux le mettre dans while mais ma page affiche toujours l'erreur que j'ai citée plus haut. ESt-ce que vous pouvez m'aider s'il vous plaît ???
LA GLOBULE
le 20/04/2009 à 11:00
LA GLOBULE
Je n'ai pas de boule de cristal et je ne suis pas devin.
Je n'ai pas TOUT ton code sous les yeux.
Tu es le seul à avoir toutes les cartes en main.

Donc on va arrêter les blagues, tu vas lire ton code, et tu vas débuguer.

De plus, je t'ai dis d'inclure le code de la fonction AVANT le while, ce n'est pas pour te faire chier, il y a une vraie raison à cela.
Et toi tu dis "Je veux le mettre dans while"...

Forcement, si tu ne suis pas les conseils, cela ne sert à rien.
Réfléchis un peu, en PHP, on ne peut déclarer qu'une seule fois une fonction. La déclarer dans un while est équivalent de la déclarer X fois. Au final, PHP est perdu.
Imagine un dictionnaire avec X définitions pour le même mot. Comment savoir quelle est la bonne définition ?

Démarre d'une base saine, avec une page simple sans include sans rien, et ajoute les éléments au fur et à mesure.
LA GLOBULE
le 20/04/2009 à 11:04
LA GLOBULE
Bon après avoir vu ton code, je ne peux que te conseiller de relire entièrement les messages échangés de ce sujet, car la réponse à ton problème s'y trouve (plusieurs fois d'ailleurs).
fran6
le 20/04/2009 à 12:00
fran6
En fait j'ai raté un détail. Il fallait mettre ma fonction avant le while pour éviter l'erreur citée plus haut.

Cependant mon code ne marche toujours pas. Mes BB-code et mes smileys reste toujours des codes. A l'aide s'il vous plaît.

Voici le code :
<?php

// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', 'mypass');
mysql_select_db ('mybdd', $base);

// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM livre_or';

// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune réponse trouvée';
}
else {
echo '<div class="message">';

// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;

$nb_affichage_par_page = 5;

// Préparation de la requête avec le LIMIT
$sql = 'SELECT * FROM livre_or ORDER BY id DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

//fonction BB-code et smileys

function bbcode($text)
{
$text = nl2br($text);

$text = str_replace("[b]", "<strong>", $text);
$text = str_replace("[/b]", "</strong>", $text);

$text = str_replace("[u]", "<u>", $text);
$text = str_replace("[/u]", "</u>", $text);

$text = str_replace("[i]", "<em>", $text);
$text = str_replace("[/i]", "</em>", $text);

$text = str_replace("[center]", "<center>", $text);
$text = str_replace("[/center]", "</center>", $text);

$text = str_replace(" ", "&nbsp;&nbsp;", $text);

$text = str_replace('}()','<img src="images/smileys/smiley1ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace('8o','<img src="images/smileys/smiley2ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace(':D','<img src="images/smileys/smiley3ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace(':))','<img src="images/smileys/smiley4ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace('z|','<img src="images/smileys/smiley5ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace(':(','<img src="images/smileys/smiley6ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace(';)','<img src="images/smileys/smiley7ani.gif" alt="" style="border:0"/>',$text);
$text = str_replace('8|','<img src="images/smileys/smiley9ani.gif" alt="" style="border:0"/>',$text);
$patterns = array();
$replacements = array();

$patterns[] = "#\[img\](.*?)\[/img\]#si";
$replacements[] = "<img src=\"\\1\" border=\"0\" />";

$patterns[] = "#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is";
$replacements[] = "<a href=\"\1\2\" target=\"_blank\" class=\"postlink\">\1\2</a>";

$patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si";
$replacements[] = "<a href=\"http://\\1\" target=\"_blank\" class=\"postlink\">\\1</a>";

$patterns[] = "#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si";
$replacements[] = "<a href=\"\\1\\2\">\\6</a>";

$patterns[] = "#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si";
$replacements[] = "<a href=\"http://\\1\">\\5</a>";

$patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
$replacements[] = "<a href=\"mailto:\\1\">\\1</A>";

return preg_replace($patterns, $replacements, $text);
}

echo bbcode($truc);


// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {

// on affiches les résultats dans la <table>
echo '<div class="en-tete_message"><table border="1"><tr><td width="250"><p class="titre_message">Par : ' , htmlentities(trim($data['name'])) , '</p></td><td width="233"><p class="titre_message">Le : ' , htmlentities(trim($data['date'])) , '</p></td><td width="100"><p class="titre_message">Note : ' , htmlentities(trim($data['note'])) , '/10</p></td></tr></table></div>
<div class="corps_message"><table border="1" width="583"><tr><td><p class="texte_message">' , htmlentities(trim($data['message'])) , '</p></td></tr></table></div><br /><br />';
}

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
echo '</div><br /><br />';

// on affiche enfin notre barre
echo '<div class="nbr_pages">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</div>';
}

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
mysql_close ();
echo '</table><br />';
?>
LA GLOBULE
le 20/04/2009 à 12:04
LA GLOBULE
Je te l'ai déjà expliqué, tu dois appliquer la fonction bbcode sur le texte que tu affiches.
fran6
le 20/04/2009 à 12:08
fran6
Même déconnecté, je suis toujours là et j'attends votre aide. Ca fait des jours que je travaille sur ce BB-code et smileys mais je n'arrive pas à résoudre mon problème. J'ai juste eu un terrible mal de crâne. Alors ne me laissez pas tombersmiley
fran6
le 20/04/2009 à 12:09
fran6
Hey LA GLOBULE aide moi s'il te plaît. Comment je dois appliquer ca sur le message ????
fran6
le 20/04/2009 à 12:09
fran6
Tu m'a déjà mis sur la voi là. Alors ne m'abandonne pas
fran6
le 20/04/2009 à 12:13
fran6
Où es-tu ??? Tu es toujours là j'espère.
Je sais que j'ai appliqué le bb-code au champ htmlentities(trim($data['message'])).
Alors qu'est-ce que je dois faire ??

Je suis en train de paniquer là.
Répondre
LoadingChargement en cours