Problème avec BB-code et smileys

Répondre
LA GLOBULE
le 20/04/2009 à 12:24
LA GLOBULE
Mais regarde ton code... La fonction, tu l'utilises ou ?

A première vue, nulle part.

Je sais que j'ai appliqué le bb-code au champ htmlentities(trim($data['message'])).


Et c'est en faisant ca que tu utilises la fonction bbcode() ? Moi, je ne la vois pas la.

Tu n'as meme pas assimilé le concept de fonction, et tu veux faire un livre d'or complet et tout ce qui va avec. Y'a comme un problème je pense.
fran6
le 20/04/2009 à 13:04
fran6
J'ai encore râté un truc important. Vu le code ci-dessus je n'ai pas appliqué le bb-code à un champ quelconque.

Ca c'est sûr.

Je vais refléchir un peu, consulter google et puis boire une tasse de café. Ca aidera peut-être à résoudre le problème.

En attendant, si quelqu'un peut aider je suis toujours là.
fran6
le 20/04/2009 à 13:07
fran6
Alors, on va essayer d'expliquer clairement.

Sur la page où tu affiches tes news, theoriquement, tu devrais avoir le code suivant :

1) preparation de la requete SQL ($sql = 'select ....')
2) execution de cette requette ($req = mysql_query($sql))
3) recuperation des donnees (while ($message = mysql_fetch_array($req)) {)
4) affichage des données (echo $news)
et tu ecriras par exemple :
$news = str_replace (':)', '<ims src="smiley1.gif">', $news);

et bien sur, tu recommenceras cette ligne pour tius tes smileys (la on ne recherche que les smileys :) et juste celui la. Si tu en as d'autres, il faudra refaire cette ligne pour donc un autre code de smiley avec une autre image de smiley).

Il faut rapprocher les deux. Mais comment ??
fran6
le 21/04/2009 à 12:30
fran6
Personne ne connaît la réponse ???smiley
I am totally lost then !!!
LA GLOBULE
le 21/04/2009 à 13:18
LA GLOBULE
Moi j'abandonne.

A priori, tu sais utiliser une fonction que tu as créé (barre_navigation), mais tu n'arrives pas à utiliser une autre fonction que tu as créé (bbcode).
Y'a comme un truc qui ne va pas la.

Donc soit tu veux apprendre le PHP et dans ce cas, lis les cours et pose nous de vraies questions du genre "c'est quoi le concept de fonction en programmation ? Comment on déclare une fonction en PHP ? Comment on l'utilise ?" (parce que visiblement tu n'as compris c'était quoi une fonction), soit continue de faire des copier coller des bouts de code en espérant tomber sur un truc qui fonctionne, mais cela ne t'apprendra rien.

Le but de ce site, c'est de pouvoir apprendre le PHP, aider les gens à débuguer leur bout de code, mais pas de coder pour les gens.

Sinon, la solution à ton problème est la suivante :

<?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("", "<strong>", $text);
$text = str_replace("", "</strong>", $text);

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

$text = str_replace("", "<em>", $text);
$text = str_replace("", "</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">' , bbcode(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 />';
?>


Il suffisait juste d'utiliser la fonction bbcode sur le texte du livre d'or.

Tu n'as plus qu'à copier coller smiley. C'est ce que tu sais faire de mieux je crois.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours