Aller au contenu

TheRec

Hubmaster
  • Compteur de contenus

    1 777
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par TheRec

  1. Oui je retire ce que j'ai dit dans ce cas... je vais étudier ton code. Bravo en tous cas ! Cela à l'air de marcher très bien, à part le point espaces avant ponctuation cité précédemment par jeroen.
  2. Bonsoir, Bof, bof...la version lofi (allégée, voir lien tout en bas de la page) est réécrite quand même... non ?
  3. Si tu lise le manuel de PHP pour la fonction mysql_query, tu verras que cette fonction retourne une "ressource". Et donc additionner des ressources n'est en aucun cas sensé. Pour obtenir les données se trouvant dans ces ressources tu dois utiliser un fonction comme mysql_fetch_array. Puis si tu souhaite le total de TOUTES les maisons pour TOUS les memebres il faut utiliser une fonction MySQL nommée "SUM" (Somme en français). Donc cela donnerait quelque chose comme : $results = mysql_query("SELECT SUM(chaumiere) AS sum_chaumiere, SUM(dchaumiere) AS sum_dchaumiere, SUM(gchaumiere) AS sum_gchaumiere, SUM(bgchaumiere) AS sum_bgchaumiere FROM membre"); $datas = mysql_fetch_array($results); $nhabitantp = $datas['sum_chaumiere']*2 + $datas['sum_dchaumiere']*5 + $datas['sum_gchaumiere']*12 + $datas['sum_bgchaumiere']*16; ?> <p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants. Si tu veux seulement pour un membre : $results = mysql_query("SELECT chaumiere, dchaumiere, gchaumiere, bgchaumiere FROM membre WHERE id=".$_SESSION['idmembre']); $datas = mysql_fetch_array($results); $nhabitantp = $datas['chaumiere']*2 + $datas['dchaumiere']*5 + $datas['gchaumiere']*12 + $datas['bgchaumiere']*16; ?> <p> Vos habitations vous permettent de loger:<? echo $nhabitantp;?> habitants.
  4. Il ne faut pas non plus abuser, 12 minutes après ton message (une fois édité) tu n'as, selon les règle du forum, pas le droit de "remonter" un sujet... Pour ton problème... comme d'habitude, si tu met le code que tu as utilisé pour ton calcul cela nous aiderait beaucoup...là on ne sait pas si tu utilise le code que je t'ai donné, celui d'origine ou même un autre...
  5. Ce n'est pas une question de hasard ou de moment. Si tu as besoin de données de ta base de données, tu dois faire une requête. À moins que tu l'ait déjà fait précédemment dans le script et qu'il n'est pas NECESSAIRE de le refaire. Tu admeteras que redemander les données qui se trouvent déjà dans une variable à chaque fois que tu veux afficher quelque chose ne paraît pas très logique...vu que tu les as déjà... De plus si tu as utilisé $donnees = mysql_fetch_array($reponse); pour récupérer tes donnés, tu auras à faire à quelque chose comme $donnees['maison1'] .. et non juste $maison1 ...
  6. Je partais du principe que tu avais fait la requête pour obtenir tes valeurs... mais bon là c'est quand même les toutes bases de la logique...
  7. Plusieurs choses, tout d'abord cela t'affiche la cacul car tu met le tout entre guillemets. Donc PHP considère tout ce qui se trouve entre ces guillemets est une chaîne de caractères. Enlève les guillemets et ton calcul s'effectuera. Deuxièmement, tu as oublié les "$" qui doivent précéder chaque variable si tu souhaite en obtenir la valeur. Ensuite comme dans tout langage de programation il existe un précédence des opérateurs (comme en mathématique généralement ). Donc tes parenthèses sont inutiles pour PHP (bien qu'elle t'aident sûrement à te représenter le calcul). $nhabitantp = $maison1*2 + $maison2*5 + $maison3 * 12 + $maison4 * 16;?> Et finalement, tu as oublié dans ta dernièpre ligne un ";" et ajouté un s : Vos habitations vous permettent de loger:<? echo $nhabitantp; ?> habitants. Fais très attention, l'orthographe et la casse (majuscules/minuscules) sont très importants en PHP.
  8. cron est une application (Linux en général, sous Windows tu as le Plannificateur de tâche en moins performant) qui permet de programmer des tâches à intervalles régulières (plus ou moins). Par exemple l'exécution d'un script. KaRaK te conseille ceci, mais toutefois tu dois avoir un accès en mode ligne de commande sur le serveur hébergant ton fichier par exemple sur un serveur dédié... Je suppose que ce ne sera pas ton cas...tu peux également passer par un service gratuit comme http://www.webcron.org/ . Mais si tu souhaites être indépendant de tout service supplémentaire tu peux simplement vérifier que le tour en cours ne soit pas terminé avant d'effectuer une opération dans ton jeux... P.S. : On parle de crontab (en un mot) car c'est au moyen d'un fichier nommé ainsi que l'on configure cron .
  9. Dans la logique des choses, si tu as des tours tu es sensé avoir des parties. Éventuellement dans un premier temps tu n'auras qu'une seule partie en cours. Mais pour te simplifier la vie (lorsque ton jeu évoluera et qu'il y aura plus d'une partie simultanément) je vais partie du principe que tu as une table qui regroupe les parties en cours, ce n'est pas un grand mal si elle ne contient qu'un seul enregistrement au début. Donc dans cette table tu as un champ ID pour la partie, la date et l'heure (donc du type : DATETIME) à laquelle elle a démarré (je l'appelle start_date ci-après), son status actuel (en cours, en pause, fermé, ... on peut imaginer plein de choses) et éventuellement le titre de la partie ou tout autre information que tu juges nécessaire. Ensuite au moment tu affiche la partie en cours il te suffit de vérifier la différence entre la date actuelle et la date de démarrage de ta partie. Tu trouvera une mirade de fonctions pour gérer les dates dans le manuel PHP qui a une section ( http://www.php.net/manual/fr/ref.datetime.php ) dédiée à ceci, je ne vais pas développer ton code à ta place (je sais que ce n'est pas ce que tu attends, je tiens juste à le précsiser. Si la différence entre ces deux dates et heure fait plus de x minutes tu peux supprimer la partie ou la modifier et remttre les scores à 0 pour les joueurs qui y participent et incémenter un nombre de tours qui ferait l'office d'un champ...à toi de voir ou de nous dire. PS: Regarde dans les commentaire des pages du manuel de PHP, tu trouveras ton bonheur pour faire la différence entre 2 dates.
  10. L'interpreteur PHP comprends les deux mais il est conseillé d'utiliser la syntaxe longue pour l'ouverture des scripts...
  11. À moins de connaitre l'entier de la phrase et de comparer chaque mot avec l'entier à chaque fois...et de se fixer une limite de distance entre chaque occurence de mots il n'y a pas de de possibilité de changer cela...imaginez simplement que le mot peut se retouver plus loin dans la phrase modifiée et n'avoir aucun rapport avec l'occurence précédente... et en plus, je le répète, cela changerait en fonction de chaque langue...
  12. Ah oui, c'est moi qui avait mal lu ton code. Ton tableau est très bien formé ! C'est le fait que tu exécutais à nouveau la requête pour chaque cellulle qui était faux. Mais c'est réglé dans le premier code (des deux dernier...oulà, ça devient scabreux.. )., donc s'il te convient c'est bon !
  13. Quels autres tableaux ? Pour d'autres membres ? Si c'est le cas..et que tu veux afficher ce tableau pour tous les memebres tu as cette solution : <? mysql_connect("localhost","root",""); mysql_select_db("jeuxphp"); $reponse = mysql_query("SELECT * FROM membre"); if(mysql_num_rows($reponse) > 0) { while($donnees = mysql_fetch_array($reponse)) { ?> <table> <caption>Bâtiments de <?php $donnees['pseudo']; ?></caption> <thead> <tr> <th>Bâtiments économiques et habitations</th> <th>Nombre de bâtiments</th> </tr> </thead> <tbody> <tr> <td>Scieries niveau 1</td> <td><?php $donnees['scierie1']; ?></td> </tr> <tr> <td>Scieries niveau 2</td> <td><?php echo $donnees['scierie2']; ?></td> </tr> <tr> <td>Maison niveau 1</td> <td><?php echo $donnees['maison1']; ?></td> </tr> <tr> <td>Maison niveau 2</td> <td><?php echo $donnees['maison2']; ?></td> </tr> <tr> <td>Ferme niveau 1</td> <td><?php echo $donnees['ferme2']; ?></td> </tr> <tr> <td>Ferme niveau 2</td> <td><?php echo $donnees['ferme2']; ?></td> </tr> <tr> <td>Mine or niveau 1</td> <td><?php echo $donnees['mineor1']; ?></td> </tr> <tr> <td>Mine or niveau 2</td> <td><?php echo $donnees['mineor2']; ?></td> </tr> <tr> <td>Mine de fer niveau 1</td> <td><?php echo $donnees['minefer1']; ?></td> </tr> <tr> <td>Mine de fer niveau 2</td> <td><?php echo $donnees['minefer2']; ?></td> </tr> <tr> <td>Carriere de pierre niveau 1</td> <td><?php echo $donnees['minepierre1']; ?></td> </tr> <tr> <td>Carriere de pierre niveau 2</td> <td><?php echo $donnees['minepierre2']; ?></td> </tr> <tr> <td>Forge de niveau 1</td> <td><?php echo $donnees['forge1']; ?></td> </tr> <tr> <td>Forge de niveau 2</td> <td><?php echo $donnees['forge2']; ?></td> </tr> </tbody> </table> <?php } } else { ?> <p>Aucun enregistrement pour ce membre</p> <?php } ?> Si c'est ça, plus besoin de $_SESSION['idmembre'], mais je pense que tu en auras besoin pour d'autres parties de ton jeu...donc laisse le si c'est le cas...
  14. En même temps ça aidera les suivants qui chercheraient la même information... c'est un peu le but d'un forum...
  15. Le sujet c'est celui-là : http://www.webmaster-hub.com/index.php?showtopic=15318&hl= (Comme j'ai du le chercher...je le mets pour les suivants qui en aurait besoin...)
  16. Oui ... donc ce qui nous serait utile c'est le code en l'occurence Et les messages d'erreurs exacts...(bien que je me doute de ces dernières). C'est la meilleure solution si tu veux une réponse rapide... J'ai repris ton code et j'arrive à ceci. Bien entendu il faut quand même ajouter la ligne que je t'ai indiquée précédemment dans le fichier login.php (pour $_SESSION['idmembre']) : <? mysql_connect("localhost","root",""); mysql_select_db("jeuxphp"); $reponse = mysql_query("SELECT * FROM membre WHERE id=".$_SESSION['idmembre']); if(mysql_num_rows($reponse) > 0) { $donnees = mysql_fetch_array($reponse); ?> <table> <caption>Bâtiments</caption> <thead> <tr> <th>Bâtiments économiques et habitations</th> <th>Nombre de bâtiments</th> </tr> </thead> <tbody> <tr> <td>Scieries niveau 1</td> <td><?php $donnees['scierie1']; ?></td> </tr> <tr> <td>Scieries niveau 2</td> <td><?php echo $donnees['scierie2']; ?></td> </tr> <tr> <td>Maison niveau 1</td> <td><?php echo $donnees['maison1']; ?></td> </tr> <tr> <td>Maison niveau 2</td> <td><?php echo $donnees['maison2']; ?></td> </tr> <tr> <td>Ferme niveau 1</td> <td><?php echo $donnees['ferme2']; ?></td> </tr> <tr> <td>Ferme niveau 2</td> <td><?php echo $donnees['ferme2']; ?></td> </tr> <tr> <td>Mine or niveau 1</td> <td><?php echo $donnees['mineor1']; ?></td> </tr> <tr> <td>Mine or niveau 2</td> <td><?php echo $donnees['mineor2']; ?></td> </tr> <tr> <td>Mine de fer niveau 1</td> <td><?php echo $donnees['minefer1']; ?></td> </tr> <tr> <td>Mine de fer niveau 2</td> <td><?php echo $donnees['minefer2']; ?></td> </tr> <tr> <td>Carrière de pierre niveau 1</td> <td><?php echo $donnees['minepierre1']; ?></td> </tr> <tr> <td>Carrière de pierre niveau 2</td> <td><?php echo $donnees['minepierre2']; ?></td> </tr> <tr> <td>Forge de niveau 1</td> <td><?php echo $donnees['forge1']; ?></td> </tr> <tr> <td>Forge de niveau 2</td> <td><?php echo $donnees['forge2']; ?></td> </tr> </tbody> </table> <?php } else { ?> <p>Aucun enregistrement pour ce membre</p> <?php } ?> PS: L'indentation du code ne fonctionne toujours pas. Hein Dan
  17. A quel moment spécifies-tu dans ton code que tu souhaites voir uniquement les données du membre en question ? Tout d'abord, au lieu de à nouveau vérifier le pseudo et le password de l'utilisateur il te suffit de prendre l'id de l'utilisateur une fois que l'identification est faite. en dessous de : $_SESSION['pseudo'] = $data['pseudo']; $_SESSION['password'] = $data['password']; Ajoute : $_SESSION['idmembre'] = $data['id']; Puis, pour récupérer les informations depuis la table "membre", ajoute ceci aux requêtes. Je prends la première comme exemple. Modifie ceci: $reponse = mysql_query("SELECT * FROM membre"); en $reponse = mysql_query("SELECT * FROM membre WHERE id=".$_SESSION['idmembre']); Ensuite pour afficher tout ton tableau tu n'a pas besoin de refaire à chaque fois cette requête. Avec "*" tu récupère tous les champs et donc tu peux les afficher sans boucle vu que l'id du membre est unique...fait cette requête une seule fois au début et utilise ceci : if(mysql_num_rows($reponse) > 0) { //Affichage du tableau complet .. a toi de scinder tous les talbeau de ton code pour n'en faire qu'un seul.. } else { echo "Aucun enregistrement pour ce membre"; } **EDIT** La prochaine fois, utilise la balsise [ CODEBOX ] pour mettre un code aussi long s'il te plaît ;D . Non tu n'a pas besoin de le faire à chauqe fois Mais je n'ai pas attendu ta question
  18. Une petite lecture de ceci (va me dire que Oracle c'est pas "pro") devrait te faire changer d'avis... http://www.oracle.com/technology/pub/articles/hull_asp.html Si tu peux argumenter, un minimum, pour justifier tes penchants envers ASP.NET ça me fera plaisir de te lire..si c'est juste une affirmation du genre "c'est Microsoft, donc c'est pro", je n'enterais pas dans ce débat...
  19. Poste le code qui affiche ton tableau, ça nous aidera sûrement...
  20. De rien, heureux qu'on ait pu t'aider...Tu nous montreras ton jeux quand il sera fini hein
  21. Pardon..il faut que tu enlèves les apostophes autour de -> 'maison1 + $_POST['maison1']' ce qui donne : mysql_query("UPDATE membre SET maison1=maison1 + ".$_POST['maison1']." WHERE pseudo='".$_SESSION['pseudo']."' AND password='".$_SESSION['password']."'"); (Au passage c'est ce que j'avais mis comme proposition...les apostrophes sont un reste de ton ancienne requête )
  22. Comme je t'ai dit, avant de vérifier ta table il faut que ta requête UPDATE soit complète. Tu peux le vérifier comme te l'a dit sarc en faisant ceci : echo "UPDATE membre SET maison1='$maisontotale' WHERE pseudo='".$_SESSION['pseudo']."' AND password='".$_SESSION['password']."'"; Ceci sur la page de résultat de ton forumlaire ainsi tu verras si les données (entre autre $_POST['maison1']) sont bien là ... si la requête est complète et que ça ne fonctionne toujours pas, effectivement il faut voir du côté de ta base de données... une permière téable serait de nous donner la structure de ta table (tu peux la trouver en xportant la table depuis phpMyAdmin en gardant uniquement la structure.
  23. Euh je n'irais pas jusque là. On a le droit de ne pas tout savoir quand même ! Si tu trouves une solution à ton problème n'oublie pas de poster la réponse dans ce sujet, elle intéressera du monde certainement.
  24. À donner une valeur par défaut au champ du forumlaire...par example tu peux l'utiliser pour donner une valeur "classique" que l'utilisateur est supposé mettre... ou tu peux aussi l'utiliser lorsque l'utilisateur a fait une erreur et que tu réaffiche le foumlaire de cette manière les données qui étaient correctes n'ont pas besoin d'être renseignées à nouveau.
  25. Ha dans ce cas c'est un champ de ce type que tu cheches : <input type="text" name="maison1" value="valeur_par_defaut" /> (Tu peux négliger l'attribut "value" si tu ne veux pas de valeur par défaut)... Un peu d'aide sur les bases des forumlaires en HTML/XHTML : http://fr.selfhtml.org/html/formulaires/entree.htm
×
×
  • Créer...