JeuWeb - Crée ton jeu par navigateur
[Résolu] Systeme Inventaire - 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 : [Résolu] Systeme Inventaire (/showthread.php?tid=2893)

Pages : 1 2


RE: Systeme Inventaire - Sephi-Chan - 15-08-2008

Exporte ta base de données via phpMyAdmin et colle le code SQL que ça te donne sur Pastebin.com, ça me permettra de tester.

Qu'est-ce que ça te donne quand tu mets cette requête dans phpMyAdmin (en supposant que tu ai un personnage qui a une id = 1 dans ta base de données) ?
Code :
SELECT objet.*
FROM session
JOIN inventaire
ON inventaire.personage = session.id
JOIN Objet
ON Objet.id = inventaire.objet
WHERE session.id = 1
AND objet.type = 'arme';


Sephi-Chan


RE: Systeme Inventaire - Tekmerak - 16-08-2008

http://pastebin.com/m74ae218f

Quand je met ton code, sa me met l'objet voulu (oui il y a un seul objet de type arme dans ma base de donné (un seul tout court d'ailleur))


RE: Systeme Inventaire - Sephi-Chan - 16-08-2008

Dans ce cas, c'est que la requête fonctionne bien, non ? Où est-ce que ça bloque ? Quand tu dis que "ça ne marche pas", tu peux détailler s'il te plaît ?


Sephi-Chan


RE: Systeme Inventaire - Eluox - 16-08-2008

En prenant ta BDD j'me suis permis de t'aider Smile

Moi sa donne sa, et sa fonctionne niquel

Code PHP :
<?php 
$id
= 3;

$ressource = mysql_query("
SELECT o.id, o.nom
FROM session AS s
LEFT JOIN inventaire AS i
ON i.personage = s.id
LEFT JOIN objet AS o
ON o.id = i.objet
WHERE s.id = "
.$id."
AND o.type = 'arme'
"
) or die (mysql_error());




if(
mysql_num_rows($ressource) <= 0)
{
echo
"Vous n'avez pas d'objet";
}else
{
echo
'<form method="post" action="traitement_changement_equipement.php"><p>Main droite : ';
echo
'<select name="main_droite">';

while(
$donnee = mysql_fetch_assoc($ressource))
{
echo
'<option value="'.$donnee['nom'].'">'.$donnee['nom'].'</option>';
}

echo
'</select>';
}

@Sephi : Ta requête n'a rien renvoyer techniquement dans PMA, tout simplement car le seul user de la table session a pour ID 3 et non 1 comme dans ta requête Smile


RE: Systeme Inventaire - Sephi-Chan - 16-08-2008

Voilà, c'était donc juste une erreur d'inattention. Smile

Par contre, la nouvelle structure que tu as adopté est moins claire. Dans un système (que ce soit un jeu, un forum ou autre), les utilisateurs ne s'appellent pas des sessions. Ce sont des joueurs, des utilisateurs ou autre.

De même, on préférera un nom pluriel à la table. La table Utilisateurs contient plusieurs utilisateurs.
Ensuite, la table de relation doit avoir un sens. La table Personnage_possede_objet a un sens : elle contient des enregistrement qui associe 1 personnage à 1 objet.

Ce ne sont que des conseils de notations, mais ils sont très pratiques, surtout quand tu commences à avoir des requêtes un peu plus complexes.


Sephi-Chan


RE: Systeme Inventaire - Tekmerak - 16-08-2008

MErci !! Sa marche cette fois.

Pour les nom je me doute que sa peux paraitre louche mais sur le coup sa me parraissait plus simple et je commence deja a m'y habitué (surtout pour le session). Et puis sa personnalise les code Wink


RE: [Résolu] Systeme Inventaire - Sephi-Chan - 16-08-2008

Justement, la personnalisation du code est à éviter. Il faut que ce soit compréhensible par tous ceux qui lisent ton code. C'est n'est pas le cas avec des noms exotiques. Je ne peux que te conseiller d'utiliser des noms plus génériques, pour la clarté des choses.

Mais bon, c'est clair que je ne peux pas t'y forcer. Tu devras le faire tôt ou tard de toute façon. J'essaye juste de te convaincre d'y passer avant que ça ne devienne vraiment chiant car plus tu attends, plus tu auras de choses à changer lors du changement (qui ne manquera pas d'arriver).


Sephi-Chan, merci pour le tag [Résolu] ! Wink