JeuWeb - Crée ton jeu par navigateur
Problème d'affichage - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème d'affichage (/showthread.php?tid=2470)

Pages : 1 2 3


Problème d'affichage - titnome - 18-09-2010

Bonjour,

Voila je suis en train de développer un forum pour mon jeu mais le problème est que si un joueur se désinscrit ses messages ne sont plus disponibles alors que j'utilise un identifiant unique pour tous les membres désinscrit.

Cet identifiant permet de conserver les sujets de discutions et ainsi de pouvoir continuer à les diffuser.

Voici le code de la requête qui ne fonctionne pas :

<?php

$chargementLecturePosts = sprintf(
"SELECT Posts.Message MESSAGE, Posts.Date DATE, Membre.Pseudo PSEUDO, Parametres.Signature SIGNATURE, Parametres.Signature_Forum SIGNATURE_ETAT
FROM Forums_Messages Posts, Membres_Identifiants Membre, Membres_Parametres Parametres
WHERE ID_Forum_Sujets = '%s' AND Membre.ID = Posts.ID_Membres_Identifiants AND Parametres.ID_Membres_Identifiants = Posts.ID_Membres_Identifiants
ORDER BY Posts.ID ASC",
mysql_real_escape_string($_GET['id'])
);
$requeteLecturePosts = @mysql_query($chargementLecturePosts);
$nombreLecturePosts = @mysql_num_rows($requeteLecturePosts);

if ( $nombreLecturePosts >= 1 ) {
while ($posts = mysql_fetch_array($requeteLecturePosts)) {
echo "<table>";
echo "<tr>";
echo "<th style=\"width : 40%;\">".$posts['PSEUDO']."</th>";
echo "<th style=\"width : 60%; text-align : right; padding-right : 15px;\">Le ".date('d/m/Y', $posts['DATE'])." à ".date('G\h. i\m\i\n.', $posts['DATE'])."</th>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=\"2\" style=\"text-align : left; font-style : normal;\">".bbcode($posts['MESSAGE']);
if ( $posts['SIGNATURE_ETAT'] == 1 ) {
echo "<hr style=\"border : 1px solid #330000; width : 80%; margin-left : auto; margin-right : auto;\" />".bbcode($posts['SIGNATURE']);
}
echo "</td>";
echo "</tr>";
echo "</table>";
}
}



RE: Problème d'affichage - Sephi-Chan - 18-09-2010

Je dirais tout d'abord que ton approche est mauvaise : un membre désinscrit devrait conserver son identifiant et simplement changer de nom affiché. Là tu flingues tes références inutilement.

Ensuite, je ne comprends pas l'intérêt d'aliaser des champs qui gardent le même nom, en mettant des majsucules : cette pratique diminue inutilement la lisibilité de qualité de ton code en ajoutant du code superflux (plus de code = plus de bugs, d'autant plus que tu n'utilises pas le mot clé AS pour aliaser). Peux-tu expliquer ça ? De même, je m'interroge sur la casse compliquée que tu utilises pour nommer tes colonnes et tes tables. Pourquoi ne pas se contenter de minuscules ?

Bon choix d'utiliser le sprintf, mais tu n'utilises pas le bon placeholder. Pour placer un identifiant (un entier), mieux vaut utiliser ID_Forum_Sujets = %d.

Préfixer les appels de fonctions par des @ est dangereux : c'est un cache misère qui finira par te revenir dans la gueule.

Enfin, intégrer du HTML dans du PHP n'est pas une bonne idée, mieux vaut faire l'inverse, toujours pour la lisibilité. Il serait également intéressant d'utiliser du CSS externe plutôt qu'en ligne : le gâchis est conséquent en terme de poids des pages et de lisibilité.

Exemple :


<?php if($nombreLecturePosts >= 1): ?>
<?php while($posts = mysql_fetch_array($requeteLecturePosts)): ?>
<table>
<tr>
<th class="pseudo"><?php echo $posts['PSEUDO'] ?></th>
<th class="timestamp">
Le <?php echo date('d/m/Y', $posts['DATE']) ?>
à <?php echo date('G\h. i\m\i\n.', $posts['DATE']) ?>
</th>
<tr>
<tr>
<td colspan="2" class="message">
<?php echo bbcode($posts['MESSAGE']) ?>
<?php if($posts['SIGNATURE_ETAT'] == 1): ?>
<hr />
<?php echo bbcode($posts['SIGNATURE']) ?>
<?php endif; ?>
</td>
</tr>
</table>
<?php endwhile; ?>
<?php endif; ?>

Voilà, voilà ! :p


Sephi-Chan


RE: Problème d'affichage - gameprog2 - 18-09-2010

Moi je n'y connais rien mais est-ce que ça ne viendrait pas de là :

Citation :WHERE ID_Forum_Sujets = '%s' AND Membre.ID

Comme il n'est plus membre, son "Membre.ID" n'existe plus et il ne peut pas être affiché, qu'en dis-tu ?

EDIT : Ah pardon Sephi-chan on s'est croisé, si j'avais vu ta réponse j'aurais pas posté Wink


RE: Problème d'affichage - titnome - 18-09-2010

Sephi : Pourrais tu développer un peu ton idée sur la conservation des données? c'est une idée à exploiter.
gameprog2 : J'ai précisé que j'avais une entrée dans ma table de donnée Membre par défaut inconnu. donc avec un identifiant et je modifie toutes les entréesdu membre en modifiant donc l'id affectée.


RE: Problème d'affichage - gameprog2 - 18-09-2010

Citation :gameprog2 : J'ai précisé que j'avais une entrée dans ma table de donnée Membre par défaut inconnu. donc avec un identifiant et je modifie toutes les entréesdu membre en modifiant donc l'id affectée.
OK Wink
C'est parce que je ne connais pas trop PHP/mysql Wink
Je lance juste une idée c'est tout Wink


RE: Problème d'affichage - Sephi-Chan - 18-09-2010

(18-09-2010, 04:54 PM)titnome a écrit : Sephi : Pourrais tu développer un peu ton idée sur la conservation des données? c'est une idée à exploiter.
gameprog2 : J'ai précisé que j'avais une entrée dans ma table de donnée Membre par défaut inconnu. donc avec un identifiant et je modifie toutes les entréesdu membre en modifiant donc l'id affectée.

Et bien, quand un membre se désinscrit, tu mets juste son nom de compte et son email à NULL et tu effaces éventuellement ses messages privés.

Et à l'affichage, partout où tu dois afficher le nom d'utilisateur, tu testes si le nom est vide, si oui, tu affiches "Utilisateur désinscrit", si non tu affiches ce nom. Bien sûr, je te conseille de mettre tout ça dans un petit helper. Smile


Sephi-Chan


RE: Problème d'affichage - php_addict - 18-09-2010

ou un champs sur ta table joueur nommé "actif"

si actif = 0 t'affiches pas
si actif= 1 t'affiches.


RE: Problème d'affichage - Sephi-Chan - 18-09-2010

Oui mais légalement, tu dois anonymer le compte si l'utilisateur a décidé de le clôturer.


Sephi-Chan


RE: Problème d'affichage - php_addict - 18-09-2010

(18-09-2010, 07:13 PM)Sephi-Chan a écrit : Oui mais légalement, tu dois anonymer le compte si l'utilisateur a décidé de le clôturer.

je ne savais pas, au pire tu vire son email, ip, et donnees confidentielles, le pseudo et son id dans la base de donnee peuvent etre gardées non ?


RE: Problème d'affichage - niahoo - 18-09-2010

le pseudo oui, à moins qu'il l'ait fait inscrire sur sa carte d'indentité par acte de notariat je pense.