Aller au contenu

Sujets conseillés

Posté

Bonjour tout d'abord ;)

Voila , j'ai une table mysql et j'aimerais que les champs Attaque et Défense soit égal à l 'addition de 5 autres champs est ce que c'est possible ??

Posté

Tu peux donner la description de tes tables, s'il te plait, ce sera plus facile :D

Posté

Est ce vraiment utile?

les valeurs calculées n'ont pas pour habitude d'etre stockées

si un jour tu veux afficher quelque part ton champ attaque ou defense, et bien tu va cherche tes 5 autres champs et tu les additionne...

Posté (modifié)

;) Ok dommage je vais un peu galèrer alors , va falloir que je calcule tout à la main je pensé que PHP pouvait automatisé ça mais bon , pour mon jeu vais devoir faire toutes les moyennes de tête :(

J espère que l'on a droit à mettre des images :!:

post-14-1086882259_thumb.jpg

Modifié par Anonymus
Posté

Total Manager,

Il est clair que Php peut automatiser cela... mais pas besoin de stocker ces valeurs , ni de les calculer à la main.

En Php tu peux assigner à une variable $attaque une valeur égale à la somme de 5 champs , idem pour $defense.

Dan

Posté

Tu fais :

SELECT champ1+champ2+champ3+champ4+champ5 AS nouveau_nom FROM table

Le AS permet de renommer le nouveau champ.

Lorsque tu inclus les champs, tu additionnes les valeurs que tu veux ,et tu les ajoutes au champ Attaque.

Exemple :

$query ="INSERT INTO table(champ1,champ2,champ3,champ4,champ5,attaque)

VALUES ('valeur_champ1','valeur_champ2','valeur_champ3','valeur_champ4','valeur_champ5',

'".$champ1+$champ2+$champ3+$champ4+$champ5."'";

Bon.. Y doit y avoir des erreurs, mais sinon, c'est ca, tout simplement.

Posté (modifié)

Merci je fait comment çaj'insere dans ma page

http://managerattitudes.free.fr/notes.php

Ou je rentre ce que tu m'a donné dans le Mysql de free :?:

SVP :D

$attaque ="INSERT INTO table(Passe, Tacle, Tete, Vitesse, Physique )

VALUES ('valeur_champ1','valeur_champ2','valeur_champ3','valeur_champ4','valeur_champ5',

'".$champ1+$champ2+$champ3+$champ4+$champ5."'";

Modifié par Total Manager
Posté

Désolé pour ce nouveau message mais si je veut faire

( a + b + c + d + e + f ) / 7 pour faire la moyenne comment que je fais :?:

Posté

Total Manager,

Le code que t'a donné Anonymus est à rentrer dans ta page php.

Et pour faire une moyenne de 6 variables on divise la somme par 6, pas par 7 ;)

$ma_moyenne=($var1+$var2+$var3+$var4+$var5+$var6)/6;

Si tu hésites pour cela, je te recommande de découvrir le php avec les articles du Hub: http://www.webmaster-hub.com/publication/rubrique17.html

Dan

Posté

;) Super Merci de tout coeur !!!!!!! C'est vraiment sympa d'aider les débutants comme moi merci un grand bravo !!!

Ou c'est que je peut avoir une bann 80 * 30 de votre Site ?? Svp

Posté (modifié)

Les gars si quelqu'un peut me dire exactement ou mettre le code donné par Dan et Anonymus SVP

<?
if(!$mode)
{
print'Bienvenue dans le système Notes on-line<br>Rentrer ici le mot de passe administrateur<br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="password" name="pass"> <input type="submit" name="Submit" value="Suite"></form>';
}
elseif($_POST[mode]==1 and md5($_POST[pass])=='c4f2bc55383c55b76ed5d24018e11819')
{
print'<form method="post" action="notes.php"><input type="hidden" name="mode" value="2">Nom du joueur : <input type="text" name="nom"><br>
Prénom du joueur : <input type="text" name="prenom"><br>
Poste du joueur (GB,DF,MT,AT) : <input type="text" name="poste"><br>
Club : <input type="text" name="club"><br>
Attaque :<input type="text" name="attaque"><br>
Défense :<input type="text" name="defense"><br>
Tacles : <input type="text" name="tacles"><br>
Physique : <input type="text" name="physique"><br>
Vitesse : <input type="text" name="vitesse"><br>
Flair : <input type="text" name="flair"><br>
Passe : <input type="text" name="passe"><br>
Tirs :<input type="text" name="tir"><br>
Interventions : <input type="text" name="sorties"><br>
Prise de Balle :<input type="text" name="prise"><br>
Tête : <input type="text" name="tete"><br>
Technique :<input type="text" name="controle"><br>
Dribble :<input type="text" name="dribble"><br>
Technique CF:<input type="text" name="CF"><br>
Technique Goal : <input type="text" name="techniquegoal"><br>
Réflexes : <input type="text" name="reflexe"><br><input type="submit" name="Submit" value="Suite"></form>';
}
elseif($_POST[mode]==2)
{
$req=mysql_connect('sql.free.fr',XXXXXXX,XXXXXXXX) or die ("erreur de connexion 1");
mysql_select_db(XXXXXXXX,$req) or die ("erreur de connexion réessayer plus tard");
$r2=mysql_query("SELECT * FROM joueurs where nom='$nom' and prenom='$prenom'");
$nb=mysql_num_rows($r2);
if($nb!='0')
{
print'Ce joueur a déjà été rentré dans la base';
}
else
{
mysql_query("INSERT INTO joueurs VALUES('$nom','$prenom','$poste','$club','$attaque','$defense','$tacles','$physique','$vitesse','$flair','$passe','$tir','$sorties','$prise','$tete','$controle','$dribble','$CF','$techniquegoal','$reflexe')");
print'Le joueur a été rentré dans la base <br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="hidden" name="pass" value="tmcfort"> <input type="submit" name="Submit" value="Rentrer un autre joueur"></form>';
}
}
else
{
print'Votre mot de passe n\'est pas bon , veuillez le recésir . Sinon vous n\' avez rien à faire sur cette page';
}
?>

Modifié par Dan
Posté

Pour info, je ne trouve pas cette phrase bien heureuse :

else

{

print'Votre mot de passe n\'est pas bon , veuillez le recésir . Sinon vous n\' avez rien à faire sur cette page';

}

D'autant qu'elle ne permet pas de retourner sur la page en question. Il n'y a pas de bouton 'retour' ou autre.

'recésir" s'écrit : "ressaisir".

Voilà,

Anonymus.

Posté (modifié)

J'ai fini mais j'ai une erreur chelou enfin c'est plutôt un bug !

Je rentre 20 en Tir

Et quand je vais pour voir la note ya marqué 20 en Technique :huh:

Comment je fait :lol

Modifié par Total Manager
Posté

Ici :

mysql_query("INSERT INTO joueurs VALUES('$nom','$prenom','$poste','$club','$attaque','$defense','$tacles','$physique','$vitesse','$flair','$passe','$tir','$sorties','$prise','$tete','$controle','$dribble','$CF','$techniquegoal','$reflexe')");
print'Le joueur a été rentré dans la base <br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="hidden" name="pass" value="tmcfort"> <input type="submit" name="Submit" value="Rentrer un autre joueur"></form>';

tu mets les valeurs dans un certain ordre.

Dans le plan de la table que tu donnes, les valeurs sont dans un ordre différent, d'où ton bug.

IL y a d'ailleurs pas mal de valeurs qui sont inversées, dans ton 'INSERT'.

Anonymus.

Posté (modifié)

j'ai plus aucun joueur qui s'affiche sur voir_notes.php et ca me soule

J'ai regardé ma table et les valeurs sont insérés pas dans les bons champs c'est pour ca je crois

Voila j'ai changé l'ordre d'apparition des $champ comme tu me l'avais dit maintenant je vais tester le bon fonctionnement

Modifié par Total Manager
Posté

<?
$temp=$flair+$passe+$tir+$CF+$dribble+$tete+$controle;
$defense=$tete+$tacles+$passe+$vitesse+$physique;
$attaque=$temp/1.4;
$gardien=$sorties+$prise+$techniquegoal+$reflexe+$vitesse
?>
<?
if(!$mode)
{
print'Bienvenue dans le système Notes on-line<br>Rentrer ici le mot de passe administrateur<br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="password" name="pass"> <input type="submit" name="Submit" value="Suite"></form>';
}
elseif($_POST[mode]==1 and md5($_POST[pass])=='c4f2bc55383c55b76ed5d24018e11819')
{
print'<form method="post" action="notes.php"><input type="hidden" name="mode" value="2">Nom du joueur : <input type="text" name="nom"><br>
Prénom du joueur : <input type="text" name="prenom"><br>
Poste du joueur (GB,DF,MT,AT) : <input type="text" name="poste"><br>
Club : <input type="text" name="club"><br>
Tacles : <input type="text" name="tacles"><br>
Physique : <input type="text" name="physique"><br>
Vitesse : <input type="text" name="vitesse"><br>
Flair : <input type="text" name="flair"><br>
Passe : <input type="text" name="passe"><br>
Tirs :<input type="text" name="tir"><br>
Interventions : <input type="text" name="sorties"><br>
Prise de Balle :<input type="text" name="prise"><br>
Tête : <input type="text" name="tete"><br>
Technique :<input type="text" name="controle"><br>
Dribble :<input type="text" name="dribble"><br>
Technique CF:<input type="text" name="CF"><br>
Technique Goal : <input type="text" name="techniquegoal"><br>
Réflexes : <input type="text" name="reflexe"><br><input type="submit" name="Submit" value="Suite"></form>';
}
elseif($_POST[mode]==2)
{
$req=mysql_connect('sql.free.fr','LOGIN','MOTDEPASSE') or die ("erreur de connexion 1");
mysql_select_db('managerattitudes',$req) or die ("erreur de connexion réessayer plus tard");
$r2=mysql_query("SELECT * FROM joueurs where nom='$nom' and prenom='$prenom'");
$nb=mysql_num_rows($r2);
if($nb!='0')
{
print'Ce joueur a déjà été rentré dans la base';
}
else
{
mysql_query("INSERT INTO joueurs VALUES('$nom','$prenom','$poste','$club','$attaque','$defense','$tacles','$physique','$vitesse','$tir'','$passe','$controle','$flair','$prise','$tete,'$sorties','$dribble','$CF','$techniquegoal','$reflexe','$gardien')");
print'Le joueur a été rentré dans la base <br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="hidden" name="pass" value="tmcfort"> <input type="submit" name="Submit" value="Rentrer un autre joueur"></form>';
}
}
else
{
print'Votre mot de passe n\'est pas bon , veuillez le ressaisir . Sinon vous n\' avez rien à faire sur cette page';
}
?>

Je comprend pas pkoi ca ne rentre aucun joueur dans la BDD

Posté

Ca ne rentre aucun joueur parce que tu as mis 21 champs dans ta requète, alors que tu n'as que 20 champs dans ta table.

Pour info, le $gardien n'est pas dans la table. (blessé, carton rouge ? pas de remplacant ? :D )

Après, ca devrait marcher, normalement.

Posté (modifié)

j'ai rajoute le champs gardien dans ma table :( , Je l'ai même mi hier

C'est dans ma page PHP que ça foire alors je regarde attends :lol:

Bon je comprend pas la alors , j'ai 21 champs dans ma TABLE :o

Je comprend pas ou est le problème tu voit toi Anonymous ??

Modifié par Total Manager
Posté

Au lieu de

else
{
mysql_query("INSERT INTO joueurs VALUES('$nom','$prenom','$poste','$club','$attaque','$defense','$tacles','$physique','$vitesse','$tir'','$passe','$controle','$flair','$prise','$tete,'$sorties','$dribble','$CF','$techniquegoal','$reflexe','$gardien')");
print'Le joueur a été rentré dans la base <br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="hidden" name="pass" value="tmcfort"> <input type="submit" name="Submit" value="Rentrer un autre joueur"></form>';
}

tu mets :

$query = "INSERT INTO joueurs VALUES('$nom','$prenom','$poste','$club','$attaque','$defense','$tacles','$physique','$vitesse','$tir'','$passe','$controle','$flair','$prise','$tete,'$sorties','$dribble','$CF','$techniquegoal','$reflexe','$gardien')";

$r = mysql_query($query);
echo "<br>query : ".$query;
echo"<br> result : ".$r;
echo"<br>";
print'Le joueur a été rentré dans la base <br><form method="post" action="notes.php"><input type="hidden" name="mode" value="1"><input type="hidden" name="pass" value="tmcfort"> <input type="submit" name="Submit" value="Rentrer un autre joueur"></form>';
}

Il va s'afficher une requète sql, qu'il te faut insérer dans le phpmyadmin. Là, tu auras la réponse au problème. Mais il peut y avoir plusieurs raisons. Par exemple, si la personne s'appelle :

Joe L'emmerdeur

alors l'apostrophe fera 'bugger' la requète. L'idéal est de mettre des slashes devant toutes les apostrophes. Tu as une fonction qui le fait très bien, c'est addslashes();

Il te faudrait aussi vérifier un tant soi peu tes variables. Là, tu les récupères telles quelles, et tu les insères dans la base. Mais rien ne te dit qu'un joueur n'ira pas entrer des données.. pirates.

Prends toujours un maximum de précautions lorsque tu laisses un internaute entrer du code dans ton application.

Pour tester si un chiffre est un chiffre, par exemple :

$un_million = (int)$un_million;

Là, tu es sûr que ton million n'est pas un 'string' ou un 'array', etc...

Voilà.

Posté

Ca me mets

query : INSERT INTO joueurs VALUES('Dxxx','Didier','AT','Marseille','72.857142857143','63','7','14','15','17'','14','17','15','4','13,'4','18','8','4','4','31')

result :

Le joueur a été rentré dans la base

Je rentre

INSERT INTO joueurs VALUES('Dxxx','Didier','AT','Marseille','72.857142857143','63','7','14','15','17'','14','17','15','4','13,'4','18','8','4','4','31')

ca dans ma table Mysql à chaque fois ?

Posté (modifié)

C'est pa plutôt

INSERT INTO joueurs(nom,prenom,poste,club,attaque,defense,tacles,physique,vitesse,tir,passe,

ontrole,flair,prise,tete,sorties,dribble,CF,techniquegoal,reflexe,gardien) VALUES ('Drogba','Didier','AT','Marseille','72.857142857143','63','7','14','15','17'','14','17','15','4','13,'4','18','8','4','4','31')

Modifié par Total Manager
Posté

J'ai rentré ton code et le mien et ça mets :

MySQL a répondu:

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '14 ','17 ','15 ','4 ','13,  '4',  '18',  '8',  '4',  '4',  '31'

Posté

Non, pas à chaque fois. Juste pour voir. En général, il y a un message d'erreur assez explicite qui s'affiche lorsque la requète est fausse.

Ca donne une indication assez fiable de la ligne, de l'emplacement, etc.

Quand une requète ne veut pas marcher, le mieux est de l'afficher, de la récupérer, et d'essayer pour voir si elle passe dans l'éditeur du phpmyadmin.

Pour ce qui est de ton chiffre : '72.857142857143' il serait étonnant que sql accepte de stocker un si grand nombre. Il y a de fortes chances pour qu'il te 'tronque'.

Sinon, pour ta requète, la dernière chose que je vois, c'est de mettre le nom des champs après le nom de la table. Exemple :

INSERT INTO table (champ1,champ2) VALUES ('value1','value2')

Anonymus.

Posté

Dans la séquence

'$tir'','$passe','$controle','$flair','$prise','$tete,'$sorties'

tu as un apostrophe de trop après $tir, et il t'en manques un après $tete.

Anonymus.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...