TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) Pardon petit erreur...remplace la ligne en question par : $sql = "select * from membre where pseudo='".$_POST['pseudo']."' AND password='".$_POST['password']."'"; Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 A sa marche, (euh tu peut me dire ce que veut dire l'erreur s'il te plait ), par contre il y a une erreur qui n'était pas la avant dans le code mysql de l'habitation à cette ligne la: mysql_query("UPDATE membre SET maison1='$maisontotale' WHERE pseudo='$_SESSION['pseudo']' AND password='$_SESSION['password']'"); et c'est encore le même style d'erreur. ps:Vraimment merci de m'aider vous êtes sympas sur ce forum
Sarc Posté 28 Août 2005 Posté 28 Août 2005 PARSE ERROR, c'est une erreur de syntaxe dans ton code PHP... On ne peut pas trop mettre des variables en tableau dans une chaîne php, donc on doit la concaténer avec les points ! là pour ta ligne : mysql_query("UPDATE membre SET maison1='$maisontotale' WHERE pseudo='".$_SESSION['pseudo']."' AND password='".$_SESSION['password']."'");
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 (modifié) Encore merci à vous deux!!!! Alors j'ai remit echo $_SESSION['pseudo'] et $_SESSION['password'] et sa renvoie parfaitement le mot de passe et le nom d'utilisateur! Par contre....sa n'enregistre toujours rien dans la BDD. (et j'ai encore vérifier si les champs existait ). Pour la concaténisation ou un truc du genre lol, effectivement j'avais vu un tutos dessus sur le site du zérO mais je ne l'ai jamais utiliser je croit.... Euh tant que j'y suis, comme vous le voyez je suis un gros noob en php et autre (enfin pas trop gros quand même j'espère ) et donc j'aimerais vosu demander si vous connaissiez un bon livre pour apprendre le php (et mysql en même temps si possible). Modifié 28 Août 2005 par fingolfin
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) As-tu corrigé le champ que je t'ai demandé précédemment..et quelle "value" lui as-tu donné ? Si tu dois incrémenter ton champs de la valeur que l'utilisateur te fournit grâce à ce champ <input type="hidden">. Tu peux le faire ainsi : mysql_query("UPDATE membre SET maison1=maison1 + ".$_POST['maison1']." WHERE pseudo='".$_SESSION['pseudo']."' AND password='".$_SESSION['password']."'"); et ton champ de formulaire serait quelque chose comme : <input type="hidden" name="maison1" value="1" /> P.S.: Là je ne m'occupe pas de la sécurité pour l'instant, juste du principe... Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 Bah en faite quand je met <input type="hidden"> bah y'a plus le "cadre blanc" ou l'on écrit le nombre de maison désiré.
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) Bah en faite quand je met <input type="hidden"> bah y'a plus le "cadre blanc" ou l'on écrit le nombre de maison désiré. <{POST_SNAPBACK}> 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 Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 (modifié) Euh la value c'est pas juste pour le type "submit"? Sa sert à quoi de mettre une value pour un "cadre blanc"? Merci pour le lien Modifié 28 Août 2005 par fingolfin
TheRec Posté 28 Août 2005 Posté 28 Août 2005 À 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.
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 Ah oui valeur par défaut, oui sa me revient lol désolé (vous devez me prendre pour un *** de la pire espèce lol) Oui c'est le texte qui apparait automatiquement dans le cadre. Bon moi je retourne voire ce code pour essayer d'arriver au bout de 5 jour à enregistrer quelque chose dans cette table...
TheRec Posté 28 Août 2005 Posté 28 Août 2005 Ah oui valeur par défaut, oui sa me revient lol désolé (vous devez me prendre pour un *** de la pire espèce lol) Oui c'est le texte qui apparait automatiquement dans le cadre. Bon moi je retourne voire ce code pour essayer d'arriver au bout de 5 jour à enregistrer quelque chose dans cette table... <{POST_SNAPBACK}> 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.
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 (modifié) Ouai je le ferait (sa me feras passer du stade de gros noob au stade de noob ) Autrement personne n'aurait d'idées sur ce problème? (j'ai déjà refait deux fois la Table de ce truc mais rien n'y fait). Bon tant que je suis la à vous souler j'aimerais savoir si vous saviez pourquoi le tableaus des caractéristique du joueur affiche les entrées de tous les joueur (enfin la sa affiche les ressources de base et a coter les resssource que j'ai rajouter à partir de la BDD, par exemple: 10002000 (1000 étant les ressources de base et les 2000 les ressources ajouter a partir de la BDD)). Modifié 28 Août 2005 par fingolfin
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) 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. Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 voici ma structure: CREATE TABLE `membre` ( `id` mediumint(9) NOT NULL auto_increment, `pseudo` varchar(50) NOT NULL default '', `password` varchar(50) NOT NULL default '', `email` varchar(50) NOT NULL default '', `population` bigint(255) NOT NULL default '0', `fantassins` bigint(255) NOT NULL default '0', `cavalier` bigint(255) NOT NULL default '0', `fermier` bigint(255) NOT NULL default '0', `bucherons` bigint(255) NOT NULL default '0', `mineur` bigint(255) NOT NULL default '0', `forgerons` bigint(255) NOT NULL default '0', `chevaux` bigint(255) NOT NULL default '5', `fer` bigint(255) NOT NULL default '500', `gold` bigint(255) NOT NULL default '500', `pierre` bigint(255) NOT NULL default '500', `nourriture` bigint(255) NOT NULL default '1000', `ufermier` bigint(255) NOT NULL default '0', `umineur` bigint(255) NOT NULL default '0', `uforgerons` bigint(255) NOT NULL default '0', `ubucherons` bigint(255) NOT NULL default '0', `defense1` bigint(255) NOT NULL default '0', `defense2` bigint(255) NOT NULL default '0', `caserne1` bigint(255) NOT NULL default '0', `caserne2` bigint(255) NOT NULL default '0', `ecurie1` bigint(255) NOT NULL default '0', `ecurie2` bigint(255) NOT NULL default '0', `ferme1` bigint(255) NOT NULL default '0', `ferme2` bigint(255) NOT NULL default '0', `scierie1` bigint(255) NOT NULL default '0', `scierie2` bigint(255) NOT NULL default '0', `maison1` bigint(255) NOT NULL default '0', `maison2` bigint(255) NOT NULL default '0', `maison3` bigint(255) NOT NULL default '0', `maison4` bigint(255) NOT NULL default '0', `minefer1` bigint(255) NOT NULL default '0', `minefer2` bigint(255) NOT NULL default '0', `mineor1` bigint(255) NOT NULL default '0', `mineor2` bigint(255) NOT NULL default '0', `minepierre1` bigint(255) NOT NULL default '0', `minepierre2` bigint(255) NOT NULL default '0', `forge1` bigint(255) NOT NULL default '0', `forge2` bigint(255) NOT NULL default '0', `bois` bigint(255) NOT NULL default '1000', `abois` bigint(255) NOT NULL default '0', `agold` bigint(255) NOT NULL default '0', `afer` bigint(255) NOT NULL default '0', `anourriture` bigint(255) NOT NULL default '0', `apierre` bigint(255) NOT NULL default '0', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3;
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 (modifié) Autrement j'ai fait la vérification et sa affiche sa: UPDATE membre SET maison1='maison1 + 1' WHERE pseudo='fingolfin' AND password='sa vous regarde pas ' Donc pour le mot de passe et le pseudo c'est ok, mais pour le reste je ne sait pas si sa veut dire que c'est mauvais ou non. Euh bah oui sa doit être bon car il y a le +1 (qui se transforme en +10 si je veut 10 maisons). Modifié 28 Août 2005 par fingolfin
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) 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 ) Modifié 28 Août 2005 par TheRec
Sarc Posté 28 Août 2005 Posté 28 Août 2005 (modifié) Grillé et mieux fait par TheRec.. Modifié 28 Août 2005 par sarc
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 OUI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Sa marche!!!!J'ai construit 5 maisons :snif: c'est trop beau! Encore merci à tous!!!! (donc la requête était fausse alors vu que la nouvelle marche bien) merci encore
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) De rien, heureux qu'on ait pu t'aider...Tu nous montreras ton jeux quand il sera fini hein Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 (modifié) Bah sa marche mais par contre mon tableau lui continue à afficher la même choses pour tous les membres... (encore sa sa doit être uns histoire de $_SESSION['pseudo'] et password qu'il faut rajouter) mais sa met encore les chiffres de base et ceux modifier à côter..... Sa quand mon jeux seras finit je vous le montrerez c'est sur lol, car maintenant que je sais faire pour construire la maisons1 je vais pouvoir faire tous les autres bêtiments Modifié 28 Août 2005 par fingolfin
TheRec Posté 28 Août 2005 Posté 28 Août 2005 Poste le code qui affiche ton tableau, ça nous aidera sûrement...
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 euh ouai c'est pas bête sa lol, (je vais m'y habituer vous en faites pas) le voici: (je ne poste qu'un tableau car y'en a 4 autres fait sur exactement le même modèles): <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> <? mysql_connect("localhost","root",""); mysql_select_db("jeuxphp"); $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $reponse['scierie1'];}?></td> </tr> <tr> <td>Scieries niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['scierie2'];} ?></td> </tr> <tr> <td>Maison niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['maison1'];} ?></td> </tr> <tr> <td>Maison niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['maison2'];} ?></td> </tr> <tr> <td>Ferme niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['ferme2'];} ?></td> </tr> <tr> <td>Ferme niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['ferme2'];} ?></td> </tr> <tr> <td>Mine or niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['mineor1']; }?></td> </tr> <tr> <td>Mine or niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['mineor2'];} ?></td> </tr> <tr> <td>Mine de fer niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['minefer1'];} ?></td> </tr> <tr> <td>Mine de fer niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['minefer2'];} ?></td> </tr> <tr> <td>Carrière de pierre niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['minepierre1'];} ?></td> </tr> <tr> <td>Carrière de pierre niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['minepierre2'];} ?></td> </tr> <tr> <td>Forge de niveau 1</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['forge1'];} ?></td> </tr> <tr> <td>Forge de niveau 2</td> <td><? $reponse = mysql_query("SELECT * FROM membre"); while ($donnees = mysql_fetch_array($reponse) ) { echo $donnees['forge2'];}?></td> </tr> </tbody> </table><br/><br/><br/>
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 D'ailleurs je me demande si c'est utile que je remete à chaque case cette ligne: $reponse = mysql_query("SELECT * FROM membre");
TheRec Posté 28 Août 2005 Posté 28 Août 2005 (modifié) 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 Modifié 28 Août 2005 par TheRec
fingolfin Posté 28 Août 2005 Auteur Posté 28 Août 2005 OK bah alors c'est partit lol je vais m'amusez à modifier tous ce que tu dit de faire lol. merci encore lol
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant