Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1781 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  structure d'une base de donnés sql pour un forum et fonctions innovant

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

structure d'une base de donnés sql pour un forum et fonctions innovant

n°238895
mrwiseman
SOS, windows ne plante pas...?
Posté le 03-11-2002 à 18:52:57  profilanswer
 

voila tout et dans le titre....
j'ai besoin de programmer un forum....(et pas dans repiquer un )
je commence a etre bon en php/sql/javascript/html ....
jee viens de creer une librairie pour simplifier a mort les requetes sql (histoire de me simplifier la programmation du forum)
 
QUESTIONS :
1/quelles sont les fonctions essentielles d'un forum ?(hors lire et posté ..lol)
2/quelles fonctions manquent aux forums ?(par ex hardware.fr exemple meme du forum impec)
 
merci

mood
Publicité
Posté le 03-11-2002 à 18:52:57  profilanswer
 

n°238939
omega2
Posté le 03-11-2002 à 19:52:52  profilanswer
 

Ici, la seule fonction qui pourait manquer dans certain cas, c'est une vue hiérarchique de la discution ou une récapitulation hiérarchique de la discution avec un affichage d'un seul message à la fois.
Quand une discution part dans 4-5 directions à la fois, c'est parfois limite dur de s'y retrouver. ;)

n°238999
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 03-11-2002 à 21:39:01  profilanswer
 

omega2 a écrit a écrit :

Ici, la seule fonction qui pourait manquer dans certain cas, c'est une vue hiérarchique de la discution ou une récapitulation hiérarchique de la discution avec un affichage d'un seul message à la fois.
Quand une discution part dans 4-5 directions à la fois, c'est parfois limite dur de s'y retrouver. ;)




 
Que veux tu dire??  
 
Tu veux dire quand l'un repond a l'autre? Puis un autre a un autre etc .. ???
 
C'est vrai que c'est interressant !  
 
Aller au boulot mrwisema:  :lol:  
 
P.S.: Moi aussi j'ai commencé la creation d'un script de forum, pas plutard qu'hier , je suis encore au stade de la generation des forum et sous forum, si vous voulez voir ce que ca donne,  
 
http://www.decorations.be/gbb/?action=ShowMainForum
 
Bref je v retenir ta remarque omega ;)  
 
a+
 
EDIT: faite pas attention aux sections, c'est a titre de test :p c du nimporte nawak
a+
EDIT2: pt1 movais lien :)


Message édité par Schtroumpheur le 03-11-2002 à 21:42:21
n°239018
omega2
Posté le 03-11-2002 à 22:35:24  profilanswer
 

schtroumpheur a écrit a écrit :

 
 
Que veux tu dire??  
 
Tu veux dire quand l'un repond a l'autre? Puis un autre a un autre etc .. ???
 
C'est vrai que c'est interressant !  
 
Aller au boulot mrwisema:  :lol:  
 
P.S.: Moi aussi j'ai commencé la creation d'un script de forum, pas plutard qu'hier , je suis encore au stade de la generation des forum et sous forum, si vous voulez voir ce que ca donne,  
 
http://www.decorations.be/gbb/?action=ShowMainForum
 
Bref je v retenir ta remarque omega ;)  
 
a+
 
EDIT: faite pas attention aux sections, c'est a titre de test :p c du nimporte nawak
a+
EDIT2: pt1 movais lien :)



Je veux dire, t'as une discution. T'as un gas qui réponds à la première partie du message. Un autre répond à la seconde partie du message. (et boom, 2 directions de discutions)
t'en as un troisième qui a une vision diférente du pproblème, ca te fait une troisième direction de discution possible.
Si t'as que 7-8 messages en tout, ca va, mais quand t'en as 40-50 voire plus et que sur un fil de discution t'as une réponse qui arrive plus de 10 messages après le message auquel il répond alors ca devient parfois dificile de pas ce bourer dans le sens de la réponse. (bon, ok, les citation aivdent à la compréhension)

n°239039
KillerOnEa​rth
Posté le 04-11-2002 à 00:04:59  profilanswer
 

omega2 a écrit a écrit :

Je veux dire, t'as une discution. T'as un gas qui réponds à la première partie du message. Un autre répond à la seconde partie du message. (et boom, 2 directions de discutions)
t'en as un troisième qui a une vision diférente du pproblème, ca te fait une troisième direction de discution possible.
Si t'as que 7-8 messages en tout, ca va, mais quand t'en as 40-50 voire plus et que sur un fil de discution t'as une réponse qui arrive plus de 10 messages après le message auquel il répond alors ca devient parfois dificile de pas ce bourer dans le sens de la réponse. (bon, ok, les citation aivdent à la compréhension)




 
Je viens de finir un script PHP de forum
Si ça vous intéresse je pourrais l'envoyer
La partie la plus intéressante est justement l'arborescence

n°239042
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 04-11-2002 à 00:12:33  profilanswer
 

omega2 a écrit a écrit :

Je veux dire, t'as une discution. T'as un gas qui réponds à la première partie du message. Un autre répond à la seconde partie du message. (et boom, 2 directions de discutions)
t'en as un troisième qui a une vision diférente du pproblème, ca te fait une troisième direction de discution possible.
Si t'as que 7-8 messages en tout, ca va, mais quand t'en as 40-50 voire plus et que sur un fil de discution t'as une réponse qui arrive plus de 10 messages après le message auquel il répond alors ca devient parfois dificile de pas ce bourer dans le sens de la réponse. (bon, ok, les citation aivdent à la compréhension)




 
Oui ok, mais comment faire pour que le script sache a quoi ta repondu, et si il doit faire une autre branche dans l'arborescance??  
 
A.I. ?  :D  
 

n°239060
ethernal
Chercheur de vérité...
Posté le 04-11-2002 à 08:45:25  profilanswer
 

justement c'est quand tu as cliqué comme ci-dessus sur le bouton "répondre à" et qu tu fais une citation du message.
"truc à écrit : + message".
Au lieu d'avoir ça tu aurais une arbo.


---------------
...oups kernel error...
n°239206
omega2
Posté le 04-11-2002 à 14:21:37  profilanswer
 

ethernal a écrit a écrit :

justement c'est quand tu as cliqué comme ci-dessus sur le bouton "répondre à" et qu tu fais une citation du message.
"truc à écrit : + message".
Au lieu d'avoir ça tu aurais une arbo.



Tu peux même avoir les deux.
Une arbo de stocké + "truc à écrit : + message". au niveau du nouveau message.
C'est ce que j'ai fait pour mon forum (j'y ai une vue comme celle d'ici et une message/message + l'arborescence)

n°239241
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 04-11-2002 à 15:41:38  profilanswer
 

ethernal a écrit a écrit :

justement c'est quand tu as cliqué comme ci-dessus sur le bouton "répondre à" et qu tu fais une citation du message.
"truc à écrit : + message".
Au lieu d'avoir ça tu aurais une arbo.




 
Ha oui je vois,
 
ben c'est pas une mauvaise idee, entk j'essaierai de faire cela sur le forum que j'ai commencé :)
Ca va etre un algo de ouf mais bon on va essayer !
 
Ca sent la fonction recursive tout ca ! mummm  
 
A+

n°239244
ethernal
Chercheur de vérité...
Posté le 04-11-2002 à 15:55:07  profilanswer
 

schtroumpheur a écrit a écrit :

 
 
Ha oui je vois,
 
ben c'est pas une mauvaise idee, entk j'essaierai de faire cela sur le forum que j'ai commencé :)
Ca va etre un algo de ouf mais bon on va essayer !
 
Ca sent la fonction recursive tout ca ! mummm  
 
A+




:lol:
oui, mais faut surtout pas mettre de query dans la fonction récursive.
 
à la limite tu peux faire : extraction de la bd -> tableau -> fonction récursive(tableau,id)


---------------
...oups kernel error...
mood
Publicité
Posté le 04-11-2002 à 15:55:07  profilanswer
 

n°239271
art_dupond
je suis neuneu... oui oui !!
Posté le 04-11-2002 à 16:59:16  profilanswer
 

ethernal a écrit a écrit :

 
:lol:
oui, mais faut surtout pas mettre de query dans la fonction récursive.
 
à la limite tu peux faire : extraction de la bd -> tableau -> fonction récursive(tableau,id)




 
pourquoi il faut pas faire ca ?
 
y a d'autres méthodes que celle que t'as dite ?
 
merci


---------------
oui oui
n°239301
omega2
Posté le 04-11-2002 à 17:22:00  profilanswer
 

schtroumpheur a écrit a écrit :

 
 
Ha oui je vois,
 
ben c'est pas une mauvaise idee, entk j'essaierai de faire cela sur le forum que j'ai commencé :)
Ca va etre un algo de ouf mais bon on va essayer !
 
Ca sent la fonction recursive tout ca ! mummm  
 
A+



ben non, une colone pour l'ordre cronologique (ordre d'insertion)
une colone qui sert à conaitre l'ordre dans l'arborescence
une colone pour avoir le numéro du message auquel tu réponds
et une colone pour dire que c'est une réponse de tel niveau.
 
Voilà ce qu'il faut pour gérer les deux à la fois sans problème (bon, il y a même redondance des infos mais ca permet de faire un controle pendant que tu testes et ca permet d'éviter les systèmes récursifs. ;) )

n°239325
art_dupond
je suis neuneu... oui oui !!
Posté le 04-11-2002 à 17:34:56  profilanswer
 

pourquoi que c'est pas bien les trucs récursifs ?


---------------
oui oui
n°239335
omega2
Posté le 04-11-2002 à 17:39:29  profilanswer
 

art_dupond a écrit a écrit :

pourquoi que c'est pas bien les trucs récursifs ?
 



Ca ralonge les temps d'exécutions et en plus si t'as une boucle, tu te retrouves à dépasser le temps limite d'exécution et tu méttras un bon moment à découvrir ce qui décone.

n°239374
mrwiseman
SOS, windows ne plante pas...?
Posté le 04-11-2002 à 18:18:40  profilanswer
 

hum....pas mauvaise cette idée...perso je rajouterai juste un champ dans la tables des reponse pour indiqué a qui il repond dans le post...
 
pourrais meme mettre une fonction qui permet de couper un thread en deux, non ?

n°239386
omega2
Posté le 04-11-2002 à 18:46:58  profilanswer
 

mrwiseman a écrit a écrit :

hum....pas mauvaise cette idée...perso je rajouterai juste un champ dans la tables des reponse pour indiqué a qui il repond dans le post...
 
pourrais meme mettre une fonction qui permet de couper un thread en deux, non ?



Pas mal ces deux idées là. :)
En plus, c'est pas très compliqué à faire.
 
A première vue du moins. ;)


Message édité par omega2 le 04-11-2002 à 18:47:42
n°239551
mrwiseman
SOS, windows ne plante pas...?
Posté le 04-11-2002 à 21:46:08  profilanswer
 

en fait je fais un site qui sera architecturer autour d'un forum (concept inside), j'aimerai que chaque forumeur puisse promosai au Webmaster (genre moi) un post qu'il a apprecier en news ou en dossier (dans le cas d'un long post).non ?
 :bounce:

n°239578
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 04-11-2002 à 22:08:16  profilanswer
 

omega2 a écrit a écrit :

ben non, une colone pour l'ordre cronologique (ordre d'insertion)
une colone qui sert à conaitre l'ordre dans l'arborescence
une colone pour avoir le numéro du message auquel tu réponds
et une colone pour dire que c'est une réponse de tel niveau.
 
Voilà ce qu'il faut pour gérer les deux à la fois sans problème (bon, il y a même redondance des infos mais ca permet de faire un controle pendant que tu testes et ca permet d'éviter les systèmes récursifs. ;) )




 
J'ai toujours cru que les truc recursif, c'etait la meilleure solution dans le cas d'une arborescance dont on ne connais pas le nombre de branches ! M'enfin ton idee est pas mauvaise non plus :)
 
au fait, comment vous voyer l'affichage de cette arborescence???
Comme des post normeaux? dans un tableau html ? Ou l'arborescance dessinnées un peu comme dans l'explorer de windows ... ?
 
Quel systeme serait le plus pratique, et rapide pour l'utilisateur a votre avis?  
 
C'est a reflechir aussi !  
 
a+

n°239580
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 04-11-2002 à 22:09:13  profilanswer
 

mrwiseman a écrit a écrit :

en fait je fais un site qui sera architecturer autour d'un forum (concept inside), j'aimerai que chaque forumeur puisse promosai au Webmaster (genre moi) un post qu'il a apprecier en news ou en dossier (dans le cas d'un long post).non ?
 :bounce:  




Ton projet m'interresse, hesite pas a montrer ce que tu fais !
:)

n°239632
KillerOnEa​rth
Posté le 05-11-2002 à 00:16:12  profilanswer
 


omega2 a écrit a écrit :

ben non, une colone pour l'ordre cronologique (ordre d'insertion)
une colone qui sert à conaitre l'ordre dans l'arborescence
une colone pour avoir le numéro du message auquel tu réponds
et une colone pour dire que c'est une réponse de tel niveau.
 
Voilà ce qu'il faut pour gérer les deux à la fois sans problème (bon, il y a même redondance des infos mais ca permet de faire un controle pendant que tu testes et ca permet d'éviter les systèmes récursifs. ;) )




 
l'algorithme d'arborescence que j'utilise est basé sur la récursivité et en fait je code la réponse 1 au message 1 par exemple par 1r1 , la 2eme réponse à cette dernière par 1r1r2 etc...
Est-ce ce que la comlexité est acceptable ?
Et étant donné que j'emploie directement le query dans le while,
pourquoi C pas bon?
 

n°239633
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 05-11-2002 à 00:21:32  profilanswer
 

KillerOnEarth a écrit a écrit :

 
 
 
l'algorithme d'arborescence que j'utilise est basé sur la récursivité et en fait je code la réponse 1 au message 1 par exemple par 1r1 , la 2eme réponse à cette dernière par 1r1r2 etc...
Est-ce ce que la comlexité est acceptable ?
Et étant donné que j'emploie directement le query dans le while,
pourquoi C pas bon?
 
 




 
Ben a mon avis c'est plus lent car tu vois la quantité de requete multipliée par le nomnbre de post, imagine un sujet qui a mille post.  
 
mille requetes ?  :heink:  
 
Je pense que une requete qui selectionne tout les post concerné et les met dans un Array est preferable niveau performance, et tu traites le tableau comme il se doit par recursivité :)
 
Cela dis tu peux nous montrer ce que tu as fait deja?
 
a+
 
 

n°239714
omega2
Posté le 05-11-2002 à 11:06:42  profilanswer
 

KillerOnEarth a écrit a écrit :

 
 
 
l'algorithme d'arborescence que j'utilise est basé sur la récursivité et en fait je code la réponse 1 au message 1 par exemple par 1r1 , la 2eme réponse à cette dernière par 1r1r2 etc...
Est-ce ce que la comlexité est acceptable ?
Et étant donné que j'emploie directement le query dans le while,
pourquoi C pas bon?
 
 



Ben là, de  manière théorique ca pourait être bon mais je vois pas du tout a quel niveau t'as un système récursif dans ta base de donnée ou dans ton traitement.
par contre pour trier les réponses ça doit être compliqué par ce que tant que t'en as que 9 ca va (r1 à r9) mais si tu dépasse tu te retrouve avec un r10 et là si tu fais un tri par ordre alphabétique tu te retrouves avec les réponses 10 et 11 entre la réponse 1 et la réponse 2 et pour faire un tri numérique, t'es obligé de le faire par programme ce qui va te bouffer de la mémoire (obligé de stocké à la fois ce qui est retourné par la requête et le tableau contenant l'ensemble des réponses trié comme il faut) et tu perds du temps machine (obligé de faire de nombreuses opérations (découpage de l'identification de réponse, recherche de la position d'insertion, décalage des réponses situé après la position d'insertion , ...) afin d'obtenir le bon tri.
Bref, ca me semble pas être la solution idéale.

n°239715
omega2
Posté le 05-11-2002 à 11:10:26  profilanswer
 

schtroumpheur a écrit a écrit :

 
 
J'ai toujours cru que les truc recursif, c'etait la meilleure solution dans le cas d'une arborescance dont on ne connais pas le nombre de branches ! M'enfin ton idee est pas mauvaise non plus :)
 
au fait, comment vous voyer l'affichage de cette arborescence???
Comme des post normeaux? dans un tableau html ? Ou l'arborescance dessinnées un peu comme dans l'explorer de windows ... ?
 
Quel systeme serait le plus pratique, et rapide pour l'utilisateur a votre avis?  
 
C'est a reflechir aussi !  
 
a+



Je t'aurais bien montré ce que ca donne sur mon site, mais j'ai vidé tout les messages d etests pour le passer en utilisation normale et du coup, l'arborescence la plus compliqué n'a pour le moment aucune réponse.
Par contre chez mi, je doit encore avoir une copie de la base avec tout les tests et donc quand j'aurais le temps je sauvegarderais une copie du résultat écran que je métrais en ligne pour te montrer ce que ca donne sur mon site. ;)
Mais là, je peux pas le faire desuite.
 
 
PS : Tu peux déjà aller voir comment le site www.ubix.org à traité le problème de l'affichage de l'arborescence.
Il y a deux systèmes : 1 qui affiche les messages un par un dans la colone centrale et l'arborescence dans la colone de droite
1 système qui affiche tout les messages de la discution avec  un décalage en fonction du niveau de réponse.


Message édité par omega2 le 05-11-2002 à 11:15:21
n°239724
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 05-11-2002 à 11:27:45  profilanswer
 

omega2 a écrit a écrit :

Je t'aurais bien montré ce que ca donne sur mon site, mais j'ai vidé tout les messages d etests pour le passer en utilisation normale et du coup, l'arborescence la plus compliqué n'a pour le moment aucune réponse.
Par contre chez mi, je doit encore avoir une copie de la base avec tout les tests et donc quand j'aurais le temps je sauvegarderais une copie du résultat écran que je métrais en ligne pour te montrer ce que ca donne sur mon site. ;)
Mais là, je peux pas le faire desuite.
 
 
PS : Tu peux déjà aller voir comment le site www.ubix.org à traité le problème de l'affichage de l'arborescence.
Il y a deux systèmes : 1 qui affiche les messages un par un dans la colone centrale et l'arborescence dans la colone de droite
1 système qui affiche tout les messages de la discution avec  un décalage en fonction du niveau de réponse.




 
D'apres ce que j'ai vu l'idee de l'arborescance a droite c'est super bien pensé ! Par contre je trouve que l'affichage des post est a optimisé au milieu , je sais pas ce que t'en pense !
a+

n°239770
omega2
Posté le 05-11-2002 à 12:46:37  profilanswer
 

schtroumpheur a écrit a écrit :

 
 
D'apres ce que j'ai vu l'idee de l'arborescance a droite c'est super bien pensé ! Par contre je trouve que l'affichage des post est a optimisé au milieu , je sais pas ce que t'en pense !
a+



Si tu parle de l'affichage des posts quand tu demandes toute la discution d'un coup alors oui, c'est pas encore parfais (surtout dans les plus grandes discutions) mais faut dire, c'est pas facile à régler de manière parfaites quelles que soient les discutions.
Si c'est quand tu demande qu'une réponse à la fois, moi, je le trouve bien comme ça. Faut dire a force de le visiter, j'y suis habitué.

n°239781
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 05-11-2002 à 13:17:21  profilanswer
 

Ouais c'est ca qui me gene un peu, fo chaque fois clicker pour voir la suivante ! Mais a mon avis c une question de gout, je sais pas, le mieux serait de permettre a l'utilisateur de paramettrer tout ca ;)  
 
a+

n°239791
omega2
Posté le 05-11-2002 à 13:40:04  profilanswer
 

schtroumpheur a écrit a écrit :

Ouais c'est ca qui me gene un peu, fo chaque fois clicker pour voir la suivante ! Mais a mon avis c une question de gout, je sais pas, le mieux serait de permettre a l'utilisateur de paramettrer tout ca ;)  
 
a+



Ben tu peux toujours utiliser la vue d'ensemble de la discution (le liens ce trouve dans la colone d edroite, je me rapelel plus le libéllé du lien)

n°240093
KillerOnEa​rth
Posté le 05-11-2002 à 21:09:46  profilanswer
 

omega2 a écrit a écrit :

Ben là, de  manière théorique ca pourait être bon mais je vois pas du tout a quel niveau t'as un système récursif dans ta base de donnée ou dans ton traitement.
...




 
Merci pour les réponses.
Voilà, je mets le code correspondant à mon script
(Tout au long du script je suppose que j'ai un nombre de réponse maximal égal à 9 (juste un début de script quoi ;)
 
 
<?php require("connect3.php" );
 mysql_pconnect(SERVER, NOM, PASSE);
 mysql_select_db("forum" );
   
 
 $y=NULL;
 
 function affiche($X,$i) {
 
          global $y;
   $y=$y.$X.$i;
 
   while ($obj=mysql_fetch_object(mysql_query("select                                             id,titre,date,sender from base where id='$y'" ))) {
     
     for ($j=1;$j<=(strlen($y)/2);$j++) {
       echo "    ";
     }
     
     echo "  <a href=\"reply.php?num=$y&suj=$obj->titre\" style=\"text-decoration: ".
 "none\"> * $obj->titre </a> <i><font size=-1>  ".
 "$obj->sender   $obj->date </font></i><br>";
 
     affiche('r',1);
     $y = substr($y , 0, -3);
 
     $i++;
     $y=$y.$i;
   }
   
       }
 
       $y=NULL;
       affiche (NULL,1);
 
?>
 
 
 
Voilà, je suis vraiment nul sur la mise en forme de code et en plus là j'ai un peu honte de pas mettre de commentaires.
 
encore merci !

n°240094
KillerOnEa​rth
Posté le 05-11-2002 à 21:10:32  profilanswer
 

zut alors elle est vraiment nulle la mise en page !

n°240111
omega2
Posté le 05-11-2002 à 21:43:23  profilanswer
 

T'as raison, là, c'est vraiment qu'un tout début de script vu qu'au mieux t'affiches qu'une branche de la discution ( affiche('r',1), le 1 est en dur.
A côté de ça, tu pars dans une boucle infinis (    while ($obj=mysql_fetch_object(mysql_query("select                                             id,titre,date,sender from base where id='$y'" ))) ) Comme la requête est exécuté à chaque passage du while, tu te retrouve à avoir toujours $obj=mysql_fetch_object égal à vrai.
Enfin dernière erreur : le $j en global.
Sic, voilà donc le meilleur moyen pour qu'en tout une seule branche de la discution avant de tomber sur des réponses inéxistantes.
 
Pour le dernier point, voilà un exemple :
1
1r1
1r1r1
1r2
1r3
1r3r1
1r4
 
Tu vas avoir les valeur suivantes dans ton $j : (les valeurs de $j mises entre parenthèses corespondent à ceux que t'aurais une fois les deux premiers problèmes réglé)
 
1      ( 1 )
1r1    ( 1r1 )
1r1r1  ( 1r1r1 )
1r2    ( 1r1r1r2 ) (à partir de là les réponses existent plus)
1r3    ( 1r1r1r2r3 )
1r3r1  ( 1r1r1r2r3r1 )
1r4    ( 1r1r1r2r3r1r4 )
 
 
Le mieux, c'est de déclaré ta fonction comme étant de type  function affiche($j,$X,$i) et sans mettre la variable $j en global. Ca t'oblige à passer la variable $j en paramêtre mais au moins ca buguera pas.
 
bon, comme tu le disait, c'est jsute un début de programme et c'est donc normal qu'il y ai des bugs. ;)

n°240296
mrwiseman
SOS, windows ne plante pas...?
Posté le 06-11-2002 à 00:07:55  profilanswer
 

wahhh.....j'en suis venu a la meme conclusion .
mais je verai ca comme ca :
 
[table0][table1][table2]....
(post1) (rep1-1)
        (rep1-2)
(postn) (repn-1)
        (repn-2)(repn-2-1)
                (repn-2-2)
        (repn-3)
 
voila avec des facteur limitant pour le nombre de rep (5-10 ?)
et pas plus de 6 niveau de rep...suivant organisation du forum
 
dans ce cas il remonte d'un cran dans la hierarchie
et pourquoi s'emmerder avec une clé de type var...
je m'explique on cree une table de niveau n....et elle compotera n champ de type int pour y stocher une partie de son adresse 'hierarchique'...
bien maintenant chaque categorie du forum est en faite un post mais sans limitation de reponse .
les news et les dossiers sont aussi des categorie de news...les commentaire sont des reponses....et ses reponses peuvent etre muté en forum en cas de conversation interessante....
tout ca de la meme facon qu'un ensemble de reponse monte d'un cran hierarchique pour devenir un thread a part...
 
[table index]
niveau0 bigint autoincrement primary key
thread txt
post txt
iduser int
date datetime unique key
 
[table 1]
niveau0 index//adresse post originie
niveau1 index
thread txt
post txt
iduser int
date datetime unique key
 
 
etc....vous voyer ?
et puis je pensais mettre un mode reumé qui premet de cacher les reponses de niveau inferieur (conversation a part dans un post)...et voir meme masqué les post et ne laisser que les titres des reponses.
 
qu'en pensez-vous ?
 
 
des que j'ai un truc fontionnel je vous le montre..
 

n°240299
KillerOnEa​rth
Posté le 06-11-2002 à 00:21:52  profilanswer
 

mrwiseman a écrit a écrit :

wahhh.....j'en suis venu a la meme conclusion .
mais je verai ca comme ca :
 
[table0][table1][table2]....
(post1) (rep1-1)
        (rep1-2)
(postn) (repn-1)
        (repn-2)(repn-2-1)
                (repn-2-2)
        (repn-3)
 
voila avec des ....
 
 




 
En fait comme j'utilise $substr( $y, 0, -3) il n'ya aucun problème : dès que la suite de fonctions 'affiche' qui se sont appelées aboutit à un cul-de-sac fait qu'on revient là où il faut et le $i++ se charge de passer à la valeur suivante.D'où aussi l'interêt d'avoir $y en global
Désolé en fait j'ai pas mis cette ligne là bien en évidence.
a+et merci pour les replys
mon problème reste toukours comment éviter toutes ces queries en gardant ma méthode si possible

n°240300
KillerOnEa​rth
Posté le 06-11-2002 à 00:28:38  profilanswer
 

Et puis j'apprécie l'idée du tableau en cas de débordement
il va donc juste falloir mettre juste après une réponse 9 un lien "more" vers la suite de la sous arborescence.
Je pense aussi que je pourrais modifier le code pour avoir un test sur l'ordre de grandeur de $i et donc ne plus tronquer 3 chars de $y mais plutôt un nombre adapté à $i (C  déjà beaucoup plus compliqué  :??:  
bref ya des trucs à faire la dessus
a+

n°240317
omega2
Posté le 06-11-2002 à 01:35:30  profilanswer
 

Copie du message laissé en MP à KillerOnEarth. je le copie là pour avoir les éfléxions des autres au cas où. ;)
 
Ben si t'as une séries de réponses avec pour codes :
1
1r1
1r1r1
1r1r1r1
1r1r1r1r1
1r1r2
 
tu vas charger ta variable $j :
1
1r1
1r1r1
1r1r1r1
1r1r1r1r1
 
puis commencer à la décharger en enlevant 3 caractères à la fois :
1r1r1r1 => 1r1r (premier retour)
1r1r => 1 (second retour)
 
puis tu pars dans l'autre branche
1r2
 
Bref, ca a pas l'air de marcher comme il faut car a chaque fois tu élimine un caractèrende trop (sauf erreur de ma part)
J'ai pas fait de test pour vérifier mes dires. ;)  
 
Tu dis que ca amrche et ca me parait bizare a moins qu'il y ai un caractère terminal dont je n'ai pas conaissance ou que la fonction n'enlève que n caractère moins 1. (il me semble avoir déjà vu ça dans les créations de certains quand on fesait nos études à l'IUT.)
 
Bon, pour éviter les query, il faudrait modifier le test afin de charger toutes les réponses d'une disccution en une fois puis charger des enregistrement de manière récursif pour obtenir un ensemble équivalent à celui des requêtes.
 
Par exemple pour l'exemple au dessus il serait possible de faire le chargement comme suit.
$tab["mes"][1] <= 1
$tab["rep"][1]["mes][1] <= 1r1
$tab["rep"][1]["rep"][1]["mes][1] <= 1r1r1
$tab["rep"][1]["rep"][1]["rep"][1]["mes][1] <= 1r1r1r1
$tab["rep"][1]["rep"][1]["mes][2] <= 1r1r2
 
Ensuite, faut parcourir le tableau (c'est faisable de manière récursive) pour relire els infos qui du coup sont directement trié par le numéro même si t'as plus de 9 réponses à un message donnée (seule complication, la séparation de l'indentifiant du message qui du coup n'est pas faisable à l'aide d'un nombre de caractère fixe).
 
Je suis pas sur d'être hyper clair mais là je suis fatigué alors je vais me coucher.
 
Si tu as besoin de plus de détail demandes. ;)

n°240319
ethernal
Chercheur de vérité...
Posté le 06-11-2002 à 02:36:12  profilanswer
 

je suis le sujet de loin depuis le début (et à mon avis je suis à la masse pcq j'ai toujours rien compris à votre manière de le résoudre...)
 
ça me semble assez simple en restant dans le classique (mais ça l'est peut-être pas -> voir remarque ci-dessus :D)
 

Code :
  1. //dans la table, le parent=0 si il est au top-level, sinon parent=id du pere
  2. //id parent message
  3. //1    0     msg1
  4. //2    1     rep1
  5. //3    1     rep2
  6. //...
  7. $query= "select id, parent, message from message order by id"
  8. //execquery etc...
  9. while ( $row= mysql_fetch_array() ){
  10.   $list_messages[$parent][$id]= $row;
  11. }
  12. function Affich_Msg( &$list_messages, $idpere){
  13.  
  14.   while(list($id, $msg)= each($list_messages[$idpere]){
  15.     echo $msg['message'];
  16.     Affich_Msg($list_messages, $id);
  17.   }
  18. }
  19. //appel de la fonction
  20. Affich_Msg($list_messages, 0);


je sais pas si mon algo est bon, mais ça doit être qqch du style.


Message édité par ethernal le 06-11-2002 à 02:38:28

---------------
...oups kernel error...
n°240370
KillerOnEa​rth
Posté le 06-11-2002 à 10:06:20  profilanswer
 

omega2 a écrit a écrit :

Copie du message laissé en MP à KillerOnEarth. je le copie là pour avoir les éfléxions des autres au cas où. ;)
 
Ben si t'as une séries de réponses avec pour codes :
1
1r1
1r1r1
1r1r1r1
1r1r1r1r1
1r1r2
 
...




 
justification du 3 :
on suppose qu'on est allé jusqu'à 1r1r1r1r1  
il y a un nouvel appel de la fonction affiche  
cette fonction ne trouve plus de message en réponse
alors on commence à quitter la suite de fonctions affiche imbriquées : on enlève 1r1 puis r1r et on incrémente $i (j'ai squté qqe étapes) et on affecte ---> $y=$y.$i <---
et on se retrouve avec 1r2  
la fonction 'affiche' correspondante teste maintenant avec 1r2 ce qui permet la continuation du prog.
ça marche assez bien
 
 

n°240394
omega2
Posté le 06-11-2002 à 10:41:06  profilanswer
 

KillerOnEarth a écrit a écrit :

 
 
justification du 3 :
on suppose qu'on est allé jusqu'à 1r1r1r1r1  
il y a un nouvel appel de la fonction affiche  
cette fonction ne trouve plus de message en réponse
alors on commence à quitter la suite de fonctions affiche imbriquées : on enlève 1r1 puis r1r et on incrémente $i (j'ai squté qqe étapes) et on affecte ---> $y=$y.$i <---
et on se retrouve avec 1r2  
la fonction 'affiche' correspondante teste maintenant avec 1r2 ce qui permet la continuation du prog.
ça marche assez bien
 
 



Ca y est j'ai compris pourquoi ca marche.
En fait, t'enlèves 1r1 puis tu rajoutes 2.
Comme le message existe pas, tu descent d'un cran et du coup, t'enlève 1r2 et tu rajoutes 2 (la seconde réponse du niveau en dessous).
Ok, maintenant, je comprends.
C'est ça le problème avec les fonctions récursive quand on les a pas créé nous mêmes, on peut ne pas avoir vu une instruction hyper importante.
Je comprends mieux l'utilité du "affiche (NULL,1); ", par contre, je comprends pas l'utilité du "$j= NULL;" qui le précède.
Il y aurait pas un risque de perdre des sous branches là?

n°240415
ethernal
Chercheur de vérité...
Posté le 06-11-2002 à 11:37:03  profilanswer
 

si vous voulez travailler sans fonction récursive, voici la "Gestion d'arbres par représentation intervallaire"
très rapide en consultation, mais lourd en update.
 
http://sqlpro.developpez.com/Tree/SQL_tree.html


---------------
...oups kernel error...
n°240422
KillerOnEa​rth
Posté le 06-11-2002 à 11:42:55  profilanswer
 

omega2 a écrit a écrit :

Ca y est j'ai compris pourquoi ca marche.
Je comprends mieux l'utilité du "affiche (NULL,1); ", par contre, je comprends pas l'utilité du "$j= NULL;" qui le précède.
Il y aurait pas un risque de perdre des sous branches là?




 
Je ne crois pas.Mais j'ai simplement mis ceci pour bien initialiser la variable à NULL avant de commencer.
est-ce que NULL est la valeur par defaut affectée à $y ?

n°240432
omega2
Posté le 06-11-2002 à 12:06:24  profilanswer
 

KillerOnEarth a écrit a écrit :

 
 
Je ne crois pas.Mais j'ai simplement mis ceci pour bien initialiser la variable à NULL avant de commencer.
est-ce que NULL est la valeur par defaut affectée à $y ?
 



JE sais pas, il y a les variables non affecté et els vairables affecté.
Je suis pas certain qu'il y ai une valeur par défaut mais tu peux toujorus forcé à "" pour être sur. ;)

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  structure d'une base de donnés sql pour un forum et fonctions innovant

 

Sujets relatifs
connection a une base MySQL avec vb .NET !![C] Help !! pb avec fonctions
VB et recherche base de donnée est-ce possible?[PHP] Probleme avec les fonctions
session et cookie pour un forum[access] inserer une image dans une base
transfert de data d'un fichier csv dans une base de données mysqlQuestion de nioubi sur le forum PPC : affichage du code des smileys
[newby] oracle/sql : connaitre les table d'une base[ASP] petite question accès base acces?
Plus de sujets relatifs à : structure d'une base de donnés sql pour un forum et fonctions innovant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR