Aller au contenu

Espace membre


Sujets conseillés

Guest Logrenn
Posté

Bonjour,

Je suis ce qu'on peut appeller un débutant en Webmastering et tente laborieusement de m'y lancer.

J'aimerais me lancer dans la creation d'un espace web pour mon site (L5A stratégique) et je ne sais pas par où commencer.

En fit mon idée serait de reprendre les données de la BDD MySQL du forum et les integrer au site. De telle sorte que les utilisateurs puissent se connecter, voir apparaitre leur avatar, connaitre le nombre de messages privés etc ... tout ca depuis le site.

Et je dois avouer ... ... que je suis perdu !! Je ne sais pas du tout comment m'y prendre.

Un peu d'aide ? :blush:

Posté (modifié)

La solution le plus courante, la plus facile, et la plus abordable est de traiter ça en PHP. PHP s'entend très bien avec MySQL.

Dans les grandes lignes, pour créer un espace membre, il faut procéder comme pour créer une administration : il faut créer une zone sécurisée par des identifiants, et pouvoir sortir les infos de chaque personne selon certaines modalités (du type : si la personne consulte une autre fiche que la sienne, elle peut juste lire; si elle consulte sa fiche, elle peut la modifier; etc...).

Ce n'est pas compliqué, mais si tu n'as jamais fait de PHP auparavant, ça peut sembler l'être. Pour bien démarrer, il faut mettre sur papier les infos que tu veux recueillir dans ta base de données, quelles actions tu veux pouvoir proposer (lecture d'une fiche perso, modification d'une fiche perso après authentification avec mot de passe, etc...).

Ensuite viendra la partie codage.

Ne brûlons pas les étapes, mais regardons déjà ce qu'il y aura à faire, a priori :

  • une page d'inscription
  • une page d'identification
  • une page perso
  • une page pour modifier ses infos à soi les siennes
  • plein de pages pour voir les infos des autres (une seule page en fait !)
  • et d'autres choses si on en a envie !

Autour de ça, ou plutôt en-dessous, sous-jacent à ces pages, il va y a voir :

  • une base MySQL organisée comme il faut
  • un système de vérification d'identité pour autoriser telle ou telle action
  • des requêtes SQL pour extraire les infos des tables de la base MySQL
  • et d'autres choses si on en a envie !

Maintenant, précise un peu tes envies (en étant mé-tho-dique surtout !), et on mettra les mains dans le camboui :)

Modifié par jd_
Posté

Autrement des services proposé par des sites Web si tu veut je peut te donner les adresses , via un espace membre très simple tu met ce que tu veut ...

Ca te tente :?:

Guest Logrenn
Posté

Bon alors,

Tout d'abord merci d'avoir répondu si rapidement et de manière si complète.

Je vais essayer de préciser ma pensée.

(Syl je te remercie de ton tip mais en plus de faire un acces membres j'aimerais apprendre à en faire un. Mais c gentil d'avoir proposé :))

Donc, mon idée globale :

J'aimerais que les joueurs, arrivés sur le site puissent se connecter a leur "compte" (acces site + forum), et aient ainsi une petite fenêtre dans un coin où ils verraient les infos qui leur sont relatives (Messages privés ...).

Mais par rapport au site mon idée serait que les joueurs ecrivent eux même la partie "joueurs" du site. C'est à qu'à travers leur espace perso, ils puissent ecrire leur fiche personnelle (de leur personnage dans le cas présent), et ainsi la pulier pour qu'elle apparaisse dans la partie "joueurs" accessible à tous et modifiable uniquement par l'auteur. (par page perso je veux dire : une image, presentation, histoire etc ...).

Je vais maintenant essayer de dire ce que je veux tirer de la BDD :

- infos relatives au compte forum (Login, Mot de passe, Messages privés,toute les infos du profil [le forum est un phpBB classique]).

- je vois pas trop quoi d'autre en fait ...

Les pages a rajouter donc (je reprends un peu ce que tu as dit):

- Une partie inscription

- Une partie identification

- La page perso contenant toute les infos

- La petite fenetre sur le site affichée en permence (2 en fait ou on verrait l'avatar et la presence ou non de Message privés)

- Une page d'édition de la fiche personnelle + publication

- Une page d'edition de la fiche personnelle par les administrateurs (Le MJ et moi donc ...) pour palier tout ecart ou retoucher les fautes d'orthographe :)

- La partie "joueurs" ou l'on pourra consulter les fiches mises en lignes

- L'edition du profil se faisant elle dans le forum (je ne trouve aps trop l'utilité d'en rajouter une dans le site).

Maintenant pour ce qui est sous jacent a ces pages .. justement je ne sais pas :unsure:

Voilou

Posté (modifié)

Déjà, je te félicite de vouloir apprendre à faire ça de tes propres mains - c'est toujours plus amusant et instructif que d'utiliser un script, aussi bon soit-il ! (au moins, la première fois..)

Le premier point à régler,à mon avis, c'est l'inscription/identification. Si ça, ça ne fonctionne pas, on peut pas avancer avec certitude.

Le principe est le suivant, quelque soit la complexité du code :

le visiteur s'inscrit, il devient membre et reçoit un couple d'identifiants : un login et un mot de passe. Avec ça, il peut se logguer/s'identifier, et naviguer dans un espace "privé". Cet espace privé est en fait constitué de pages classiques, à la différence près qu'à chaque consultation d'une d'entre elles, un script vérifie la validité des identifiants qui sont la "signature" du visiteur/membre. Ainsi, à l'identification, on fait circuler de page en page les identifiants (autre chose, en fait, mais peu importe pour le moment), qui sont comparés avec ceux enregistrés dans la base de donnée (bdd). Si ça "matche" (si ça correspond), aucun problème. Sinon, on retourne une erreur, ou on empêche la modification des infos, etc.

---

Si j'ai bien compris, chaque membre aura en quelque sorte deux identités : celle de phpBB et celle de son joueur. Comme tu utilises phpBB en fond, on pourrait en profiter pour utiliser les infos déjà présentes et y greffercelles du "joueur".

Je suppose aussi que tu ne veux autoriser la création d'une fiche de joueur que si le visiteur est enregistré, c'est à dire membre (du forum). On pourrait donc utiliser l'inscription au forum phpBB, histoire de ne pas réinventer la roue. Cependant, je n'ai pas de phpBB sous la main, je ne sais pas comment l'identification à travers le forum se fait : il faudrait regarder ça pour voir si c'est facilement exportable sur des pages extérieures au forum.

Si c'est trop compliqué, on peut créer un second formulaire d'identification, avec son propre système de contrôle, qui reprendrait simplement les identifiants du forum (par exemple).

A toi de décider : réutiliser phpBB ou créer un système annexe utilisant les infos de phpBB (je ne sais pas ce qui est le plus simple, il faut trouver un expert de phpBB :))

Modifié par jd_
Guest Logrenn
Posté

Oui en fait c'est ce que je veux : réutiliser les données du PhpBB et les completer par une edition de fiche perso (voir même une ou deux choses en plus auxquelles j'ai reflechis). Ca me parrait plus simple et ça eviterait que les joueurs se perdent entre tous les login et mdp.

En fait, ce serait bien de juste utiliser les login / mdp de phpbb, a la limite ca peut venir par la suite. Et de rajouter les pages personnelles du joueurs (une partie à lui quoi ...). Ce qui impliquerait donc une page personnelle pour l'administrateur aussi...

Mais est-ce que cela necessite que TOUTES mes pages doivent être en format php ??

Guest Logrenn
Posté

Bon aprés reflexion avec le chef :

Il faudrait 2 types de pages, donc distinguer deux types d'inscrit : les administrateurs et les joueurs (ici ce serait donc interressant de prendre les rangs du forum, donc on revient au choix des infos de la BDD du forum phpBB).

Joueurs :

- La page perso du joueur qui serait en fait une page d'accueil ameliorée (avec présentation des evenements de chaque semaine pour le joueur personnellement et à tous les joueurs de son clan)

- une page d'edition de fiche personnage (donc avec envoi de photo, texte ...) [la base de donnée serait donc ici differente de celle du forum]

- une page commune de consultation des fiches personnage

- une page d'envoi d'ordre (ca c'est le jeu)

Admin :

- une page pour publier les news communes a mettre en page d'accueil visibles par tous

- Une page pour publier les news par clan (donc envoyé sur la page perso de chaque joueurs du clan)

- même chose mais a un niveau personnel pour un seul joueur

- une page d'edition des fiches de personnage (pour les fautes d'ortho etc ...)

Il faudrait donc en plus ici:

- Une nouvelle base de donnée pour les fiches personnage mais utilisant le meme login et mdp que celui du forum

- classer les joueurs par clan

Voilà le projet a son stade le plus complet (j'espere ...), et franchement ... je me relis et je me dis que ce sera impossible :wacko:

Posté

Ok. L'idée ça va donc être de partir des infos du visiteur inscrit au forum (appelons-le "membre" | "membre" désigne désormais un visiteur inscrit sur le forum phpBB, c'est-à-dire disposant d'un compte perso, mais pas forcément encore d'une fiche joueur) pour y ajouter des infos sur le "joueur" (ce terme désignera les infos sur le personnage du membre).

Toutes les informations dont tu vas avoir besoin pour faire plaisir à tes membres, il faut les grouper dans des tables. Ces tables sont comme des stocks d'informations, organisées en champs, dans lesquels "tu" (ie. un script PHP via des requêtes SQL) vas piocher selon l'envie du membre : "afficher ma fiche perso", "éditer ma fiche perso", "supprimer telle information"... sont des requêtes que tu vas devoir traduire en langage SQL, pour manipuler tes tables, donc tes informations.

Certaines infos ne changeront jamais (par exemple, l'id du membre), tandis que d'autres pourront être éditées souvent (par exemple, les caractéristiques du joueur/personnage). Quoiqu'il en soit, les infos doivent être dans des tables, subdivisées en champs.

Cela veut dire qu'il faut les organiser, toutes ces infos ! - d'autant que tu en auras beaucoup, peut-être... Il faut donc faire preuve de logique et de rigueur. avant même de créer quoique ce soit dans phpMyAdmin ou autre.

Pour commencer, on va s'occuper de créer les tables MySQL nécessaires, et une page d'identification pour consulter sa fiche perso (on construira la page générant les infos de la fiche perso du joueur X plus tard - pas tout à la fois).

Je te conseille de rassembler toutes les infos du joueur dans une table que tu créeras, et non de rajouter des champs à la table des infos des membres (à la table phpBB, s'entend). D'une part, ces infos ne sont pas de même nature, d'autre part, cela peut être gênant pour les requêtes de phpBB, pour les tiennes, pour la gestion séparée, etc, bref, pour tout un tas de raisons.

Il nous faut donc créer une table "joueur" ou "perso" ou autre nom, qui liste les infos relatives au joueur (pas aux membre, on est d'accord); il faut aussi qu'un membre soit lié à un joueur, logiquement (on s'occupera de l'aspect "création d'une fiche joueur" bien après). Pour ce faire, on peut utiliser l'id du membre comme une information-lien entre les tables de membre et de joueur : ainsi, en créant un champ id_membre dans la table "joueur"/"perso"(..) tu pourras indiquer à quel membre appartient ce joueur. Cette idée peut paraître floue pour le moment, mais tu verras ça plus clairement dans très peu de temps. Retiens juste qu'il nous faut un élément pour faire le lien entre un joueur et un membre, et que cet élément sera un numéro : le numéro du membre.

Création de la table "joueur"

Admettons qu'on appelle cette table "joueur". Comme tu m'as dis ne pas avoir encore expérimenté MySQL et PHP, on va profiter de cette première approche pour faire de la pédagogie : je te dis ce qu'il faut faire, je te donne un ou deux liens vers de la doc, et à toi de la lire pour comprendre pourquoi on fait ce qu'on fait. Tu vas être obligé, car tu vas devoir personnaliser tous mes exemples ;)

Bien, commençons par le commencement. C'est-à-dire avec un crayon et une feuille (éventuellement virtuels) : fais la liste des infos que tu veux rassembler dans ta future table joueur. Il te faudra nécessairement un champ id (le numéro du joueur : 0, 1, 2, .. n, pour savoir combien tu en as, mais surtout pour que chaque fiche joueur soit distincte des autres), un champ id_joueur (le numéro du membre dont on a parlé), un champ nom, etc...

La construction de table est vraiment le plus important. Un bon script PHP ne rattrapera jamais les lacunes d'une ou de table(s) bancale(s). Ainsi, il te faut proscrire les informations qui feront double emploi, celles qui pourraient être regroupées... Le type associée à chaque champ est pour beaucoup dans la qualité de la table que tu crées. Ainsi, enregistrer une date sous un type varchar alors que MySQL propose des type date, datetime... fait sur-mesure est absurde.

A propos de la création d'une table - phpMyAdmin propose une interface sympa pour le faire, champ par champ. Mais nous, on est des durs, alors on va dire par écrit ce qu'on veux. Pour voir comment faire, quels sont les types courants, consulte (et apprend ;)) :

Avant d'aller plus loin, fais ce petit travail et poste-le sur le ici pour qu'on voit sur quelles bases on va partir et créer cette table. Aussi, ne t'inquiète pas : le plus long c'est les tables MySQL et les deux trois premières pages, le reste va aller très vite, car PHP/MySQL vont tout faire pour toi ou presque dès que tu auras compris les quelques fondamentaux des requêtes, etc.

Guest Logrenn
Posté

Bon alors, aprés étude du langage de syntaxe mySQL j'en susi venu a créer la syntaxe simple pour al création d'une table regroupant les informations sur les joueurs à l'inscription sur le site. En effet, aprés reflexion, les membres du forum n'étant pas forcement des joueurs, il serait inutile et même voir imprudent de leur créer un compte joueur. La décision de créer une nouvelle table a donc été prise, où le joueur aura pour recommandation pratique de reprendre le même Login et mot de passe que le forum.

CREATE TABLE joueurs_tbl (id INT not null AUTO_INCREMENT, login VARCHAR (30) not null , mdp VARCHAR (15) not null , nom_ljd VARCHAR , prenom_ljd VARCHAR , nom_pj VARCHAR not null , clan VARCHAR not null , famille VARCHAR , profession VARCHAR , bg LONGTEXT , image VARCHAR ,  PRIMARY KEY (id))

J'ai laissé en "not null", c'est à dire en champ obligatoire a l'inscription :

- l'id, car comme dit Jd, la prudence est un bon atout :)

- le login et mdp

- nom_pj (nom du personnage pour qu'on puisse savoir qui c'est)

- clan (pour pouvoir ensuite classer les inscrits par clan et faciliter l'envoi des news par clan)

Voilou pour la table de la base de donnée.

Posté

-- jai pas vu le topic avant --

Tu peux aussi utiliser un CMS genre SPIP, et y inclure la base de ton forum.

Je l'ai fait avec un forum IBF (tel que celui-ci) et cela fonctionne tres bien. l

es membres qui s'inscrivent sur le forum sont automatiquement inscrits sur le site (pas l'inverse pour les membres qui veulent juste être inscrits sur le site).

Il me semble que c'est également possible pour un forum phpBB.

Guest Logrenn
Posté

Justement on est revenu sur notre décision, et on a expliqué le pourquoi du choix d'une base a part. Tout simplement que tous les membres inscrits sur le forum ne sont pas forcément des joueurs.

Guest Logrenn
Posté

Bon je suis en train de faire les scripts des differentes pages php

Mais je me heurte a des problèmes :

- pour l'inscription des membres, comment faire en sorte que les infos ne s'ajoutent a la Base de donnée qu'apres validation par l'admin ?

- Pour faire en sorte que els news soit triées par clan (donc par statut dans la base de donnée) et qu'elles ne s'affichent que pour les personnes visées...

Voilà pour l'instant c'est à peu prés tout

Posté (modifié)

Ok - je te préparais un long billet, mais tu sembles avoir pris de l'avance ;)

Je suppose que tu as du chercher comment faire un formulaire pour traiter les infos avec un script PHP, hum ? (si ce n'est pas le cas, je posterai mon bidule ^^).

Pour l'histoire de la validation, je ne pense pas que tu ai besoin de partir dans des complications.. complexes. Tu peux faire la distinction validé/non-validé avec un couple binaire 1/0 (en gros ajouter une colonne) - un script PHP d'admin pourrait alors sortir les enregistrements non-validé, offrant le choix de valider/supprimer/laisser non-validé les membres listés, au cas par cas.

Pour les news, il faut déjà bien sûr spécifier à quel clan(s) se rapporte une news (donc un champ pour ça dans la table des news). Ensuite tu pourras utiliser le principe de jointure que je t'avais expliqué sur msn, pour trier les news et n'afficher que celles liées au clan du membre (si tu te souviens plus, on verra ça plus tard, c'est pas monstrueux à faire du tout, une simple requête SQL).

Note que je serais pas là pour quelques jours, donc si aucune âme charitable ne se dévoue, tu devras attendre pour d'autres réponses à d'autres questions...

N'oublie pas de chercher sur le net, bien sûr !

:)

Modifié par jd_
Guest Logrenn
Posté

Ok en gros le principe :

C'est de faire une colone validation avec comme valeur 1 ou 0.

Ceux qui ont 0 ne peuvent pas se loguer, et se voient apparaitre dans une liste chez l'admin qui lui decidera de passer la valeur a 1, ou alors de supprimer la ligne.

Pour le principe des news, j'ai bine peur d'avoir saisi le début mais pas la fin :/

Et pour le Php, ton long billet sera le bienvenue lol. Car j'ai du mal a m'y retrouver :)

Guest Logrenn
Posté (modifié)

J'ia un petit probleme avec MyAdmin. Il me met que la page a terminé de se charger mais qu'il existe des erreurs. et je me retrouve donc avec une belle page grise .... vide ...Est-ce normal docteur ? :(

Modifié par Logrenn
Guest Logrenn
Posté (modifié)

Auto reponse : C'etait IE qui deconait donc vive Mozilla lol

Ensuite je me trouve face a un petit problème :

Voilà j'ai commencé a taper un script pour l'enregistrement des utilisateurs dans la BDD.

Voilà le script :

<?

if(empty($mail) OR empty($login) OR empty($mdp) OR empty($nom_pj) OR empty($clan) OR empty($famille) OR empty($profession) OR empty($background))

    {

    echo '<font color="red">Pas si vite samouraï, seuls les champs <b>Nom du joueur, âge et localisation</b> peuvent rester vide ...</font>';

    }

else 

    {

$db = mysql_connect('localhost', 'xxxxx', 'xxxxxx')  or die('Erreur de connexion '.mysql_error());

    mysql_select_db('l5astrat',$db)  or die('Erreur de selection '.mysql_error());

       

    $sql = "INSERT INTO joueurs_tbl VALUES('','$mail','$login','$mdp','$nom_ljd','$prenom_ljd','$age','$nom_pj','$clan','$famille','$profession','$localisation','$background','$rank(0)','$validation(0)')";

       

    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

 

    echo 'Vos informations ont été soumis au maitre du jeu, il ne saurait tarder à vous répondre. Merci de vous être inscrit...';

    mysql_close(); 

    }

?>

Et voilà donc en remplissant le fomulaire ce qu'on m'affiche :

Erreur SQL !INSERT INTO joueurs_tbl VALUES('','daniel.stanic_AT_wanadoo.fr','Logrenn','1321','Stanic','Thomas','18','Mirumoto Oguni','Dragon','Mirumoto','Kensai','Miramas','Un court récit de l\'histoire de votre personnage, expliquant notement son implication dans la partie.','(0)','(0)')

Column count doesn't match value count at row 1

Je pense que le probleme vient de là : '$rank(0)','$validation(0)' (je ne sais pas comment faire pour forcer les champs à prendre une valeur.

Ou sinon je ne vois vraiment pas d'ou vient l'erreur.

Merci d'eclairer ma petite lanterne de Newbie Webmaster :)

Modifié par Logrenn
  • 1 month later...
Guest Logrenn
Posté

Bon bon bon,

Voila j'ai pas mal avancé dan le site ... en fait non pas tellement :)

Et je suis arrivé a un blocage.

En effet, j'aimerai dresser la liste des joueurs dans un tableau.

Je fais donc ma requete.

Mais comment dois-je faire pour faire en sorte que chaque entrée soit mise dans une ligne séparée et que si un nouveua joueur s'inscrit, qu'il apparaisse dans une nouvelle ligne etc ...

Merci

Guest Logrenn
Posté

Trouvé tout seul. Etant bon joueur, pour ceux que ca interresse ca donne qq chose dans ce genre la

<?

            // on se connecte à notre base

        $db = mysql_connect('localhost','xxxx','xxxx')or die('Erreur de connection a la base '.mysql_error());

  mysql_select_db('xxxx',$db) or die('Erreur de selection de la base'.mysql_error());

      // Préparation de la requête

        $recherche_nom_clan = 'SELECT nom, clan FROM personnage';

  // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)

        $req = mysql_query($recherche_nom_clan) or die('Erreur SQL !<br>'.$recherche_nom_clan.'<br>'.mysql_error());

  // on va scanner tous les tuples un par un

        while ($data = mysql_fetch_array($req))

          {

          // on récupère les valeurs qui nous intéressent

                $nom = $data['nom'];

                $famille = $data['clan'];

               

            // on affiche les résultats dans la <table>

        echo '<tr><td>'.$nom.'</td><td>'.$famille.'</td></tr>';

          }

      // on libère l'espace mémoire alloué pour cette requête

        mysql_free_result ($req);

            // on ferme la connexion à la base de données.

        mysql_close ();

      ?>

Posté

Tu fais :

or die('Erreur SQL !
'.$recherche_nom_clan.'
'.mysql_error());

En cas d'erreurs, cela va afficher la requète, en donnant du même coup les noms de table et les noms de champ. Ce n'est pas l'idéal, c'est un risque de montrer ça à "n'importe qui".

TU fais :

while ($data = mysql_fetch_array($req)) 
         {
           // on récupère les valeurs qui nous intéressent
               $nom = $data['nom'];
               $famille = $data['clan'];
               
           // on affiche les résultats dans la <table>
       echo '<tr><td>'.$nom.'</td><td>'.$famille.'</td></tr>';
         }

Pour économiser 2 variables, tu aurais pu faire :

while ($data = mysql_fetch_array($req)) 
         {
           // on affiche les résultats dans la <table>
       echo '<tr><td>'.$data['nom'].'</td><td>'.$data['clan'].'</td></tr>';
         }

Lorsque ton résultat ne prend pas trop de mémoire, tu peux te dispenser de la fonction 'mysql_free_result'. Elle est surtout utile lorsque les résultats sont 'vraiment' important. De plus, tu fermes la connection, ce qui, du même coup, libère la mémoire.

Voilà,

Anonymus.

Guest Logrenn
Posté

ok merci beaucoup pour ces petits plus :)

Guest Logrenn
Posté (modifié)

Bon alors, je reviens avec mes questions de nioubs ...

Voilà maintenant j'ai un tableau qui se presente ainsi

--------------------------------------------------------------------------------

|  nom              |    clan                      |        description        |

--------------------------------------------------------------------------------

|  Bob                  |        Dragon                |                ici            |

                                  ........

Sachant que le tableau ne prend en compte que les joueurs ayant dans la base de donnée leur champ validation=1 (donc validé par l'admin)

Ce que j'aimerais faire c'est mettre au niveau de "ici" (colone description) un lien qui ouvrirait un popup ou une nouvelle fenetre ou il y'aurait les informations du joueur en question. une genre de fiche quoi qui reprendrait les données de MySQL en ciblant la recherche sur Bob.

Voilà si vous pouviez pas forcement me dire la réponse mais par exemple simplement me donner une piste, histoire que je cherche un peu quand même ^^

Merci d'avance

Modifié par Logrenn

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...