Calcul de champs selon coefficient...

cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008 - 3 févr. 2007 à 21:56
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 - 5 févr. 2007 à 18:32
Bonjour,

C'est pas evident à expliquer, mais surement assez simple a ecrire en php... J'aimerais, qu'un code php recupere les données (numériques) x y ou x y z ainsi qu'un montant (numerique) S d'un formulaire et calcul la marge du montant (multiplié par le nombre de données) par rapport au deux ou trois données inserées dans le formulaire.

Pour etre clair dans son utilisation (pronostics sportifs):
Je met 2 dans la case x et 2.25 dans la case y et dans la case S je met 10 (euros).
J'aimerais que le script calcul de cette facon -->
10 euros * 2 = 20 (case x)
10 * 2.25 = 22,5 (case y)
10 * 2 = -20 (la mise)
Et qu'il imprime donc la difference:
= 2.25

...
Je me debrouille en dialogue php/sql et quelques autres trucs mais alors pour faire ca je vois pas du tout si quelqu'un saurait m'expliquer ...

Merci mille fois.

14 réponses

cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 10:29
bonjour,
la différence entre quoi et quoi?
Parce qu'ici je comprends la différence de case y - case x et encore en valeur absolue
merci.
0
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008
4 févr. 2007 à 12:51
... Et bien la difference entre la valeur x et y par rapport à S, que le resultat soit positif ou negatif...
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 13:13
re,
pour être clair, voici la page de saisie tel que je l'ai comprise.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
$val_x = "";
$val_y = "";
$val_z = "";
$montant = "0.00";
?>
<html>
<head>
 <title>index</title>
</head>




Partie formulaire

<form action="index.php" method="post" name="saisie" id="saisie">
<label>Valeur X :&amp;nbsp;</label>">

<label>Valeur Y :&amp;nbsp;</label>">

<label>Valeur Z :&amp;nbsp;</label>">

<label>Montant :&amp;nbsp;</label>">&amp;nbsp;&amp;euro;


</form>

</html>

Tu peux la tester sous easyPhp si il est installé sur ta machine
je t'envoie le traitement après
Cordialement
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 13:17
ps : rajoute ceci dans la forme :"

"
c'est mieux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 14:05
voici ce que je te propose, à la vue des éléments que tu donnes.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
if(isset($_POST['val_x']) && $_POST['val_x'] != "") $val_x = $_POST['val_x']; else $val_x = "";
if(isset($_POST['val_y']) && $_POST['val_y'] != "") $val_y = $_POST['val_y']; else $val_y = "";
if(isset($_POST['val_z']) && $_POST['val_z'] != "") $val_z = $_POST['val_z']; else $val_z = "";
if(isset($_POST['montant']) && $_POST['montant'] != "") $montant = $_POST['montant']; else $montant = "0.00";
?>
<html>
<head>
 <title>index</title>
</head>



Partie formulaire

<form action="index.php" method="post" name="saisie" id="saisie">
<label>Valeur X :&nbsp;</label>">

<label>Valeur Y :&nbsp;</label>">

<label>Valeur Z :&nbsp;</label>">

<label>Montant :&nbsp;</label>">&nbsp;&euro;

</form>

Partie traitement

<?php
//initialisation du montant total
$montant_total = 0;
//initialisation de la variable compteur
$n = 0;
//incrémentation du compteur en fonction des val x, y, z, etc si elles sont renseignées
//fonction à répéter autant de fois qu'il y a des variables x, y, z et autres
//et calcul de la valeur en fonction de la mise, différente de 0.00
if($montant != "0.00")
{
 if($val_x != "")
 {
 $n +=1;
 //calcul de la valeur de la mise pour x
 $mise_x = $montant*$val_x;
 $montant_total += $mise_x;
 }
 if($val_y != "")
 {
 $n +=1;
 //calcul de la valeur de la mise pour x
 $mise_y = $montant*$val_y;
 $montant_total += $mise_y;
 }
 if($val_z != "")
 {
 $n +=1;
 //calcul de la valeur de la mise pour z
 $mise_z = $montant*$val_z;
 $montant_total += $mise_z;
 }
echo "Nombre de champs renseignés : ".$n."

";
//calcul de la mise et vérification


$mise = $montant*$n;
echo "Montant de la mise initiale totale : ".$mise."&nbsp;&euro;

";
}
if(isset($mise_x))echo "Montant pour X : ".$mise_x."

";
if(isset($mise_y))echo "Montant pour Y : ".$mise_y."

";
if(isset($mise_z))echo "Montant pour Z : ".$mise_z."

";
echo "Montant total misé : ".$montant_total."

";
//calcul de la différence avec la mise initiale totale
$dif = $montant_total-$mise;
echo "Différence du montant total misé avec la mise initiale totale : ".$dif."

"
?>

</html>
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 15:47
encore lui,
J'ai modifié la partie traitement et j'ai rajouté une fonction de vérification des champs. Elle vérifie si les champs sont bien remplis avec des caractères numériques.

Partie traitement

<?php
//Fonction de vérification de la validité des champs
function valid_chiffre($chiffre)
{
global $chiffre_ok;
 if(eregi("^[0-9]{1,5}$",$chiffre))
 {
 $chiffre_ok = true;
 return $chiffre_ok;
 }
 else
 {
 $chiffre_ok = false;
 }
}
valid_chiffre($val_x);
if($chiffre_ok == false){echo "La valeur de X n'est pas un chiffre!
";exit;}
valid_chiffre($val_y);
if($chiffre_ok == false){echo "La valeur de Y n'est pas un chiffre!
";exit;}
valid_chiffre($val_z);
if($chiffre_ok == false){echo "La valeur de Z n'est pas un chiffre!
";exit;}
//initialisation du montant total
$montant_total = 0;
//initialisation de la variable compteur
$n = 0;
//incrémentation du compteur en fonction des val x, y, z, etc si elles sont renseignées
//fonction à répéter autant de fois qu'il y a des variables x, y, z et autres
//et calcul de la valeur en fonction de la mise, différente de 0.00
if($montant != "0.00")
{
 if(!eregi("^[0-9]{1,5}$",$montant))
 {
 echo "La valeur saisie pour le montant n'est pas un chiffre
";
 exit;
 }
 else
 {  
 if($val_x != "")
  {
   $n +=1;
   //calcul de la valeur de la mise pour x
   $mise_x = $montant*$val_x;
   $montant_total += $mise_x;
  }
  if($val_y != "")
  {
   $n +=1;
   //calcul de la valeur de la mise pour x
   $mise_y = $montant*$val_y;
   $montant_total += $mise_y;
  }
  if($val_z != "")
  {
   $n +=1;
   //calcul de la valeur de la mise pour x
   $mise_x = $montant*$val_z;
   $montant_total += $mise_z;
  }
 echo "Nombre de champs renseignés : ".$n."

";
 //calcul de la mise et vérification
 $mise = $montant*$n;
 echo "Montant de la mise initiale totale : ".$mise."&nbsp;&euro;

";
 }
}
else
{
echo "Vous n'avez pas misé!
";
exit;
}


if(isset($mise_x))echo "Montant pour X : ".$mise_x."

";
if(isset($mise_y))echo "Montant pour Y : ".$mise_y."

";
if(isset($mise_z))echo "Montant pour Z : ".$mise_z."

";
if(isset($montant_total))echo "Montant total misé : ".$montant_total."

";
//calcul de la différence avec la mise initiale totale
$dif = $montant_total-$mise;
echo "Différence du montant total misé avec la mise initiale totale : ".$dif."

"
?>
0
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008
4 févr. 2007 à 16:31
Merci mais je me suis mal exprimer en fait ... la somme S (mise) est plutot divisé par deux ou trois (x, y ou x, y et z) puis repartie selon le gain maximum si vous voulez... oui car si x est gagnant alors y est perdant et vice versa et dans le cas de x, y et z alors il n'y a qu'un gagnant sur trois donc les deux autres (paris) ne s'ajoute pas au "gain"...

En clair: mettons France x Portugal

formulaire:
x c'est la France qui gagne (valeur de x = 1.90)
y c'est le nul ( valeur de y = 2.5)
la somme S (mise) = 100 (euros)

resultat:
donc il faut diviser par deux ou trois la somme S le mieux possible (2 chiffres apres la virgule max) de facon a ce que le gain (sachant qu'il n'y a qune valeur correct) soit le plus positif possible. Donc il faut inscire en resultat combien miser pour  chaque valeur de facon a  avoir le meilleur ratio gain (de facon a couvrir la valeur perdu).
Ici:
Mise: 100 euros
France: 60 x 1.9 = 114
Nul 40 x 2.5 = 100
Gains possibles: 14
(en gros)

Merci encore.
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 16:57
ça s'obscurci vachement!
donc reprenons depuis le début,
j'ai le choix pour un match de foot par exemple France Portugal
de miser :
1) pour la France gagnante, seule (une seule case renseignée)
2)Pour la F gagnante, et le P gagnant (deux cases renseignées)
3)Pour la F gagnante, et le P gagnant et le match nul (trois cases renseignées). 
Question comment est fixé le barème?
(valeur de x et de y ?)
C'est le client qui le fixe, comme dans mon premier envoi?
Ou ne vaudrait-il pas mieux faire une serie de case à cocher
France gagnante
Portugal gagnant
Match Nul
Mise totale
répartition de la mise entre les trois choix en % (si trois choix , sinon en fonction du nombre de choix et toujours en %)
et si j'ai choisi les options France gagnante et match nul
mon gain excompté sera égal à :
ce que j'aurai gagné pour la France gagnante - ce que j'aurai gagné en cas de match nul?
Est cela?
c'est difficile de programmer quand on ne comprend pas bien la demande.
PS : Important, Sais tu que la France à une législation particulière en ce qui concerne les jeux d'argent? Donc gaffe à la loi!
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 17:06
re,
si tu peux envoi ta page html d'affichage comme tu la conçois.
Merci
0
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008
4 févr. 2007 à 17:22
Oui, ne vous inquietez pas, je connais bien la position de la France sur le sujet, cela dit, cote et match est un jeu de la Francaise des jeux qui pourrait necessiter ce type d'application.

Revenons-en à nos moutons:
Vous avez bien compris oui en effet... Si vous voulez vous pouvez suivre ce lien pour que cela soit plus clair pour vous: https://www.bwin.com/betsnew.aspx?leagueIDs=4131,4132

Le calcul doit pouvoir se faire pour 2 ou trois valeurs (celles-ci sont fixé par le site de paris sportifs ou le jeu sportif). Le choix en pourcentage mais aussi en numeraire car il faut savoir quoi inserer precisement comme chiffre.

Cette application permet surtout le paris en direct car les cotes evoluent constamment durant la rencontre.

Je joue en prenant un risque, je ne joue pas le nul donc je voudrais savoir comment repartir mes 100 euros en deux partis de la facon la plus avantageuse, si je coupe en 50/50 ca ne sera pas aussi bien que de mettre 60/40Formulaire (1 equipe qui recoit, X nul et 2 = Equipe visiteuse):

- case1 (1.90)
- caseX (2.25)
- case2 (3.50)
- caseS (100)
je ne renseigne que les deux cases 1 et 2 etant donner que je ne joue que deux choix, et la case somme avec le montant mis en jeu

Resultat:

Mise de 100 euros
- case1 --> 65.5x1.9 --> 123.5 euros
- caseX --> 0 --> 0
- case2 --> 34.5x3.5 --> 120.75 euros
Gains maximum possible: 23.5 euros

Mais il est vrai qu'il est  difficile de concevoir ca etant donné qu'il y a possibilités de parier sur 2 ou 3 possibilités, ca rend l'explication plus difficile. Disons que c'est surtout utile pour x et y dans la majorité des cas.

Merci,
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 17:37
re,
donc, le but est de savoir quel sera mon gain si je fais un pari à choix multiple, en fonction de ma répartition de la mise globale pour chaque choix et ce en fonction du rapport possible pour chaque choix?
En sachant que mon gain théorique sera soit égal à zéro (aucun choix valide), soit amputé du gain du mauvais choix.
Ai-je bien traduit ta pensée?
Si cela était le cas, on rentre dans le cadre d'un applicatif complet, qui ne se crée pas comme ça et qui généralement se paye.
Pour le temps réel il faut utiliser des flux rss et développer en AJAX.
Je veux bien te donner des pistes mais pas pour le faire comme ça.
0
cyse Messages postés 18 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 10 décembre 2008
4 févr. 2007 à 17:58
Oui c'est bien ca pourtant... hum .. mais j'ai deja vu un formulaire de ce type est ca ne paraissait pas etre grand chose à premiere vue (le lien n'est plus valable c'est bien domamge), loin de necessiter le developpement d'une tel application... Ce que vous m'avez communiqué comme code au debut de ce topic est pas loin d'etre bon pour un premier calcul de cote ... comment faire en sorte qu'il donne le vrai montant gagné tout en enlevant la mise de la ou des valeur(s) perdantes ?

Et sinon dans le sens inverse (comme jessai de vous lexpliquez) pour seulement x et y (2 valeurs) ca n'est pas possible simplement avec quelques lignes en php ?
x = 2.25
y = 1.90
S = 100

Resultat:
Mise (S) = 100x 2.25x45 103y 1.90x56 102
Gain maximum possible: 3

En tout cas merci beaucoup d'avoir pris le temps de m'ecouter,

Bien cordialement,
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
4 févr. 2007 à 18:08
bon,
je te ponds un script a minima.
0
cs_Springer Messages postés 85 Date d'inscription lundi 14 juillet 2003 Statut Membre Dernière intervention 14 mars 2007 1
5 févr. 2007 à 18:32
bonjour,
voici comme je te l'avais dit une façon de faire.
On peut l'amèliorer mais c'est une base de travail
Je te conseille donc de l'étudier et de la transformer à ta convenance
['code']
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php
$cote_A = 1.90;
$cote_B = 3.50;
$cote_N = 2.25;
?>
<html>
<head>
 <title>Evaluation des gains</title>
<style>
<!--
label {width: 150px;}
span {margin-left: 10px;}
span.cote {width: 70px; color: red;}
span.mise {color: black;}
.intitule {width: 20px; margin-right: 5px;}
.result {font-weight: bold;}
ul {list-style-type: none;}
li {font-size: 1.2em;font-weight: bold;}
.gain {color: #ff3300;}
//-->
</style>
</head>



Choix des jeux

<form action="index.php" method="post" name="choixJeux" id="choixJeux">
">
">
">
<label>Equipe A gagne </label>cote : <?php echo $cote_A ?><label class="intitule">Mise</label>&nbsp;&euro;


<label>Equipe B gagne </label>cote : <?php echo $cote_B ?><label class="intitule">Mise</label>&nbsp;&euro;


<label>Match nul </label>cote : <?php echo $cote_N ?><label class="intitule">Mise</label>&nbsp;&euro;

</form>

<?php
$mise_A = $_POST['mise_A'];
$mise_A = trim($mise_A);
$mise_B = $_POST['mise_B'];
$mise_B = trim($mise_B);
$mise_N = $_POST['mise_N'];
$mise_N = trim($mise_N);
$total_mises = 0;
$mise_A = $_POST['mise_A'];
$mise_B = $_POST['mise_B'];
$mise_N = $_POST['mise_N'];
$cote_A = $_POST['cote_A'];
$cote_B = $_POST['cote_B'];
$cote_N = $_POST['cote_N'];
$A_Gagne = $_POST['A_Gagne'];
$B_Gagne = $_POST['B_Gagne'];
$Nul_Gagne = $_POST['Nul'];
$somme_selec = $_POST['A_Gagne']+$_POST['B_Gagne']+$_POST['Nul'];
//$diff = 0;
$confirm = 0;
//initialisation des variables de vérification
$mise_A_ok = false;
$mise_B_ok = false;
$mise_N_ok = false;
$vrai = 0;
$affich_ok = 1;
$msg = "";
$aff_select = "";if($A_Gagne 1)$gain_A $mise_A*$cote_A;else $gain_A = 0;if($B_Gagne 3)$gain_B $mise_B*$cote_B; else $gain_B = 0;if($Nul_Gagne 5)$gain_N $mise_N*$cote_N;else $gain_N = 0;
$somme_selec =trim($somme_selec);
if(!empty($A_Gagne) || !empty($B_Gagne) || !empty($Nul_Gagne))
{
 if($A_Gagne == 1)
 {$vrai = 1;  if($mise_A !"0.00"){$mise_A_ok true;}else{ $msg = "Vous n'avez pas saisie de mise pour équipe A gagnante";$affich_ok = 0;$confirm = 1;}
 }
 if($B_Gagne == 3)
 {$vrai += 1; if($mise_B !"0.00"){$mise_B_ok true;}else{ if(empty($msg)){$msg = "Vous n'avez pas saisie de mise pour équipe B gagnante";$affich_ok = 0;$confirm = 1;}else{ $msg .= "Vous n'avez pas saisie de mise pour équipe B gagnante";$affich_ok 0;$confirm 1;}
 }
 }
 if($Nul_Gagne == 5)
 { $vrai += 1; if($mise_N !"0.00"){$mise_N_ok true;}else{ if(empty($msg)){$msg = "Vous n'avez pas saisie de mise pour Match nul";$affich_ok = 0;$confirm = 1;}else{ $msg .= "Vous n'avez pas saisie de mise pour Match nul";$affich_ok 0;$confirm 1;}
 }
 }
}
$msg = trim($msg); if($vrai 1 || $vrai 2 || $vrai == 3)
 {  if($A_Gagne 1 && $mise_A_ok true)
  {
  $aff_select = "Equipe A gagnante, avec une mise de : ".$mise_A.", gain prévu : ".$gain_A."&nbsp;&euro;

\r\n";
  }  if($B_Gagne 3 && $mise_B_ok true)
  {
  $msg_B = "Equipe B gagnante, avec une mise de : ".$mise_B.", gain prévu : ".$gain_B."&nbsp;&euro;

\r\n";
   if(empty($aff_select))$aff_select = $msg_B; else $aff_select .= $msg_B;
  }  if($Nul_Gagne 5 && $mise_N_ok true)
  {
  $msg_N = "Match nul, avec une mise de : ".$mise_N.", gain prévu : ".$gain_N."&nbsp;&euro;

\r\n";
   if(empty($aff_select))$aff_select = $msg_N; else $aff_select .= $msg_N;
  }
 if($confirm == 1)
 {
  echo "".$msg."
Recommencez.
";
 }
}
switch($somme_selec)
{
case 1:
$total_mises = $mise_A;
//$diff = $gain_A;
break;
case 3:
$total_mises = $mise_B;
//$diff = $gain_B;
break;
case 4:
$total_mises = $mise_A+$mise_B;
//$diff = $gain_A-$gain_B;
break;
case 5:
$total_mises = $mise_N;
//$diff = $gain_N;
break;
case 6:
$total_mises = $mise_A+$mise_N;
//$diff = $gain_A-$gain_N;
break;
case 8:
$total_mises = $mise_B+$mise_N;
//$diff = $gain_B-$gain_N;
break;
case 9:
$total_mises = $mise_A+$mise_B+$mise_N;
//$diff = ($gain_A-$gain)-$gain_N;
break;
default:
echo "Vous n'avez rien saisi.
";
break;
}/**/
echo "total des mises : ".$total_mises."

";
if(!empty($aff_select) && $affich_ok == 1)
{
function affich_gain($gainBrut, $miseTotale)
{
global $aff_gain;
$val_brut = $gainBrut-$miseTotale;
$val_brut = round($val_brut, 2);//arrondi à 2 chiffres après la virgule
 if($val_brut < 0)
 {
 $aff_gain = "Vous êtes perdant de : ".$val_brut."&nbsp;&euro;";
 }
 else $aff_gain = "Vous gagnez : ".$val_brut."&nbsp;&euro;";
 return $aff_gain;
}
$msgDef = "Aucun gain";if($gain_A !0) $affich_gain_A affich_gain($gain_A, $total_mises);else $affich_gain_A = $msgDef;if($gain_B !0) $affich_gain_B affich_gain($gain_B, $total_mises);else $affich_gain_B = $msgDef;if($gain_N !0) $affich_gain_N affich_gain($gain_N, $total_mises);else $affich_gain_N = $msgDef;
echo "Vous avez sélectionné :
".$aff_select."
";
echo "total des mises : ".$total_mises."&nbsp;&euro;
";
echo "
<li>L'équipe A gagne".$affich_gain_A."</li>
<li>L'équipe B gagne".$affich_gain_B."</li>
<li>Match nul".$affich_gain_N."</li>
";
}
?>



</html>
['/code']
0
Rejoignez-nous