Aller au contenu
fingolfin

problème requête de type update...

Noter ce sujet :

Recommended Posts

Pardon petit erreur...remplace la ligne en question par :

$sql = "select * from membre where pseudo='".$_POST['pseudo']."' AND password='".$_POST['password']."'";

Modifié par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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']."'");

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par fingolfin

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

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é.

Partager ce message


Lien à poster
Partager sur d’autres sites
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é par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par fingolfin

Partager ce message


Lien à poster
Partager sur d’autres sites

À 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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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...

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouai je le ferait (sa me feras passer du stade de gros noob au stade de noob :D ) 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é par fingolfin

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

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;

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par fingolfin

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

Grillé et mieux fait par TheRec.. ;)

Modifié par sarc

Partager ce message


Lien à poster
Partager sur d’autres sites

OUI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Sa marche!!!!J'ai construit 5 maisons :snif: c'est trop beau! :fou: Encore merci à tous!!!! (donc la requête était fausse alors vu que la nouvelle marche bien) merci encore :)

Partager ce message


Lien à poster
Partager sur d’autres sites

De rien, heureux qu'on ait pu t'aider...Tu nous montreras ton jeux quand il sera fini hein ;)

Modifié par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par fingolfin

Partager ce message


Lien à poster
Partager sur d’autres sites

Poste le code qui affiche ton tableau, ça nous aidera sûrement...

Partager ce message


Lien à poster
Partager sur d’autres sites

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/>

Partager ce message


Lien à poster
Partager sur d’autres sites

D'ailleurs je me demande si c'est utile que je remete à chaque case cette ligne:

$reponse = mysql_query("SELECT * FROM membre");

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :P

Modifié par TheRec

Partager ce message


Lien à poster
Partager sur d’autres sites

OK bah alors c'est partit lol je vais m'amusez à modifier tous ce que tu dit de faire lol. merci encore lol

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×