les forums php/Js ... [philosophie] - PHP - Programmation
Marsh Posté le 15-03-2002 à 09:33:13
pq t'utilises pas un forum open source gratuit et tu le customize un max. Le résultat serait bien meilleur non?
Marsh Posté le 15-03-2002 à 09:36:44
ben non je trouve bcp + dur de comprendre les scripts que de les crees moi meme au - je suis sur d'avoir que ce dont j'ai besoin pas d'une usine a gaz comme phpbb
Marsh Posté le 15-03-2002 à 11:04:48
et puis ça permet d'apprendre plus de chose... parce qu'on fait des erreurs qu'on doit résoudre!
Marsh Posté le 15-03-2002 à 11:07:19
Dropsy, entierement d'accord mais si je peux eviter les erreurs communes et bloquantes g rien contre
personne ne sait alors comment sont convertis les : bidule : en smiley ?
Marsh Posté le 15-03-2002 à 11:07:48
pour le 1: regarde du coté des expressions régulières
pour le 2: oui il faut penser à plein de choses, le plus important, c'est de bien modulariser son code et prévoir ses tables.
Marsh Posté le 15-03-2002 à 11:10:33
donc le principe c'est chercher des regexps (ex www.*.fr)dans le champs text et faire un replace <a href="http://www.*.fr"> avant de l'afficher c'est bien ca?
c'est pas super gourmant en ressources machine ca?
gizmo a écrit a écrit : pour le 1: regarde du coté des expressions régulières pour le 2: oui il faut penser à plein de choses, le plus important, c'est de bien modulariser son code et prévoir ses tables. |
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 15-03-2002 à 11:10:55
kayasax a écrit a écrit : Dropsy, entierement d'accord mais si je peux eviter les erreurs communes et bloquantes g rien contre personne ne sait alors comment sont convertis les : bidule : en smiley ? |
bah, je suis d'accord pour les errurs de conception qui t'obligeraient à tout reprendre...
Marsh Posté le 15-03-2002 à 11:10:58
Citation : pour le 1: regarde du coté des expressions régulières |
Tout a fait d'accord : c'est trop puissant les expressions regulieres et je suis sur que c'est comme ça que ça marche.
hihi
Marsh Posté le 15-03-2002 à 11:15:06
Citation : pour le 1: regarde du coté des expressions régulières |
Comment veux tu faire autrement ? Il faut bien que tu analyses ce que l'utilisateur a ecrit. Je connais pas PHP et ses regexp mais en tout cas les expressions regulieres avec Perl c'est tres puissant...
hihi
Marsh Posté le 15-03-2002 à 11:23:44
kayasax a écrit a écrit : donc le principe c'est chercher des regexps (ex www.yahoo.fr)dans le champs text et faire un replace <a href="http://www.yahoo.fr"> avant de l'afficher c'est bien ca? c'est pas super gourmant en ressources machine ca? |
les regexp php sont assez light si bien utilisées : un conseil, converti les smileys et autre modif automatique lors de la saisie du message pour éviter de remoulliner le tout à chaque affichage.
sinon, c'est assez simple : tu cherche http:// ou www. ou ftp:// avec des lettres après jusqu'a tomber sur un espace et tu converti par <a href="le texte d'origine" target="blank">le texte d'origine</a>
pour les smileyr bin tu cherche le code du smiley et tu remplace par le code de l'image.
Marsh Posté le 15-03-2002 à 11:25:47
Sh@rdar je t'adores tes explic sont toujours bien détaillées et tres claires
Marsh Posté le 15-03-2002 à 11:27:46
kayasax a écrit a écrit : Sh@rdar je t'adores tes explic sont toujours bien détaillées et tres claires |
ohlà du calme
Marsh Posté le 15-03-2002 à 11:31:49
et moi je suis presque marié
Marsh Posté le 10-04-2002 à 19:43:57
bon g pas encore avance sur mon forum moi... allez on se remotive la !
Bon j'ai une question sur l'organisation de la ou les tables des messages :
C'est quoi le mieux en terme d'efficacite :
creer une table pour les sujets (parents) et une autre table pour les sujets enfants avec l'id du parent ? (-> +cool pour afficher la liste des topics ?)
ou creer une seule table avec sujets parents et enfants melanges (->requetes +simples ?)
voila si qqun a deja teste les 2 facons ...
Marsh Posté le 10-04-2002 à 21:20:49
bouffe
$text = ereg_replace("((ftp|https?)://(([[:alnum:]]|[[:punct:]]){1,50})([[:alnum:]]|[[:punct:]])*)",
"<a href=\"\\0\">\\3</a>", $text);
Ba ouiais c'est super bon
[jfdsdjhfuetppo]--Message édité par tanguy--[/jfdsdjhfuetppo]
Marsh Posté le 10-04-2002 à 21:30:13
y'a klk tps y'a eu 2 3 post sur la conception de forum assez actif, fait une petite recherche je suis sur que le principal a été dit, notemment un thread de gizmo qui presentait son forum super rapide justement grace au js.
Marsh Posté le 10-04-2002 à 21:34:52
t'es sur que c'est gizmo l'auteur du post paske wallou ?
Marsh Posté le 10-04-2002 à 21:36:36
Pour l'histoire des topics parents / enfants, mon avis est qu'il vaut mieux (c'est comme ça qu'on m'a appris) tout mettre dans la même table et ajouter un champ que tu peux appeler "parent" est qui est tu type de ta clé primaire (donc généralement un integer). Auquel cas, un parent = 0 te dit que tu as affaire à un père et un parent != 0 (je rappelle aux bouzeux que != ça veut dire différent ) ça veut dire que c'est un enfant, dont le parent est le numéro stipulé. Voilou.
Marsh Posté le 10-04-2002 à 21:38:10
a y est g l'ai retrouve :
http://forum.hardware.fr/forum2.ph [...] p=1&trash=
top !
Marsh Posté le 11-04-2002 à 01:06:03
oué c'etait po lui mais bon si t'as trouver ton bonheur
sinon cherytree dans la theorie c po mal de faire comme tu dis mais dans la pratique pour un forum kan tu est sur la page qui liste les message tu va faire une requette sur une table qui contient beaucoup plus d'elements que necessaire a savoir toutes les reponses au sujets donc c po terrible surtout avec un mysql derriere. Le truc est donc de sortir les titre de sujet et de les stocker dans une autre table ou tout les champs auront une taille fixe (aucun text ou blob koi)... J'ai pas fait de test de performance mais je suis convaincu que c'est mieux
sinon pour pas se retrouver avec une table a 10 000 000 d'enregistrement autant dupliquer une structure de table pour chaque section du forum
Marsh Posté le 11-04-2002 à 09:11:03
si tu veut va voir http://www.mrmatforum.fr.st tu peut y telecharger le source made in moi
Marsh Posté le 16-04-2002 à 21:01:57
Tiens ptite question en passant : (he oui ca y est j'ai fini par me lancer dans mon forum...)
Ca se fait de stocker un mot de passe dans un cookie ?
edit :ah bah oui je suis con je viens de le voir
dans le cookie de forum.hardware ...
sinon le stocker en clair (pas MD5) ca craint ?
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 18:26:59
Encore moi...
La j'ai un probleme + logik ke teknik :
je vois pas bien comment gerer l'affichage du lien 'page suivante' sur la page des sujets et sur celle des msg.
j'explique : je defini par exemple une limite de 10 sujets par page ($limite).
imaginons g 22 sujets dans ma base
1- comment savoir que sur la 1ere page je dois mettre un lien vers la page 2 ; sur la 2eme page un lien sur la p3 et sur la p3 pas de lien ??
->faut trouver le + gd diviseur du total des messages par $limite
-->22 / 10 = 2 donc lien sur les 2 premieres pages
mais comment ca se code ca ??
2- comment j'adapte la limite de mon select suivant le n° de page?
j'ai pense a ca :
select ... limit (($limite*n°page)-$limite)-1,$limite
c'est bon ?
Marsh Posté le 18-04-2002 à 19:19:57
tu peux faire comme ça :
LIMIT $n°_de_page*$nbre_de_post_par_page),$nbre_de_post_par_page
admettons que tu mets 10 post par page
à la page 0 ça donne LIMIT 0,10 (de 1 à10)
à la page 1 LIMIT 10,10 (de 11 à 20)
etc..
dans tes liens tu mets juste en param n°_de_page+1
Marsh Posté le 18-04-2002 à 19:26:00
merci Sh@rdar je t'attendais
comment savoir le dernier n° de page pour ne pas afficher le lien ?
Marsh Posté le 18-04-2002 à 19:58:26
désolé j'étais occupé, mais je le poste quand même
tu as deux options :
1-faire des flèches SUIVANT/PRECEDENT
soit :
$nmpp = 10; // le nombre de message par page
$ntotal= 50; // le nmbre total de résultat à afficher (ça vient d'une requête COUNT() sur l'ensemble des posts)
// $début c'est le n° du premier post à afficher
dans ta requête qui sert à afficher la page en cours
tu as la clause LIMIT $début,$nmpp
<?
// on démarre au post 0 par défaut
if (!isset($debut)) $début =0;
// si le numéro du premier post affiché est supérieur au nombre
// de post par page, on affiche le lien "PRECEDENT"
//
if ($debut >= $nmpp) echo "<a href=\"tapage.php?debut=". ($debut-$nmpp)."\">PRECEDENT</a>";
// si il reste encore des posts après le post en cours,
// on affiche le lien "SUIVANT"
if ($debut + $nnp < $ntotal) { echo "<a href=\"tapage.php?debut=".($debut+$nnp)."\">SUIVANT</a>";
?>
2 - Afficher directement toutes les pages pour proposer un accès direct (comme sur le forum HFR)
soit :
$nmpp = 10; // le nombre de message par page
$ntotal= 50; // le nmbre total de résultat à afficher
// $npage c'est le n° de la page en cours
dans ta requête qui sert à savoir quels messages tu dois afficher sur la page
tu as une clause LIMIT ($npage*$nmpp),$nmpp
<?
// on démarre à la page 0
if (!isset($npage)) $npage =0;
// on boucle pour afficher chacun des liens correspondant à une page
for ($i=0; $i<$ntotal/$nmpp; $i++) {
// si la page en cours est différent on affiche le lien pour y accèder
if ($i<>$npage) echo " <a href=\"tapage.php?npage=$i\">".$i+1."</a>
// sinon on affiche juste le n° de page
else echo $i+1;
}
?>
Marsh Posté le 18-04-2002 à 20:00:14
bon y a des erreurs de syntaxes mais si c'est pas clair, demande j'epliquerais un peu plus.
Marsh Posté le 18-04-2002 à 20:55:11
Sh@rdar mi amor ...
en fait moi je combine tes 2 techniques.
Y a k'1 truc que je capte pas dans ton 1 c'est:
Citation : // si le numéro du premier post affiché est supérieur au nombre |
c sera pas pluto if ($debut+$nmpp >= $ntotal) ?
edit : ah non c bon je viens de comprendre ce que tu fais !
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 21:09:05
bin non, si ton premier message affiché est plus grand que le nombre de message par page, alors il en reste à afficher avant et tu dois mettre une flêche PRECEDENT
c'est logique nan ?
Marsh Posté le 18-04-2002 à 21:28:39
bon pour moi tout roule mais je corrige pour ceux que ca interesse :
Sh@rdar a oublie le < en rouge
if ($debut + $nnp << $ntotal) { echo "<a href=\"tapage.php?debut=".($debut+$nnp)."\">SUIVANT</a>";
?>
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 22:06:36
il doit y avoir une autre erreur qqes part parceque parfois le lien suivant s'affiche alors qu'il n'y a aucun msg dans la derniere page et des fois ca tourne impec (en fonction de la limite de post par page).
Voila mes tests :
$pn=$p+1;
$pp=$p-1;
if($debut>=$limite_post):
echo("<tr><td colspan=\"2\" align=\"right\"><a href=\"viewmsg.php?id=$id&p=$pp\">Previous</a></td></tr>" );
elseif($limite_post+$debut << $nbpost):
echo("<tr><td colspan=\"2\" align=\"right\"><a href=\"viewmsg.php?id=$id&p=$pn\">Next</a></td></tr>" );//lien page suivante
elseif($debut=="0" && $nbpost>$limite_post):
echo("<tr><td colspan=\"2\" align=\"right\"><a href=\"viewmsg.php?id=$id&p=$pn\">Next</a></td></tr>" );//lien page suivante
endif;
Marsh Posté le 18-04-2002 à 22:40:19
en principe y a pas besoin d'ajouter le < en plus...
ce truc marche normalement, je m'en sers sur ma page perso.
donnes un peu tes requêtes de comptage de poste et le code d'affichage des liens PRECEDENT/SUIVANT stp
Marsh Posté le 18-04-2002 à 22:47:01
pour les liens je t'ai mis le code + haut, pour le reste c difficile a isoler ds mon script...
je peux mettre le code complet si tu veux
EDIT : en fait laisse tomber g fait nimportkoi... je reprend ca demain...
[jfdsdjhfuetppo]--Message édité par kayasax--[/jfdsdjhfuetppo]
Marsh Posté le 21-04-2002 à 15:09:05
C'est bon tout fonctionne merci a tous !
encore une tite question qui ne concerne pas mon forum mais c pour ma culture :
comment autoriser les users a poster du code html sans qu'il s'execute ? j'avais pense a strip_tags mais ca vire carrement les balises. j'ai aussi pense a entoure le post par <pre></pre> mais la substitution des smilies ou des liens ne se ferait plus dans ce cas la...
Marsh Posté le 21-04-2002 à 16:38:58
kayasax a écrit a écrit : C'est bon tout fonctionne merci a tous ! encore une tite question qui ne concerne pas mon forum mais c pour ma culture : comment autoriser les users a poster du code html sans qu'il s'execute ? j'avais pense a strip_tags mais ca vire carrement les balises. j'ai aussi pense a entoure le post par <pre></pre> mais la substitution des smilies ou des liens ne se ferait plus dans ce cas la... |
Nan car entre des <pre> ça s'exécute quand même (en tout cas dans Opera). Tu fais juste un $post = htmlspecialchars($post) avant d'enregistrer dans la base de données comme ça les > et < sont convertits en > et <.
Marsh Posté le 15-03-2002 à 09:27:25
Hello !
Et oui la philosophie c'est l'amour de la sagesse et la sagesse c'est aussi savoir profiter de la sagesse des autres
Bon je vais essayer de me lancer dans la création de mon forum php / JS et avant de me planter lamentablement g qqes questions :
1- Comment marche l'interpretation du contenu des posts ? Je pense que le corps des messages est stocké dans un champs text voir un longtext donc comment à partir d'un champ de ce type rendre par exemple une adresse internet cliquable ou transformer un code smiley en image? Il faut analyser le champs text caractere par caractere ?? ca me semble pas possible pour des pbs de lenteur mais je vois pas comment ca fonctionne sinon...
2- Si ceux qui ont deja dev. un forum ont des remarques ou commentaires... Peut etre faut il prevoir une variable a laquelle on pense pas forcement au début ?? ou une liste des erreurs de conceptions les + classiques.
Voila si ca peut m'eviter de programer pour m'apercevoir une semaine + tard qu y a un truc foireux et que fo tout recommencer ce serait cooool .
Merci tous
[jfdsdjhfuetppo]--Message édité par joce le 28-05-2002 à 08:53:09--[/jfdsdjhfuetppo]
---------------
All we need is a soul revolution