Calculs en php mySQL

[Résolu/Fermé]
Signaler
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
-
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
-
Bonjour à tous,

j'ai récemment posé une question sur excel pour un calcul assez compliqué que j'ai finalement réussis a formuler correctement avec l'aide de certains membres de la communauté de CCM.

Aujourd'hui j'aimerais mettre ce calcul en exécution PHP MySQL et je voulais savoir si les bases étaient les mêmes.


Le calcul était le suivant :

soit
A1 = nom
A2 = nombre
A3 = niveau défense
A4 = niveau attaque
A5 = puissance total

Alors
A5 = A2 X (A3 + A4)

Mais SI

A3 = 0 ALORS = A3 = 50
A4 = 0 ALORS = A4 = 40
A3 = 1 ALORS = A3 = 55
A4 = 1 ALORS = A4 = 45
A3 = 2 ALORS = A3 = 60
......


ca me donnait un truc comme ca :
=B2*(CHOISIR(C2+1;15;15;15;15;16;16;16;16;17;17;17;17;18;18;18;19;19;19;19;20)+(CHOISIR(D2+1;40;40;41;41;42;43;43;44;45;45;46;47;47;48;49;50;50;51;52;53;53)))



sur ma page je voudrais que ca apparaisse en formulaire

exemple :

"Nom" : nombre (sous input) X (attaque (sous menu déroulant de 0 à 20) + défense(sous menu déroulant de 0 à 20)) = Puissance

**Attaque 0 = 15
**Attaque 1 = 15
**Attaque 2 = 16
**Défense 0 = 40
**Défense 1 = 40
**Défense 2 = 42

Ect....


j'espere que je suis clair ...

en tout cas merci a tous de vous prendre la tête pour moi et a bientôt j'espère

10 réponses

Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
bon vu que je n'ai pas eu de réponse alors je lance un petit up en changeant ma question,
quelqu'un aurait il un tuto sur les calculs en php mysql s'il vous plais ? oubliez site du zero que j'ai déjà lu
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
je te répond demain matin, si personne ne l'a fait d'ici la... (J'ai juste pas le tps ce soir)...
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
892
pourquoi php mysql ? php suffit, mysql est une base de données servant en enregistrer des valeurs

voilà un chti exemple
<?php
if(isset($_POST['calculer'])){
	//le bouton a été cliqué on recupère les valeurs
	$nom=$_POST['nom'];
	$attaque=$_POST['attaque'];
	$defence=$_POST['defence'];
	
}else{
	//initialisation a vide par defaut
	$nom="";
	$attaque="";
	$defence="";
}
/*
qqs commentaires sur le formulaire ci dessous:
- action ="" la page s'appelle elle même
- si on veut que les valeurs et les choix faits subsistent au réaffichage il faut qqs petites astuces
- au départ on mets les $nom etc à vide
- dans l'input type text, value="<?php echo $nom; ?>" permet de garder le nombre saisi
- dans les select <?php if($attaque=="0") {echo 'selected';} ?> permet de conserver le choix fait
*/
?>
<html>
<body>
<form name="form1" method="post" action="">
Nom:
<input type="text" name="nom" value="<?php echo $nom; ?>" />
<br />
Attanque:
<select name="attaque">
	<option value="0" <?php if($attaque=="0") {echo 'selected';} ?> >0</option>
	<option value="1" <?php if($attaque=="1") {echo 'selected';} ?> >1</option>
	<option value="2" <?php if($attaque=="2") {echo 'selected';} ?> >2</option>
</select>
<br />
Défence:
<select name="defence">
	<option value="0" <?php if($defence=="0") {echo 'selected';} ?> >0</option>
	<option value="1" <?php if($defence=="1") {echo 'selected';} ?> >1</option>
	<option value="2" <?php if($defence=="2") {echo 'selected';} ?> >2</option>
</select>

<br /><input type="submit" name="calculer" value="Calculer" />
<br />
<?php
if(isset($_POST['calculer'])){
	//le bouton a été cliqué on fait le calcul et on affiche le resultat
	//affectation des valeurs attaque et defence en fonction des choix 0 1 2
	switch($attaque){
		case '0':
		$valeur_attaque=15;
		break;
		case '1':
		$valeur_attaque=15;
		break;
		case '2':
		$valeur_attaque=16;
		break;	
	}
	switch($defence){
		case '0':
		$valeur_defence=40;
		break;
		case '1':
		$valeur_defence=40;
		break;
		case '2':
		$valeur_defence=42;
		break;	
	}
	$puissance=$nom*$valeur_attaque*$valeur_defence;
	//affichage
	echo '<br /><br />';
	echo '<b>Puissance=</b> <input type="text" value="'.$puissance.'" readonly />'; //lecture seule donc non modifiable
	
}

?>
</form>
</body>
</html>
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
alors attends parce que la tu viens de me bluffer ... je vais l'essayer et je reviens te dire si tout se passe comme prévu en tout cas je te remercie déjà de t'être penché sur mon problème.
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
non en faite ce n'est pas bon... désolé.

Je t'explique en plus clair ce que j'aimerais faire et le pourquoi d'un besoin de BDD.
premièrement il y a 24 type de soldats diffèrent avec 20 niveau d'attaque et 20 niveau de défense donc beaucoup de données pour une seule page qui pourraient être appeler a partir d'une BDD (puis je veux apprendre a m'en servir)
deuxièmement chaque joueurs a un compte sur le site et cela doit s'afficher sur sa page profile (la je peux m'en occuper de ce coté la je gère)

prenons pour exemple pierrot :

Pierrot a donc :

250 milices / attaque niv 2 = 55 / défense niv 5 = 85
20 cavaliers / attaque niv 1 = 75 / défense niv 3 = 65
50 catapultes / attaque niv 2 = 180 / défense niv 5 = 95

le calcul donnerais alors :

puissance milices = 250 X (55 + 85)
puissance cavaliers = 20 X (75 + 65)
puissance catapultes = 50 X (180 + 95)

puissance total = puissance milices + puissance cavaliers + puissance catapultes

la puissance total de pierrot doit s'afficher sans qu'on puissent connaitre ses unités. après je fait juste un appel puissance total sur la page de pierrot ^^
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
Tout d'abord, je pars sur la fais que tu puisse rajouter des types d'armée:
ex: milices, cavaliers, catapultes, (que tu as mis en exemple) puis on pourrait imaginer que tu rajoute un jour: archers, tours ... etc...

Ces "types" sont enregistrés dans $type;
$type= array("milice","cavaliers",...);

De même, leur valeur de puissance d'attaque sont dans $attaque:
$attaque=array(2,1,...);

Le nombre dans $nombre
$nombre=array(250,20,...);

Leur défenses dans $defense
$defense =array(85,65,...);

Avant de continuer, j'ai 2 problèmes majeurs:
- Est-ce que dans ton formulaire, tu offres la possibilité d'attaquer avec plusieurs types différents? ou seulement un seul? (Je pense plusieurs)
- Quel sera l'impact sur les armées? (Affaiblissement de l'armée au total ou perte d'homme et maintient des forces (attaques et défenses des survivants?)
-Ta table ds ta bdd est-elle faite? si oui, quels sont les chps?
- Juste au cas ou, As-tu pensez à la déco du formulaire?
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
oula ... alors je n'est pas vu aussi compliqué ! simplement j'aimerais calculer des données qui sont soit dans un BDD soit directement dans le tableau si possible pour faire plus simple.


pour répondre a tes questions :

-je n'offre que le calcul dans mon formulaire
-donc pas d'impact pour les armées juste pour les joueurs qui connaitrons leurs puissance ^^
-je n'ai pas encore créé la BDD
- je n'ai pas pensé a la déco du formulaire que je préfèrerais en tableau

j'ai déjà assez de mal a comprendre les base d'un calcul en php. je me suis surement mal exprimé (comme d'hab)

je te donne le type de tableau dans lequel je veux calculer.


<table border="1">  
 <tr>  
  <td>Type</td>  
  <td>nombre</td>  
  <td>level attaque</td>  
  <td>level défense</td>  
  <td>puissance</td>  
 </tr>  
 <tr>  
  <td>milice</td>  
  <td><input type="text" name="nombre" size="4" maxlength="4"></td>  
  <td><select name="att_milice">  
       <option value="15" selected> 0</option>  
       <option value="17"> 1</option>  
       <option value="25"> 2</option>  
       <option value="29"> 3</option>  
       <option value="32"> 4</option>  
       <option value="35"> 5</option>  
      </select></td>  
  <td><select name="def_milice">  
       <option value="30" selected> 0</option>  
       <option value="36"> 1</option>  
       <option value="43"> 2</option>  
       <option value="55"> 3</option>  
       <option value="62"> 4</option>  
       <option value="69"> 5</option></td>  
  <td>puissance = nombre X (at_tmilice + def_milice)</td>  
 </tr>  
 <tr>  
  <td>cavalier</td>  
  <td><input type="text" name="nombre" size="4" maxlength="4"></td>  
  <td><select name="att_cavaliers">  
       <option value="50" selected> 0</option>  
       <option value="80"> 1</option>  
       <option value="95"> 2</option>  
       <option value="112"> 3</option>  
       <option value="122"> 4</option>  
       <option value="150"> 5</option>  
      </select></td>  
  <td><select name="def_cavalier">  
       <option value="80" selected> 0</option>  
       <option value="90"> 1</option>  
       <option value="113"> 2</option>  
       <option value="120"> 3</option>  
       <option value="129"> 4</option>  
       <option value="140"> 5</option></td>  
  <td>puissance = nombre X (att_cavalier + def_cavalier)</td>  
 </tr>  
</table>  

<br><br>  

<table border="1">  
 <tr>  
  <td>puissance total</td>  
  <td>puissance_total = puissance milice + puissance chevalier + puissance des autres type de soldats</td>  
 </tr>  




rien de plus compliquer car autant je sais faire deja pas mal de trucs en php autant je me lance pour la premiere fois dans des calculs alors je voudrais faire simple au départ pour comprendre.
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
Ok^^ merci pr ce formulaire; Au moins on part sur de bonne base.

Alors d'abord, n'oublie pas de mettre ce formulaire entre les balises:

<form name="formulaire" method="post">
...Ton formulaire...
<input type=submit value="Envoyer">
</form>


Ensuite:
On peut modifier ca:

<td>puissance = nombre X (at_tmilice + def_milice)</td>

pour remplacer cette ligne par:
<td><label name="puissance" value=""></td>

Puis rajouter cette fonction javascript dans les balises <head> de la même page:
<head>

</head>


Et rajouter :
<input type="text" name="nombre" size="4" maxlength="4" onchange="valpuissance()">
<select name="att_milice" onclick="valpuissance()">
<select name="def_milice" onclick="valpuissance()">
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
tu as oublier la fonction javascript ....
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
merci c'est cool la petite correction. il ne manque que le bout de javascript que tu as oublier ...
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
ah oui, pourtant je l'avais bien écrit; Elle 'a pas passé sans doute:

<head>
<script langage="javascript">
function valpuissance(){
document.formulaire.puissance.value=document.formulaire.nombre.value*(document.formulaire.att_milice.value+document.formulaire.def_milice.value);
}
</script>
</head>
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
ca marche pas ... j'ai rien qui s'affiche :S
ais je fait une erreur ?

<html>
<head>
<script langage="javascript">
function valpuissance()
{
document.formulaire.puissance.value = document.formulaire.nombre.value *(document.formulaire.att_milice.value + document.formulaire.def_milice.value);
}
</script> 
</head>
<body>
<form name="formulaire" method="post">
<table border="1">
	<tr>
		<td>Type</td>
		<td>nombre</td>
		<td>level attaque</td>
		<td>level défense</td>
		<td>puissance</td>
	</tr>
	<tr>
		<td>milice</td>
		<td><input type="text" name="nombre" size="4" maxlength="4" onchange="valpuissance" value=""></td>
		<td><select name="att_milice" onclick="valpuissance">
      	<option value="15" selected> 0</option>
      	<option value="17"> 1</option>
      	<option value="25"> 2</option>
      	<option value="29"> 3</option>
      	<option value="32"> 4</option>
      	<option value="35"> 5</option>
      </select></td>
		<td><select name="def_milice" onclick="valpuissance">
      	<option value="30" selected> 0</option>
      	<option value="36"> 1</option>
      	<option value="43"> 2</option>
      	<option value="55"> 3</option>
      	<option value="62"> 4</option>
      	<option value="69"> 5</option></td>
		<td><input name="puissance" value=""></td>
	</tr>
</table>
<input type=submit value="Envoyer">
</form>
</body>
</html>
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
Corrections:

<html>
<head>
<script language="javascript">

function valeurpuissance(){
document.formulaire.puissance.value=document.formulaire.nombre.value *(document.formulaire.att_milice.value+document.formulaire.def_milice.value);
}
</script>
</head>
<body>
<form name="formulaire" method="post">
<table border="1">
<tr>
<td>Type</td>
<td>nombre</td>
<td>level attaque</td>
<td>level défense</td>
<td>puissance</td>
</tr>
<tr>
<td>milice</td>
<td><input type="text" name="nombre" size="4" maxlength="4" onchange="valeurpuissance();" value=""></td>
<td><select name="att_milice" onclick="valeurpuissance();">
<option value="15" selected> 0</option>
<option value="17"> 1</option>
<option value="25"> 2</option>
<option value="29"> 3</option>
<option value="32"> 4</option>
<option value="35"> 5</option>
</select></td>
<td><select name="def_milice" onclick="valeurpuissance();">
<option value="30" selected> 0</option>
<option value="36"> 1</option>
<option value="43"> 2</option>
<option value="55"> 3</option>
<option value="62"> 4</option>
<option value="69"> 5</option></td>
<td><input type=text name="puissance" value=""></td>
</tr>
</table>
<input type=submit value="Envoyer">
</form>
</body>
</html>
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
super louloute ca marche ! franchement tu es super balèze ! merci encore
Messages postés
335
Date d'inscription
jeudi 3 juin 2010
Statut
Membre
Dernière intervention
28 novembre 2012
29
PS: Ce n'est que du javascript et du HTML.

Y a pas de PHP ni de mysql dedans... ;)
Messages postés
121
Date d'inscription
mardi 28 juillet 2009
Statut
Membre
Dernière intervention
22 janvier 2014
9
oui j'ai bien vu ^^ j'ai vu trop gros alors que j'aurais du chercher moins loin comme d'hab ! merci encore