LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 22/04/2009 à 21:02
Espace membre session
Oui par exemple, sans oublier le exit(); juste après le header.
LA GLOBULE
le 22/04/2009 à 20:50
Evaluation IF
Si tu veux mon avis, ton $ligne doit contenir un retour chariot, ce qui fait qu'il n'a pas la même valeur que ton champ SQL.

Pour le vérifier, tu peux faire un strlen de $ligne et de $donnes['score4'].
Si tu ne trouves pas la même valeur (1), c'est que ton $ligne contient de la merde (un retour chariot a priori), et qu'il faudrait donc striper (tu peux utiliser trim pour cela).
LA GLOBULE
le 22/04/2009 à 20:41
Espace membre session
Et bien au moment où la personne se logue à ton espace membre, tu connais son niveau d'admin (il suffit pour cela d'ajouter un champ dans la table membre contenant ce "niveau" d'admin et de selecter ce champ au login).

Tu colles alors ce niveau d'admin en session.

Ensuite, dans ta page, pour afficher ou non le bouton admin, tu feras un test de ce genre :

du html avant le bouton
<?php
if (isset($_SESSION['niveau_admin']) && $_SESSION['niveau_admin'] > 2) {
?>
<a href="admin.php">le lien admin</a>
<?php
}
?>
du html apres le bouton

(la, je suis parti du principe qu'il fallait avoir un niveau supérieur à 2 pour afficher ce lien)

Attention aussi, dans la page où mène ce lien, il te faut tester le niveau d'admin et faire une redirection le cas échéant (car sinon, n'importe qui peut accéder à cette page en copiant collant son URL).
LA GLOBULE
le 22/04/2009 à 13:27
Mysql et Sqlite
Alors non, tous les serveurs ne proposent pas sqlite par défaut.
C'est une option à activer.

Sinon, niveau performance, je ne connais pas la différence, je n'ai jamais essayé sqlite en fait.
Cette page montre quelques bench.

Attention, les benchs seuls ne sont pas suffisants pour justifier un choix. Les fonctions proposées par mysql et sqlite doivent entrer dans la balance.
LA GLOBULE
le 21/04/2009 à 20:42
Mysql et Sqlite
SQLite est une petite bibliothèque écrite en C qui propose un moteur de base de données SQL et implémentant en grande partie le standard SQL92 et les propriétés ACID. Contrairement aux serveurs de bases de données comme MySQL ou PostgreSQL, sa particularité est de ne pas reproduire le schéma habituel client/serveur mais d'être intégré directement aux programmes en utilisant des fichiers de bases de données. D. Richard Hipp, le créateur de SQLite, a choisi de mettre cette bibliothèque dans le domaine public.

(source wikipedia)
LA GLOBULE
le 21/04/2009 à 13:18
Problème avec BB-code et smileys
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.
LA GLOBULE
le 20/04/2009 à 12:24
Problème avec BB-code et smileys
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.
LA GLOBULE
le 20/04/2009 à 11:04
Problème avec BB-code et smileys
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).
LA GLOBULE
le 20/04/2009 à 11:00
Problème avec BB-code et smileys
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.
LoadingChargement en cours