JeuWeb - Crée ton jeu par navigateur
Affichage et gestion des ressources - 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 : Affichage et gestion des ressources (/showthread.php?tid=4720)

Pages : 1 2


Affichage et gestion des ressources - Ksama - 08-04-2010

Bonjour, c'est encore moi :triste:

J'ai une question qui me trote dans la tête.
Voilà, j'ai une base de donnée : "Ma_Base".
Cette base contient une table : "Membres".
Cette table contient plusieurs champs : "ID", "Pseudo", "MDP" et "Bois".

J'aimerai afficher/modifier, le champ "Bois" en fonction du joueur connecter.
Par exemple le joueur avec : Pseudo : "Mon_Joueur", et qui a pour ID : "1", il gagne 100 "Bois". Comment modifier le nombre de "Bois" du joueur et l'afficher sans modifier/afficher celui de tout les joueurs ?

En gros un système de ressources. J'ai fait des recherches, mais je ne comprend pas.

Merci à tous d'avance !


RE: Affichage et gestion des ressources - Sephi-Chan - 08-04-2010

L'identifiant de ton joueur est stocké dans sa session, non ?


UPDATE membres SET bois = bois + 100 WHERE id = $_SESSION['id'];


Sephi-Chan


RE: Affichage et gestion des ressources - Ksama - 08-04-2010

Donc, si je veux afficher le nombre de bois je fait une requête :

Code :
$query = sprintf("SELECT bois FROM membres WHERE id = $_SESSION['id'];


Que j'affiche :

Code PHP :
<?php echo $resultat = mysql_query($query); ?>

C'est bien sa ?


RE: Affichage et gestion des ressources - Sephi-Chan - 08-04-2010

Non. Et ça sert à rien d'utiliser sprintf si tu mets les valeurs en dur dedans. Smile

Regarde le nommage : la requête renvoie une ressource que l'on convertie ensuite. On peut se permettre de le faire directement car le résultat ne comporte qu'une ligne. Sinon, on fait ça dans une boucle qui parcourt la ressource.


$query = sprintf("SELECT bois FROM membres WHERE id = %d;", $_SESSION['id']);
$resource = mysql_query($query);
$data = mysql_fetch_assoc($resource);

Et généralement, on charge toutes les données du joueur dans un tableau/objet, pas le bois d'un côté, le pseudo de l'autre, etc.


Sephi-Chan


RE: Affichage et gestion des ressources - Ksama - 08-04-2010

D'après se que tu m'a dit, j'ai fait ça :

Code PHP :
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=Ma_Base', 'root', '');
}
catch (
Exception $e)
{
die(
'Erreur : ' . $e->getMessage());
}

$query = sprintf("SELECT bois FROM membres WHERE id = %d;", $_SESSION['id']);
$resource = mysql_query($query);
$data = mysql_fetch_assoc($resource);

?>

Puis j'affiche :

Code PHP :
<?php echo $resource; ?>



RE: Affichage et gestion des ressources - Sephi-Chan - 08-04-2010

Lis un peu la documentation là, c'est vraiment bidon ! Si on te donne la réponse, tu ne progresseras pas, tu confondras toujours les termes et les valeurs retournées.

Colle ici les éléments de réponses que tu auras obtenu en lisant la documentation de mysql_query, puis de mysql_fetch_assoc, etc.

Et si tu utilises PDO, ne fait pas de mysql_query…


Sephi-Chan


RE: Affichage et gestion des ressources - php_addict - 09-04-2010

idem

achète toi un livre sur le php, un autre sur le mysql, lit le wiki de ce site, t'as du boulot, courage !


RE: Affichage et gestion des ressources - Argorate - 09-04-2010

Code PHP :
<?php 
mysql_fetch_assoc
($resource);
te retourne un tableau dont les indices sont ceux des champs de ton SELECT

donc si tu veux afficher le resultat de ta requete, tu as juste a faire
Code PHP :
<?php 
echo $data['bois'];

Wink

PS: je te conseil tant que tu es en dev de rajouter un petit
Code PHP :
<?php 
or die('Erreur SQL !'.$query.'<br>'.mysql_error());
Comme ça si t'as requête est mauvaise tu le vois, tu as l'erreur et la requête elle même qui s'affiche.

Cependant ne le laisse pas une fois en ligne, car ça donne des indication sur le nom de tes champs et de tes tables, donc pas terrible pour la sécurité...


RE: Affichage et gestion des ressources - Ksama - 09-04-2010

J'ai fait comme vous m'avez conseiller, j'ai lu aussi les cours sur "mysql_query", "mysql_fetch_assoc", etc.

Seulement ça affiche seulement sa affiche la valeur Bois de la 1ère ligne, donc en gros celle du 1er joueur dans la table et non celle du joueur conncté.

Voici mon code :
Connexion à la BDD et démarrage de la session :
Code PHP :
<?php
$base
= mysql_connect ('localhost', 'root', '');
mysql_select_db ('flyi', $base);
?>

<?php
session_start
();
if (!isset(
$_SESSION['login'])) {
header ('Location: index.php');
exit();
}
?>

Requête et affichage :
Code PHP :
<?php
$query
= sprintf("SELECT bois FROM membres WHERE login = %d;", $_SESSION['login']);
$resource = mysql_query($query);
$bois = mysql_fetch_assoc($resource);

echo
$bois['bois'];
?>

J'utilise "login" car je suis sûr qu'il le rentre à la connexion mais aussi qu'avec "ID" ça marche pas ^^

Voilà, en tout cas, merci pour votre aide.


RE: Affichage et gestion des ressources - atra27 - 09-04-2010

Heeeeuuuu

Juste un conseil a la connexion, place le login en session ainsi que le ssid (pour l'utiliser aprés) et l'id du champ du joueur.

Ainsi sa permet:

1) d'afficher directement le login grace a un $Session['login']
2) de récuperer les infos du champ plus vite (champ id indéxé et unique) grace au $SESSION['id']
3) de verrifier les multis connexion:
A la connection, on place l'id de session en variable de session ET dans la bdd

Si on se reco depuis un aute pc, la reconnection change le ssid en bdd.
Ainsi avec une simple verrif on regarde a chaque page si l'id en session==l'id en bdd :p


Désolé c'est pas en rapport avec le sujet mais jprefert te le conseiller maintenant plutot que sa fasse comme spacevolution (quand j'ai repris le code, j'ai refait a peu prés toute la partie technique)



Voila! bonne chance!

Ps: regarde quand méme les tutos concernant mysql et fait un brouiillon sur papier...