JeuWeb - Crée ton jeu par navigateur
[Résolu] Gain de ressources après clic - 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] Gain de ressources après clic (/showthread.php?tid=3725)

Pages : 1 2


[Résolu] Gain de ressources après clic - Cloudi - 24-02-2009

Bonsoir Smile

J'essaie de mettre en place un système qui permette de gagner des ressources après avoir cliqué quelque part. J'ai donc crée deux pages, une où se trouve le lien, une qui permet donc de gagner cette légendaire ressource que j'ai appelée 'truc'.

J'ai inventé pour l'occasion une table baptisée 'ressources' avec pour champs:

-id en INT
-pseudo en TEXT
-trucs en VARCHAR (sachant que pendant mes tests, les résultats les plus proches de ceux que j'attend vraiment sont apparus quand je suis en VARCHAR)

Mon code, qui est situé sur la page qu'on trouve après avoir cliqué sur le lien :

Code PHP :
<?php
session_start
();
mysql_connect("localhost","root","");
mysql_select_db("JEUWEB");

$pseudo = $_SESSION['pseudo'];
mysql_query("INSERT INTO ressources VALUES ('', '" .$pseudo. "', '')");
$query="SELECT trucs FROM ressources WHERE pseudo= '" .$pseudo. "' ";
$res=@mysql_query($query);
$champs=@mysql_fetch_array($res);
$nombre=$champs['trucs'] or die(mysql_error());

$total_points = $nombre+6; //valeur déterminé sur le principe du coup de tête
$queryy="UPDATE ressources SET trucs='$total_points' WHERE trucs='$nombre' AND pseudo= '" .$pseudo. "' ";
mysql_query($queryy);

mysql_close ();

?>

Ce que je sais, c'est que le code marche dès qu'on remplit manuellement le champs truc.
Ce que je sais aussi-merci Anthor-, c'est que le problème est qu'à la base les trucs n'existent pas.
Ce que je ne sais pas, c'est comment faire pour que les trucs existent dès le début.

Voilà mon problème Smile
J'aurai juste besoin d'une petite orientation (à moins que ça soit l'opération la plus compliquée à faire dans ce code)

Cloudi


RE: Gain de ressources après clic - My Hotel - 24-02-2009

Je comprends pas très bien ta question mais je me demande pourquoi tu crée une ligne avec le pseudo et la colonne truc vide, et qu'après tu fais une requête pour connaître le nombre de truc que tu viens d'initialiser dans la BDD à 0.

Moi je ferais un INSERT INTO ressources VALUES ('', '" .$pseudo. "', '6');

Mais je pense que j'ai pas compris ce que tu veux vraiment...


RE: Gain de ressources après clic - Nambew - 24-02-2009

Faudrait aussi enlever le pseudo de la table ressource puisque ça n'a pas d'affaire à être là, ça serait sensé être le id de l'utilisateur.


RE: Gain de ressources après clic - Cloudi - 24-02-2009

@My_Hotel : Ca marche pas, pas d'addition mais mon membre se retrouve simplement avec à la fois 6 trucs et à la fois 37 trucs (parce que j'avais fait 1(manuel)truc+6clics*6trucs)

@oxman : c'est certe beaucoup plus simple, les trucs s'additionnent bien et tout... mais ça donne ça avec à la base un membre qui a 24 trucs:

Avec 0 clic :

membre : 24 trucs

Avec 1 clic :

membre : 30 trucs
membre : 6 trucs

Avec 2 clics :

membre : 36 trucs
membre : 12 trucs
membre : 6 truc

Et ainsi de suite...

Donc maintenant faudrait quelque chose qui permette de n'ajouter des trucs à une seule id (ça m'avait de toute façon l'air assez utile)
Que fais-je? J'essaie de dire que si y a déjà un $pseudo dans la table c'est pas la peine d'en rajouter un deuxième?

Edit : Venant de lire le post Nambew, dans ce cas comment je fais pour l'id? (puisque ça arrangerait certainement le problème)


RE: Gain de ressources après clic - wild-D - 24-02-2009

je pige pas déjà pourquoi tu utilise un varchar pour stocker des entiers :/ (vu que tu ajoute +6 à trucs à chaque fois c'est donc a priori toujours un entier).

et sinon en session tu stockes pas seulement le pseudo du joueur, mais aussi son id.

tu as plus ensuite qu'à ajouter ton +6 sur l'enregistrement correspondant à l'id du joueur.
genre "UPDATE ressources SET trucs=trucs+6 WHERE id= '" .$_SESSION['id']. "' ";


RE: Gain de ressources après clic - My Hotel - 25-02-2009

Alors là je comprends pas vraiment le problème... A chaque clic, il faut que le joueur ait 6 trucs de plus (addition), ou il doit en avoir 0 avant le clic, et 6 après un ou plusieurs clics?


RE: Gain de ressources après clic - Cloudi - 25-02-2009

Ca marche pas :

Code PHP :
<?php
session_start
();
mysql_connect("localhost","root","");
mysql_select_db("JEUWEB");

$pseudo = $_SESSION['pseudo'];
$id = $_SESSION['id'];
mysql_query("INSERT INTO ressources VALUES ('".$id."', '" .$pseudo. "', '')");
$queryy="UPDATE ressources SET trucs=trucs+6 WHERE id='".$id."' AND pseudo= '".$pseudo."' ";
mysql_query($queryy);


mysql_close ();

?>

J'ai mis INT pour le nombre de trucs. C'est la deuxième requête qu'il comprend pas.
L'id dans la table s'incrémente automatiquement, j'ai par hasard essayé sans, mais j'ai toujours pas de bons résultats...

Si ça marche, c'est l'id qui est indiquée dans la table 'membres' qui devrait s'afficher? Dans ce cas il faut initialiser la variable $_SESSION lors de la connexion ou bien ça se fait tout seul?


RE: Gain de ressources après clic - Ter Rowan - 25-02-2009

si je comprends bien, à chaque fois que tu clics, tu appelles ce script
or ce script à chaque fois qu'il se lance crée une ligne (insert...)

donc supposons que la table soit vide, que tu n'es pas de problème d'id

avant le 1er clic :

table vide

1er clic
insert ==>
id, pseudo, 0

update ==>
id, pseudo, 6

2eme clic
insert ==>
id, pseudo, 6 (l'enregistrement du premier clic)
id, pseudo, 0 (l'enregistrement de l'insert)

update ==>
id, pseudo, 12
id, pseudo, 6

3eme clic
insert ==>
id, pseudo, 12 (l'enregistrement du premier clic avec déjà deux update)
id, pseudo, 6 (l'enregistrement du deuxième clic avec déjà un update)
id, pseudo, 0 (l'enregistrement de cet insert)

update ==>
id, pseudo, 18
id, pseudo, 12
id, pseudo, 6


donc normal qu'il y ait n'importe quoi dans la table

(j espère ne pas m'être trompé ^^)


RE: Gain de ressources après clic - My Hotel - 25-02-2009

Alors il faut vérifier si le joueur a déjà une ligne a son nom dans ta table, puis s'il en a une tu update en rajoutant 6 trucs, sinon tu crées une nouvelle ligne pour lui avec 6 trucs. Si c'est pas ça je m'avoue paumé Smile


RE: Gain de ressources après clic - Cloudi - 25-02-2009

Un problème en moins, un autre en plus... Comment faire venir une ligne et une seule ligne pour un pseudo?

EDIT: Merci My Hotel pour cette ultime solution
Et merci à tous, les trucs ont l'air d'affluer comme il faut Smile

Sachant que j'ai déjà le pseudo, est-ce qu'il faut aussi l'id quand même? (parce que si c'est le cas c'est pas fini alors)