FORUM STYLE PHPBB ET AGENDA PERSONNALISÉ

scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006 - 12 mai 2004 à 14:51
Panda8821 Messages postés 2 Date d'inscription dimanche 3 juin 2012 Statut Membre Dernière intervention 9 juillet 2012 - 4 juin 2012 à 16:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22740-forum-style-phpbb-et-agenda-personnalise

Panda8821 Messages postés 2 Date d'inscription dimanche 3 juin 2012 Statut Membre Dernière intervention 9 juillet 2012
4 juin 2012 à 16:52
Bonjour... je suis interresser par ce "Forum"
j'ai crée les table MyphpAdmin
j'ai ajouté mes Code Host ect... sur CONNEC.php
Mon probleme :
un fois que j'applique l'addresse Install
il m'affiche les donnée a rentrée...
mais il m'affiche un messages d'erreur suivant...
---------------------------------------------------------------------------
Warning: mysql_connect() [function.mysql-connect]: [2002] Connection timed out (trying to connect via tcp://( mon code Host ):3306) in /htdocs/forum/install.php on line 17
ainsi
Warning: mysql_connect() [function.mysql-connect]: Connection timed out in /htdocs/forum/install.php on line 17
---------------------------------------------------------------------------
il m'indique que ma base est "introuvable"
que doit je faire Merci pour votre "Aide"..
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
9 nov. 2005 à 15:57
Il est pas très long XP
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
9 nov. 2005 à 15:38
comme je le précise plus haut ce code a été fait alors que je ne pratiquais php que depuis 2 mois environ, et c'était il y 1 an 1/2 maintenant.
la mise a jour a de meme été faite il y a plusieurs mois, et je n'avais pas particulièrement envie de me retapper tout le code, même si je suis conscient qu'il y a énormément à améliorer.
perso je ne mettrai probablement plus la source à jour, ça prendrait trop de temps pour finalement pas grand chose puisqu'aujourd'hui si je devais m'y remettre je recommencerais tout simplement un nouveau forum.
merci de t'être attardé sur le code et les erreurs, et de les avoir en partie énumérées. ça aidera certainement les débutants qui passeront par là et auront je l'espère le courage de lire ton commentaire jusqu'au bout.
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
9 nov. 2005 à 04:27
Bon... Je me suis "amusé" à lire ta source. Et j'avoue avoir eu quelques surprises...
Je vais te dire ce que j'en pense :

En général, je commence par lire une source par sa base de données que j'ai aisément trouvée (forum_BDD.txt). Puis, je commence les choses dans l'ordre logique, c'est-à-dire, en théorie, index.php.
Et là, malheure de malheure! Pas de index.php... C'est déplorable, mais passons.
Je me rabat alors sur le beau install.php.
J'ai alors parcouru tout ton script en comprenant assez vite ma foie, que le gros ACCUEIL.php était ce qui, à mon sens, aurait dû s'appeler index.php.

J'ai alors relevé plusieurs mauvais points.

Tout d'abord, commençons soft par le HTML. Le tiens est particulièrement moche :
- Tu ne mets pas de Doctype
- Tu mets des balises en majuscule (chose inutile et même déconseillée pour des raison de compression de données et parce que ce n'est après tout pas très beau)
- Tu utilises des balises (,...) et des attributs (bgcolor, align,...) obsolètes. Maintenant on a les CSS ;)
- Tu ne ferme pas tes balises
, <hr />, et
- dans admin_fac.php tu vas même jusqu'à mettre des attributs entre ' et non entre "

Ensuite, ton système de fichiers :
- je te déconseille personnellement de t'amuser a mettre certains fichiers ou dossiers en majuscules et d'autre en minuscules. Je pense qu'il est plus aisé de ne travailler qu'avec des fichiers écrits en minuscules. Ça évite les erreurs.
- voir un Thumbs.db dans un dossier (IMAGES) je trouve ça pas terrible.
- les images bmp sont d'un format non compressé. Ça serait bien sur internet de diminuer ne serait-ce qu'un peu le poid d'une page.

Maintenant entrons dans le vif du sujet avec le PHP :
- Globalement je te reprocherais de méler traitement php et affichage html. Ça rend le code particulièrement difficile à lire et à entretenir. Je préconise d'utiliser des variables et de tout afficher avec un seul echo.
- Tu utilises des stripslashes et addslashes sans d'abord vérifier si le paramètre de configuration magic_quotes_gpc est à 1 (ce qui voudrait dire que les variables renvoyé par des formulaire sont échappées)
- Tu ouvres tes tags php avec <? au lieu de <?php qui est préférable.
- Tu utilises à plusieurs reprise une boucle while pour afficher les résultats d'une requête qui n'en retournera jamais plus d'un. (accueil.php ligne 97, forum.php ligne 37, post.php ligne 28, profilem.php ligne 13, titre.php ligne 69)
- Tu utilises souvent dans ton admin un javascript de redirection. Mais si l'utilisateur désactive son javascript, il aura accès à toutes les fonctionnalités de l'admin!!! Il est donc préférable d'utiliser header('Location: url ');
- Tu es souvent inconstant sur la récupération des données envoyées par méthode POST ou GET. En effet, tu ne vérifie pas toujours si elles sont définis (isset()).
- Tu as mis un saut de ligne avant les tags d'ouverture dans le fichier connec.php et temp.php
- Tu ne limite pas le nombre total de caractères des champs de tes formulaires, alors que tu le fait dans la base de données... Il faudrait empêcher les dépassements.
- Ton code n'est pas beaucoup commenté.

Regardons certains fichiers plus en détail :
install.php
- Il serait bon d'utiliser les insertions mutiples au lieu de faire plein de requête d'insertions.
- les mots de passe des membres ne sont pas cryptés!!!! C'est très mauvais, ça veut dire que tu peux connaître le mot de passe de tout tes membres. C'est limite de l'atteinte à la vie privée pour moi (bon ok je pousse un peu, mais tu vois l'esprit)
- je verrais plutôt un DATETIME au lieu d'un DATE pour les post (l'horaire du post peut être utile = ) )

accueil.php
- tu mets des if($mid 0) et if($mid 1) un peu de partout. Il serait mieux de tous les regrouper selon moi.

calend.php
- à quoi sert de vérifier la valeur de $jeu, puisque tu lui donne 1 quelques lignes plus tôt?

calendrier.php
- ligne 94 à 99 : il suffit d'utiliser date("t"); pour avoir le nombre de jours du mois.
- je trouve que tu te prend beaucoup la tête pour pas grand chose. Personnellement j'aurais fait :
<?php
include('connec.php');
# Récupération du numéro du premier jour du mois
$first_day = date("N", mktime(0,0,0,$nmois,1,$an));
# Récupération du nombre total de jour dans le mois
$nb_day = date("t");

# Création de la matrice du calendrier
# Un calendrier peut avoir au maxium 42 cases
# (Si le premier jour commence à la dernière case de la première ligne et que le mois à plus de 30 jours,
# ça fait un total de 6 lignes. Donc 6×7... )
for($i=1; $i<=42 $i++)
{
$day_of_month = $i+1-$first_day;
$matrix = ($day_of_month < 1 || $day_of_month > $nb_day) ? $day_of_month : " ";
}

# Récupération de la liste des événements et création d'un tableau (Array) de la forme :
# $event['2005-11-07'] = '
Anniversaire de Paulette
Je me suis gratté la têteC\'est la fête' ;
$query = 'SELECT ev1, ev2, ev3, date FROM calendrier WHERE num_membre=".$mid." ORDER BY date ";
$result = mysql_query($query);
while($data = mysql_fetch_array($result))
{
$event[$data['date']] = ($data['ev1'] !== '') ? '
'.$data['ev1'] : '' ;
$event[$data['date']].= ($data['ev2'] !== '') ? '
'.$data['ev1'] : '' ;
$event[$data['date']].= ($data['ev3'] !== '') ? '
'.$data['ev1'] : '' ;
}

# Création du calendrier
$calendrier = ' Lundi |Mardi |Mercredi |Jeudi |Vendredi |Samedi |Dimanche |';
while(list($key,$val) = each($matrix) )
{
# Début d'une nouvelle ligne si $key = 1,8,15,22 ou 29$calendrier.($key%7 1) ? '----
' : '' ;
# Affichage du numéro du jour, et de(s) événement(s)
$calendrier.= ''.$val.$event[$an.'-'.$mois.'-'.$val].', ';
# Fin d'une ligne si $key = 7, 14, 21 ou 28$calendrier.($key%7 0) ? '' : '' ;
}
$calendrier = '
';

# Affichage du Calendrier
echo($calendrier);
?>

exec.php
- ou est l'intérêt
- tu ne l'a même pas protégé contre les non-admins

modif.php
- tu peux faire toutes tes updates en une seule requête.

posted.php
- ligne 31 et 32 : pour enregistrer la date du jour dans un base de données MySQL, il y a la fonciton NOW() ce qui donne :
$query2="insert into post (Msg, Nb_membre, Nb_titre, Date) VALUES ('".$msg."','".$mid."','".$titre."',NOW());";

Enfin, parlons un peu de la structure de ta base de données
Tout d'abord ton système d'agenda :
Je pense qu'il aurait été plus judicieux de faire une table de ce type :
table calendrier :
- num (PRIMARY KEY)
- num_membre
- evenement
- date
De cette sorte, un membre peut avoir autant d'événements par jours qu'il le souhaite. Et ça évite d'avoir des champs qui ne servent à rien lorsque les membres n'ont pas trois évenements pile à enregistrer.

Sinon je t'avoue être légèrement perplexe sur ta table titre. Mais vu l'heure qu'il est, mes neuronnes n'ont plus le courage d'analyser les requêtes dans lesquelles elle intervient. Mais je pense qu'elle est justifiable :)

En espérant n'avoir pas dit trop de bêtises à cette heure tardive =_=
Bonne nuit!
cs_jadot Messages postés 21 Date d'inscription mardi 31 août 2004 Statut Membre Dernière intervention 10 septembre 2007
16 août 2005 à 14:12
Salut,

Tres bonne source.
Je commence a apprendre le php et cette source me sera certainement utile.
Seul petite remarque, quand on ecrit un texte le passage a la ligne ne se fait que si on entre des
.
N'y a t il pas moyen de faire comme sur ce site ? c-a-dire que les utilisateurs du forum ne savent pas necessairement qu'il faut ajouter le caractere de passage a la ligne.
J'explore les codes qui utilisent MySql mais je n'en ai encore trouvé aucun qui le faisait.
Peut-etre que ce n'est pas possible ?
Sinon ca fonctionne super bien chez moi.

Bravo.
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
2 mai 2005 à 18:32
salut stephgphy,

merci ça fait plaisir si ça plaît :D
en ce qui concerne le calendrier, à la base il doit s'afficher dès la connexion d'un membre, et s'ouvrir en popup. mais c'est un peu lourd et j'ai apporté quelques modifications à mon code de sorte à ouvrir le calendrier via un lien, ce qui est plus comode.
j'uploaderai le code mis à jour avant la fin de la semaine, dès que j'en aurai le temps ;=)
stephgphy Messages postés 3 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 2 mai 2005
2 mai 2005 à 16:48
hello,

félicitations pour ce code. le forum fonctionne très bien mais je ne vois nulle part de calendrier. Ou est-il censé apparaitre?
J'ai essayé la solution de astrolab sans plus de succès.
Avez-vous une idée?
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
1 nov. 2004 à 20:48
ouep merci :)

d'ailleurs je vais d'ici peu mettre la source à jour, j'ai pas eu bcp de temps mais je vais vite attaquer ça
linkin4247 Messages postés 50 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 28 mars 2005
1 nov. 2004 à 15:39
Salut, en fait il y a une petite faille pour les profil, si on mets "profile.php?id=3" ben on peut modifier le profil de la personne ayant l'id 3, donc fait une petite correction a ce niveau la :)
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
1 juin 2004 à 09:39
Merci astrolab ;)

bizarre que le calendrier ne marchait pas chez toi... :S
enfin si t'as pu le faire fonctionner c cool :)

merci pour la note ça fait plaisir
cs_astrolab Messages postés 7 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 30 mai 2004 1
30 mai 2004 à 16:02
Chez moi le calendrier ne marchait pas, j'ai trouvé la solution à la ligne 137 de calendrier.php. Voilà ce que j'ai changé :

........ for ($i=1; $i<=$nbjours; $i++) {


if($i<=9){

$dess="{$an}-{$nmois}-0{$i}";

$result mysql_query("select ev1, ev2, ev3 from calendrier where date'$dess' and num_membre='leloginquevousvoulez");

}else{

$result mysql_query("select ev1, ev2, ev3 from calendrier where date'$dess' and num_membre='$leloginquevousvoulez'");
}

while ($row = mysql_fetch_array($result,MYSQL_NUM)) {...........

Il faut faire pareil pour le mois d'après.
Le problème était que pour $i de 1 à 9 , il n'y a pas de zéro devant.


Merci pour cette source merveilleuse.
je met 8 pour la qualité.

astro
http://roquebergue.free.fr
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
25 mai 2004 à 10:41
Merci ;)

Skwal-> effectivement je n'ai pas fait de test sur la page admin mais je vais rapidement corriger ça

expresso630-> j'ai vu que certains fichier avaient été renommés en majuscule et je ne sais pas pourquoi... j'ai utilisé scriptedit pour coder ça mais étant donné que je l'ai fait sur plusieurs ordi dont les configs sont totalement différentes (c'est un projet pour mon bts info gestion), les noms de certains fichiers ont été changés...

Je devrai prochainement faire des mises à jour pour ajouter des modérateurs, des thèmes et si je suis vraiment motivé du BBCode :S
expresso630 Messages postés 2 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 18 mai 2004
18 mai 2004 à 02:00
J'ai remarquer quelle petit problème en testant ton scripts sur une plate-forme Linux, les noms de caractère en majuscule et minuscule ne sont pas pareille sur cette plate-forme. J'ai du renommer chaque fichier en minuscule pour que sa fonctionne. Sinon, ton fichier connec.php a une erreur à la ligne 8, "mysql_connect($host,$user, $pass) or die("impossible de se connecter");//connection à mysql" au lieu de "mysql_connect($host,$user) or die("impossible de se connecter");//connection à mysql" sinon le mot de passe n'est pas pris en compte. Mais bon, a part c'est quelle que petit problème qui mon pris 5 min a coriger, ton scripts est super. Félicitation et continue ;-)
cs_Skwal Messages postés 17 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 3 juin 2004
13 mai 2004 à 13:13
Joli boulot pour un début de forum ;)
Seul problème c'est qu'il n'y a aucune identification pour l'admin. N'importe qui peut donc aller sur admin.php et modifier ce qu'il veut :/

Bon courage pour la suite :)
scoder Messages postés 140 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 20 mars 2006
12 mai 2004 à 14:51
j'ai oublié d'ajouter que pour se connecter en tant qu'administrateur le login et le pass sont admin
Rejoignez-nous