Mon projet et ses bug :)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mon projet et ses bug :)

par Sékiltoyai » 10 sept. 2007, 01:07

Alalala, si tu serais a coter de moi, je crois bien que je te ferais l'amour XD
Dis pas ça je risque de le prendre au mot :mrgreen:

par 4m0ni4c » 10 sept. 2007, 00:27

Alalala, si tu serais a coter de moi, je crois bien que je te ferais l'amour XD

Tout marche niquel !

ENCORE MERCI !!!!!!

Si je peux faire quoique ce soit pour te remercier dis le moi !

PS: Je met en résolu :)

par Sékiltoyai » 10 sept. 2007, 00:07

Non, tu n'as pas fait ce qu'il fallait, ce n'est pas la requète qu'il faut encadrer de guillemets, c'est le pseudo. Tu appliques des modifications au hasard, tu ne crois pas que cela peut marcher.
Ta requète actuellement, elle est interprétée de cette manière :

Code : Tout sélectionner

… WHERE pseudo= ' . test . ';
Tu ne crois pas tout de même que cela va marcher ?
Je ne vois pas où était le problème de compréhension. Au lieu d'avoir ceci :

Code : Tout sélectionner

WHERE pseudo=test;
Il faut que tu obtiennes ceci :

Code : Tout sélectionner

WHERE pseudo="test";

par 4m0ni4c » 09 sept. 2007, 23:21

Je dois vraiment pas avoir de chance moi :S
<?php
$_SESSION['pseudo'] = $pseudo;
			if( isset($_POST['ok']) ) /* Le formulaire a-t-il été posté ? */
				{
					/* On vérifie la validité des champs de formulaire ainsi que leur nature (entier, chaine, …)*/
						$ebr = empty($_POST['ebr']) ? 0 : intval($_POST['ebr']);
						$ebc = empty($_POST['ebc']) ? 0 : intval($_POST['ebc']);
						$eba = empty($_POST['eba']) ? 0 : intval($_POST['eba']);
						$ebm = empty($_POST['ebm']) ? 0 : intval($_POST['ebm']);
						$ebt = empty($_POST['ebt']) ? 0 : intval($_POST['ebt']);
						$ebc2 = empty($_POST['ebc2']) ? 0 : intval($_POST['ebc2']);
						$ebr2 = empty($_POST['ebr2']) ? 0 : intval($_POST['ebr2']);
						mysql_query("UPDATE user SET ebr = ebr+' . $ebr . ', ebc = ebc+' . $ebc . ', eba = eba+' . $eba . ', ebm = ebm+' . $ebm . ', ebt = ebt+' . $ebt . ', ebc2 = ebc2+' . $ebc2 . ', ebr2 = ebr2+' . $ebr2 . ' WHERE pseudo= ' . $pseudo . ';") or die(mysql_error());
				} 
?>
Cette fois, plus d'erreur, mais rien n'est inscrit.

Sinon il vient de me faire un truc bizare, quand j'ai actualiser la page pour tester le changement il m'a afficher :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Apache/ProXad [Jun 19 2007 23:13:59] Server at darkmythology.free.fr Port 80
Je sais pas si cela pourais avoir un rapport ou pas.

Merci de ton aide encore une fois.

par Sékiltoyai » 09 sept. 2007, 23:12

Utilise des guillemets dans les requètes. Quand tu fais :
'WHERE pseudo = ' . $pseudo . ';'
avec $pseudo à 'test'.
Il le traduit par ceci :
'WHERE pseudo = test;'
d'où l'erreur, car test n'a pas été entouré de guillemets dans la requète.

par 4m0ni4c » 09 sept. 2007, 23:02

Hum, je sens qu'on touche au but, mais il y a un dernier problème, voici le code :
<?php
			$_SESSION['pseudo'] = $pseudo;
			if( isset($_POST['ok']) ) /* Le formulaire a-t-il été posté ? */
				{
					/* On vérifie la validité des champs de formulaire ainsi que leur nature (entier, chaine, …)*/
						$ebr = empty($_POST['ebr']) ? 0 : intval($_POST['ebr']);
						$ebc = empty($_POST['ebc']) ? 0 : intval($_POST['ebc']);
						$eba = empty($_POST['eba']) ? 0 : intval($_POST['eba']);
						$ebm = empty($_POST['ebm']) ? 0 : intval($_POST['ebm']);
						$ebt = empty($_POST['ebt']) ? 0 : intval($_POST['ebt']);
						$ebc2 = empty($_POST['ebc2']) ? 0 : intval($_POST['ebc2']);
						$ebr2 = empty($_POST['ebr2']) ? 0 : intval($_POST['ebr2']);
						mysql_query('UPDATE user SET ebr = ebr+' . $ebr . ', ebc = ebc+' . $ebc . ', eba = eba+' . $eba . ', ebm = ebm+' . $ebm . ', ebt = ebt+' . $ebt . ', ebc2 = ebc2+' . $ebc2 . ', ebr2 = ebr2+' . $ebr2 . ' WHERE pseudo = ' . $pseudo . ';') or die(mysql_error());
				} 
?>
Et il m'affiche une erreur :
Unknown column 'teste' in 'where clause'
Donc si je traduis, il trouve pas la colonne (ou champs teste) teste étant le pseudo, donc il y a une erreur au niveau de WHERE pseudo = ' . $pseudo . ' je pense, mais je vois pas vraiment d'où sa peux venir :s

par Sékiltoyai » 09 sept. 2007, 22:48

Tu dois laisser le
$pseudo = $_SESSION['pseudo'];
et n'oublie pas le or die(…); après ta requète sql pour le débuggage.

par 4m0ni4c » 09 sept. 2007, 22:38

Arf toujours pas :s
Il me reste sa :
<?php
			if( isset($_POST['ok']) ) /* Le formulaire a-t-il été posté ? */
				{
					/* On vérifie la validité des champs de formulaire ainsi que leur nature (entier, chaine, …)*/
						$ebr = empty($_POST['ebr']) ? 0 : intval($_POST['ebr']);
						$ebc = empty($_POST['ebc']) ? 0 : intval($_POST['ebc']);
						$eba = empty($_POST['eba']) ? 0 : intval($_POST['eba']);
						$ebm = empty($_POST['ebm']) ? 0 : intval($_POST['ebm']);
						$ebt = empty($_POST['ebt']) ? 0 : intval($_POST['ebt']);
						$ebc2 = empty($_POST['ebc2']) ? 0 : intval($_POST['ebc2']);
						$ebr2 = empty($_POST['ebr2']) ? 0 : intval($_POST['ebr2']);
						mysql_query('UPDATE user SET ebr = ebr+' . $ebr . ', ebc = ebc+' . $ebc . ', eba = eba+' . $eba . ', ebm = ebm+' . $ebm . ', ebt = ebt+' . $ebt . ', ebc2 = ebc2+' . $ebc2 . ', ebr2 = ebr2+' . $ebr2 . ' WHERE pseudo = ' . $pseudo . ';');
				} 
?>
Après le reste à pas changer, et toujours pas d'inscription dans ma BDD.

par Sékiltoyai » 09 sept. 2007, 22:27

enlève ceci :
if (isset($_POST['ebc']) AND isset($_POST['ebr']) AND isset($_POST['ebc2']) AND isset($_POST['eba']) AND isset($_POST['ebm']) AND isset($_POST['ebt']) AND isset($_POST['ebr2'])) // Si les variables existent 
{ 
    if ($_POST['ebc'] != NULL AND $_POST['ebr'] != NULL AND $_POST['ebc2'] != NULL AND $_POST['eba'] != NULL AND $_POST['ebm'] != NULL AND $_POST['ebt'] != NULL AND $_POST['ebr2'] != NULL) // Si on a quelque chose à enregistrer 
        { 
                                                           //Mesure de sécurité. 
                                $ebc = htmlspecialchars($_POST['ebc']); 
                                $ebr = htmlspecialchars($_POST['ebr']); 
                                $ebc2 = htmlspecialchars($_POST['ebc2']); 
                                $eba = htmlspecialchars($_POST['eba']); 
                                $ebm = htmlspecialchars($_POST['ebm']); 
                                $ebt = htmlspecialchars($_POST['ebt']); 
                                $ebr2 = htmlspecialchars($_POST['ebr2']);
et cela :
        } 
}

par 4m0ni4c » 09 sept. 2007, 22:21

Arf décidément, il aura été plus coriace que ce que je pensais ce code, le problème n'est toujours pas résolu, tout d'abord voici le code :
<?php
if (isset($_POST['ebc']) AND isset($_POST['ebr']) AND isset($_POST['ebc2']) AND isset($_POST['eba']) AND isset($_POST['ebm']) AND isset($_POST['ebt']) AND isset($_POST['ebr2'])) // Si les variables existent
{
    if ($_POST['ebc'] != NULL AND $_POST['ebr'] != NULL AND $_POST['ebc2'] != NULL AND $_POST['eba'] != NULL AND $_POST['ebm'] != NULL AND $_POST['ebt'] != NULL AND $_POST['ebr2'] != NULL) // Si on a quelque chose à enregistrer
        {
                                                           //Mesure de sécurité.
                                $ebc = htmlspecialchars($_POST['ebc']);
                                $ebr = htmlspecialchars($_POST['ebr']);
                                $ebc2 = htmlspecialchars($_POST['ebc2']);
                                $eba = htmlspecialchars($_POST['eba']);
                                $ebm = htmlspecialchars($_POST['ebm']);
                                $ebt = htmlspecialchars($_POST['ebt']);
                                $ebr2 = htmlspecialchars($_POST['ebr2']);
								$_SESSION['pseudo'] = $pseudo;

if( isset($_POST['ok']) ) /* Le formulaire a-t-il été posté ? */
	{
		/* On vérifie la validité des champs de formulaire ainsi que leur nature (entier, chaine, …)*/
		$ebr = empty($_POST['ebr']) ? 0 : intval($_POST['ebr']);
		$ebc = empty($_POST['ebc']) ? 0 : intval($_POST['ebc']);
		$eba = empty($_POST['eba']) ? 0 : intval($_POST['eba']);
		$ebm = empty($_POST['ebm']) ? 0 : intval($_POST['ebm']);
		$ebt = empty($_POST['ebt']) ? 0 : intval($_POST['ebt']);
		$ebc2 = empty($_POST['ebc2']) ? 0 : intval($_POST['ebc2']);
		$ebr2 = empty($_POST['ebr2']) ? 0 : intval($_POST['ebr2']);
		mysql_query('UPDATE user SET ebr = ebr+' . $ebr . ', ebc = ebc+' . $ebc . ', eba = eba+' . $eba . ', ebm = ebm+' . $ebm . ', ebt = ebt+' . $ebt . ', ebc2 = ebc2+' . $ebc2 . ', ebr2 = ebr2+' . $ebr2 . ' WHERE pseudo = ' . $pseudo . ';');
	} 
		}
}
?>
<form action="teste.php" method="POST">
    Elfes des Bois Rodeurs : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<input type="text" name="ebr" size=5 /> Coût : 4.000 <br /><br />
    
	Elfes des Bois Chasseur : &nbsp;&nbsp;&nbsp;
	<input type="text" name="ebc" size=5 /> Coût : 7.000 <br /><br />
	
	Elfes des Bois Archer : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<input type="text" name="eba" size=5 /> Coût : 7.000 <br /><br />
	
	Elfes des Bois Magicien : &nbsp;&nbsp;&nbsp;&nbsp;
	<input type="text" name="ebm" size=5 /> Coût : 9.000 <br /><br />
	
	Elfes des Bois Traqueurs : &nbsp;&nbsp;
	<input type="text" name="ebt" size=5 /> Coût : 10.000 <br /><br />
	
	Elfes des Bois Cavalier :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	<input type="text" name="ebc2" size=5 /> Coût : 15.000 <br /><br />
	
	Elfes des Bois Ravageurs :&nbsp;&nbsp;
	<input type="text" name="ebr2" size=5 /> Coût : 18.000 <br /><br />
    <input type="submit" name="ok" value="Acheter" />
</form>
Toujours la même chose, rien ne s'inscrit dans ma base de donnée :s

Je commence à désespérer lol.

Je te remerci encore une fois si tu peux m'aider, cela ne serais pas de refus :)

Amicalement 4m0ni4c.

par Sékiltoyai » 09 sept. 2007, 21:23

Ok, c'est plus propre déjà, on a bientôt fini !
Tes modifications m'ont permi de comprendre ce que tu essayes de faire en plus, et d'identifier exactement tous tes problèmes !
En fait, je vais t'expliquer le dilemne. Tu as N formulaires, chacun permettant la modification d'une seule valeur. C'est un choix, mais laisse moi t'expliquer toutes les alternatives qui s'offrent à toi pour gérer ce que tu veux faire :

1ère solution : Tu fais un seul formulaire qui te permet d'acheter toutes les troupes d'un coup !
Tu obtiens le formulaire suivant :
<form action="…" method="post" >
    <input type="text" name="truc1" value="0" /> Acheter des truc1
    <input type="text" name="truc2" value="0" /> Acheter des truc2
    …
    <input type="submit" name="ok" value="Acheter" />
</form>
Ensuite, dans ton code php, tu vérifies si le formulaire a été posté et tu insères tout d'un coup :
if( isset($_POST['ok']) ) // Le formulaire a-t-il été posté ?
{
    $truc1 = empty($_POST['truc1']) ? 0 : intval($_POST['truc1']);
    $truc2 = empty($_POST['truc2']) ? 0 : intval($_POST['truc2']); // On vérifie la validité des champs de formulaire ainsi que leur nature (entier, chaine, …), et par défaut, on les met à 0, si un malin veut acheter une quantité de '56ok6g' de truc1 :)
    …
    mysql_query('UPDATE trucs SET truc1 = truc1+' . $truc1 . ', truc2 = truc2+' . $truc2 . ' WHERE machin = ' . $machin . ';'); // Puisque machin a acheté des trucs :D
}

2nde solution : Tu fais un formulaire qui te permet d'acheter un type de troupes.

Tu obtiens le formulaire suivant :
<form action="…" method="post" >
    Truc à acheter : <select name="truc">
        <option value="truc1">Acheter des truc1</option>
        <option value="truc2">Acheter des truc2</option>
        …
    </select>
    Quantité de trucs à acheter : <input type="text" name="nb" value="0" />
    <input type="submit" name="ok" value="Acheter" />
</form>
Et dans le code tu obtiens ceci :
if( isset($_POST['ok']) ) // Le formulaire a-t-il été posté ?
{
    $nb = empty($_POST['nb']) ? 0 : intval($_POST['nb']);
    $truc = empty($_POST['truc']) ? '' : $_POST['truc'];
    if( $nb && in_array($truc, array('truc1', 'truc2', …)) ) mysql_query('UPDATE trucs SET ' . $truc . '=' . $truc . '+' . $nb . ' WHERE machin = ' . $machin . ';');
}

3ème solution : Un champ submit pour chaque type de troupe.
Personnellement, je te déconseillerais cette solution beaucoup plus lourde lors de l'exécution (notamment on ne peut pas tout acheter d'un coup), mais bon, tu es majeur et conscentant donc bon, tu fais ce que tu veux…

Tu obtiens le formulaire suivant :
<form action="…" method="post" >
    <input type="submit" name="truc1" value="Acheter" /> Acheter des truc1
    <input type="submit" name="truc2" value="Acheter" /> Acheter des truc2
        …
</form>
Et ce code ci
$truc = array_intersect_key($_POST, array('truc1'=>'', 'truc2'=>''));
if( !empty($truc) )
{
    mysql_query('UPDATE trucs SET ' . $truc[0] . '=' . $truc[0] . '+1 WHERE machin = ' . $machin . ';');
}
Il y a encore énormément d'autres solutions, mais beaucoup sont des variantes de celles ci. Personnellement, je te conseillerais la première, qui peut être encore plus puissante que ça avec quelques modifications.

par 4m0ni4c » 09 sept. 2007, 20:41

Bon voila, j'ai rajouter ce que tu m'avais dis, et fais les modification que tu m'a dis, voila ce que j'ai maintenant :
<?php
if (isset($_POST['ebc']) AND isset($_POST['ebr']) AND isset($_POST['ebc2']) AND isset($_POST['eba']) AND isset($_POST['ebm']) AND isset($_POST['ebt']) AND isset($_POST['ebr2'])) // Si les variables existent
{
    if ($_POST['ebc'] != NULL AND $_POST['ebr'] != NULL AND $_POST['ebc2'] != NULL AND $_POST['eba'] != NULL AND $_POST['ebm'] != NULL AND $_POST['ebt'] != NULL AND $_POST['ebr2'] != NULL) // Si on a quelque chose à enregistrer
        {
                                                           //Mesure de sécurité.
                                $ebc = htmlspecialchars($_POST['ebc']);
                                $ebr = htmlspecialchars($_POST['ebr']);
                                $ebc2 = htmlspecialchars($_POST['ebc2']);
                                $eba = htmlspecialchars($_POST['eba']);
                                $ebm = htmlspecialchars($_POST['ebm']);
                                $ebt = htmlspecialchars($_POST['ebt']);
                                $ebr2 = htmlspecialchars($_POST['ebr2']);
								$_SESSION['pseudo'] = $pseudo;
								
			mysql_query("UPDATE user SET ebr='$ebr', ebc='$ebc', eba='$eba', ebm='$ebm', ebt='$ebt', ebc2='$ebc2', ebr2='$ebr2' WHERE pseudo='$pseudo'") or die(mysql_error());
}
}
?>
 
<form action="elfesBois.php" method="post">
	Elfes des Bois Rodeurs : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="text" name="ebr" size=5 /> 
			<input type="submit" value="Acheter" /> 
				Coût : 4.000
</form>
<form action="elfesBois.php" method="post">
        Elfes des Bois Chasseur : &nbsp;&nbsp;&nbsp;
                <input type="text" name="ebc" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 7.000
</form>
<form action="elfesBois.php" method="post">
        Elfes des Bois Archer : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="eba" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 8.000
</form>
<form action="elfesBois.php" method="post">
        Elfes des Bois Magicien : &nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="ebm" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 9.000
</form>
<form action="elfesBois.php" method="post">
        Elfes des Bois Traqueurs : &nbsp;&nbsp;
                <input type="text" name="ebt" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 10.000
</form>
 <form action="elfesBois.php" method="post">
        Elfes des Bois Cavalier : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="ebc2" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 15.000
</form>
 <form action="elfesBois.php" method="post">
        Elfes des Bois Ravageurs : &nbsp;&nbsp;
                <input type="text" name="ebr2" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 18.000
</form>
<br /><br /><br /><br />
 
 
Vos troupes :
<br /><br />
<?php
	  $reponse = mysql_query("SELECT ebr, ebc, eba, ebm, ebt, ebc2, ebr2 FROM user WHERE pseudo='$pseudo'")or die(mysql_error()); // Requête SQL
?>
Elfes des Bois Rodeur : 
<?php
// Avec cette boucle, on affiche la valeur de l'entrée :
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['ebr'];
?>
<br /><br />
Elfes des Bois Chasseur : 
<?php
echo $donnees['ebc'];
?>
<br /><br />
Elfes des Bois Archer : 
<?php
echo $donnees['eba'];
?>
<br /><br />
Elfes des Bois Magicien : 
<?php
echo $donnees['ebm'];
?>
<br /><br />
Elfes des Bois Traqueurs : 
<?php
echo $donnees['ebt'];
?>
<br /><br />
Elfes des Bois Cavalier : 
<?php
echo $donnees['ebc2'];
?>
<br /><br />
Elfes des Bois Ravageurs : 
<?php
echo $donnees['ebr2'];
}
?>
Mais toujours pas résolus mon problème, et cette foi çi, rien ne s'inscrit dans ma base de donnée, pourtant lorsque je le fais manuellement, je vois bien apparaître les donnée dans le tableau récapitulatif.

Sinon lorsque tu dis :
Et il y a quelquechose qui m'étonne, c'est que tu n'aies pas eu d'erreur, tu ne les aurais pas désactivées par hasard ?
Tu parle de quoi ? parce que je n'ai rien désactivé, et je n'est pas d'erreur.

Encore merci de ton aide.

Amicalement 4m0ni4c.

par Sékiltoyai » 09 sept. 2007, 19:14

Tu as oublié plusieurs de mes remarques, et non des moins importantes :
Ensuite, tu fais en 10 requètes ce que tu pourrais faire en une seule, 10 requètes, cela veut dire 10 fois plus de traffic entre ton serveur web et le serveur SQL, dix fois plus de travail pour le serveur SQL et dix fois plus de travail pour l'interpréteur PHP… Utilise la référence SQL pour savoir faire des bonnes requètes.

Enfin tu mets le traitement des requètes UPDATE à l'intérieur des formulaires, ce qui est inutile et nuit à la lisibilité. C'est à dire que les traitements, cela se fait en début de script, et l'affichage en fin de script, et tu peux même utiliser des templates pour complètement désolidariser les 2.
Enfin j'en rajoute une, c'est que tu ne vérifies pas si ton formulaire a été posté ou non, tu considères à chaque fois qu'il a été posté. Tu dois utiliser la structure isset() ou la fonction empty() sur tes variables de post pour vérifier si elles existent, et en tenir compte dans ton script. Du coup, il refait les requètes à chaque fois, même si les champs sont vides ou bien si le formulaire n'a pas été posté.
Et il y a quelquechose qui m'étonne, c'est que tu n'aies pas eu d'erreur, tu ne les aurais pas désactivées par hasard ?

par 4m0ni4c » 09 sept. 2007, 18:29

Tout d'abord je te remerci d'avoir pris de ton temps pour me répondre, ensuite par rapport à tes réponses que tu m'a donner, j'ai modifier quelque peu mon code, mais certain points reste encore pour moi très flou, voici mon code :
<?php
                                                           //Mesure de sécurité.
                                $ebc = htmlspecialchars($_POST['ebc']);
                                $ebr = htmlspecialchars($_POST['ebr']);
                                $ebc2 = htmlspecialchars($_POST['ebc2']);
                                $eba = htmlspecialchars($_POST['eba']);
                                $ebm = htmlspecialchars($_POST['ebm']);
                                $ebt = htmlspecialchars($_POST['ebt']);
                                $ebr2 = htmlspecialchars($_POST['ebr2']);
								$_SESSION['pseudo'] = $pseudo;
?>
                                                               
 
<form action="elfesBois.php" method="post">
	Elfes des Bois Rodeurs : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="text" name="ebr" size=5 /> 
			<input type="submit" value="Acheter" /> 
				Coût : 4.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebr='$ebr' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Chasseur : &nbsp;&nbsp;&nbsp;
                <input type="text" name="ebc" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 7.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebc='$ebc' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Archer : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="eba" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 8.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET eba='$eba' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Magicien : &nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="ebm" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 9.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebm='$ebm' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Traqueurs : &nbsp;&nbsp;
                <input type="text" name="ebt" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 10.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebt='$ebt' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Cavalier : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input type="text" name="ebc2" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 15.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebc2='$ebc2' WHERE pseudo='$pseudo'") or die(mysql_error());
?>
<br />
</form>
 
<form action="elfesBois.php" method="post">
        Elfes des Bois Ravageurs : &nbsp;&nbsp;
                <input type="text" name="ebr2" size=5 />
                        <input type="submit" value="Acheter" />
                                Coût : 18.000
<?php
/* On inscrit la valeur rentrer par l'utilisateur :  */
			mysql_query("UPDATE user SET ebr2='$ebr2' WHERE pseudo='$pseudo'") or die(mysql_error());

?>
<br />
</form>
<br /><br /><br />
 
 
Vos troupes :
<br /><br />
<?php
	  $reponse = mysql_query("SELECT ebr, ebc, eba, ebm, ebt, ebc2, ebr2 FROM user WHERE pseudo='$pseudo'")or die(mysql_error()); // Requête SQL
?>
Elfes des Bois Rodeur : 
<?php
// Avec cette boucle, on affiche la valeur de l'entrée :
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['ebr'];
?>
<br /><br />
Elfes des Bois Chasseur : 
<?php
echo $donnees['ebc'];
?>
<br /><br />
Elfes des Bois Archer : 
<?php
echo $donnees['eba'];
?>
<br /><br />
Elfes des Bois Magicien : 
<?php
echo $donnees['ebm'];
?>
<br /><br />
Elfes des Bois Traqueurs : 
<?php
echo $donnees['ebt'];
?>
<br /><br />
Elfes des Bois Cavalier : 
<?php
echo $donnees['ebc2'];
?>
<br /><br />
Elfes des Bois Ravageurs : 
<?php
echo $donnees['ebr2'];
}
?>
Mon problème étant toujours le même, la valeur que je rentre dans le formulaire est bien inscrite dans la base de donnée, car le tableau récapitulatif en dessous m'indique bien la valeur que je viens de rentrer, et dans ma base de donnée celle çi apparait également, le seul problème, c'est que dès que j'actualise ou que je rentre une valeur pour un autre champ, la valeur rentré précédement s'efface de la base de donnée. Donc je ne vois vraiment plus comment faire pour résoudre se problème. Si tu pouvais m'aider, ou si il y a des choses que tu ne comprends pas, je reste à ta disposition.

Merci d'avance.

par Sékiltoyai » 09 sept. 2007, 12:51

Alors, pas mal de remarques :
$requete = "INSER INTO user VALUES('".$ebr."') WHERE pseudo='".$pseudo."'";
C'est “INSERT INTO” et non “INSER INTO”. Tu as des erreurs dans tes requètes, suis ceci pour le débuggage.

Ensuite, ta méthodologie pour modifier les informations dans ta base est douteuse. Si tu veux modifier un joueur, tu ne fais pas une requète INSERT, tu fais une requète UPDATE. Changer de requète ne règlera pas le problème, bien au contraire. Et en plus de faire des requètes INSERT, tu en fais une par champ, de manière à t'assurer que cela ne marche pas :-/

Ensuite, tu fais en 10 requètes ce que tu pourrais faire en une seule, 10 requètes, cela veut dire 10 fois plus de traffic entre ton serveur web et le serveur SQL, dix fois plus de travail pour le serveur SQL et dix fois plus de travail pour l'interpréteur PHP… Utilise la référence SQL pour savoir faire des bonnes requètes.

Enfin tu mets le traitement des requètes INSERT à l'intérieur des formulaires, ce qui est inutile et nuit à la lisibilité. C'est à dire que les traitements, cela se fait en début de script, et l'affichage en fin de script, et tu peux même utiliser des templates pour complètement désolidariser les 2.

Ah oui, j'oubliais, ce code :
$requete = "INSER INTO user VALUES('".$ebr."') WHERE pseudo='".$pseudo."'";
N'exécute aucune requète…