Problème sur script

Eléphanteau du PHP | 28 Messages

08 janv. 2006, 18:29

Bonjour

J'ai un pb sur ce script

je voudrais enlever 15% au résultat affiché si la variable $regime1 est égale à "3"

mais je n'y arrive pas, merci de m'aider

Ma base de donnée s'appelle "tarif"

"Tarif1" est une table

ceci est mon script de connexion à ma base
$dbname='tarif';
$hostname='localhost';
$username='root';
$password='';
$cnx=mysql_connect($hostname, $username, $password);
$db= mysql_select_db( "tarif" );
puis je traite cette requete
if ($regime1 == '3')
{

$sql = "SELECT * FROM tarif1 where age=$age";
}

$requete = mysql_query( $sql, $cnx );

et je l'affiche dans un array
$requete = mysql_query( $sql, $cnx );
		while( $result = mysql_fetch_array( $requete ) )
{
echo( "<TABLE align=\"center\" cellSpacing=\"1\" cellPadding=\"5\" width=\"730\" bgColor=\"#FFFFFF\" 
      border=\"0\">\n" );
echo( "<TR bgcolor=\"#99CC00\">
 <TD width=\"200\" height=\"38\" align=\"\middle\"><div align=\"left\"><FONT 
            style=\"FONT-SIZE: 11pt\" face=\"Tahoma\" 
            color=\"#FFFFFF\"><B>Garanties/Formules</B></FONT></div></TD>");
  
echo ("<TBODY>
            <TR> 
              <TD height=\"38\" align=\"middle\" bgcolor=\"#FFFFFF\"><div align=\"left\"><FONT 
            color=\"#555766\" face=\"Tahoma\" style=\"FONT-SIZE: 10pt\"><B>Montant de votre cotisation mensuelle</B></FONT> 
                </div></TD>
              <TD width=\"94\" height=\"38\" align=\"middle\" bgcolor=\"#CCCCCC\"> <div align=\"center\"><FONT color=\"#FFFFFF\" size=\"4\" face=\"Tahoma\" 
            style=\"FONT-SIZE: 11pt\"><B>".$result["niv1"]."€</font> 
                </div></TD>
              <TD width=\"94\" height=\"38\" align=\"middle\" bgcolor=\"#CCCCCC\"> <div align=\"center\"><FONT color=\"#FFFFFF\" size=\"4\" face=\"Tahoma\" 
            style=\"FONT-SIZE: 11pt\"><B>".$result["niv1plus"]."€</font> 
                </div></TD>
              <TD width=\"94\" height=\"38\" align=\"middle\" bgcolor=\"#CCCCCC\"> <div align=\"center\"><FONT color=\"#FFFFFF\" size=\"4\" face=\"Tahoma\" 
            style=\"FONT-SIZE: 11pt\"><B>".$result["niv2"]."€</font> 
                </div></TD>
              <TD width=\"94\" height=\"38\" align=\"middle\" bgcolor=\"#CCCCCC\"> <div align=\"center\"><FONT color=\"#FFFFFF\" size=\"4\" face=\"Tahoma\" 
            style=\"FONT-SIZE: 11pt\"><B>".$result["niv3"]."€</font> 
                </div></TD>
				  
          </TBODY>
        </table>");
}

Eléphant du PHP | 440 Messages

08 janv. 2006, 20:06

Hello ,

Je suis pas sur de tout comprendre mais a priri ça devrait doner ça :
if ($regime1 == '3') 
{ 
$regime1=$regime1-$regime1%0.15 ;

$sql = "SELECT * FROM tarif1 where age=$age"; 
} 

$requete = mysql_query( $sql, $cnx ); 
C'est en faisant des erreurs et en osant demander de l'aide qu'on apprend ! Il n'est pas ridicule de ne pas savoir !

Invité
Invité n'ayant pas de compte PHPfrance

08 janv. 2006, 20:54

Merci mais c'est pas bon

si $regime1 (régime1 un est une liste déroulante avec des choix possibles)

le principe c'est; tu lis les données de la table tarif1 selon la variable age, tu multiplies la valeur par 0.85 et tu affiche le resultat dans la variable $result

voila merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 janv. 2006, 23:55

Salut,

tu parles de soustraire 15% a un "résultat" mais de quel résultat ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 28 Messages

09 janv. 2006, 00:32

Ben en fait je vais m'expliquer autrement

ma table tarif1 c'est ca

age niv1 niveau1plus niv2 niv3
18 20,77 22,93 26,41 32,42


j'ai une liste déroulante qui s'appelle regime 1

si dans la liste déroulante le cas 3 de celle ci est choisi par l'internaute je veux que le query lise les valeurs de la table tarif1 ci dessus et enlève 15% aux valeurs de celles-ci

Je dois afficher le resultat dans la variable $result

voila merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 janv. 2006, 00:59

la soustraction doit se faire que pour l'affichage ponctuel ou les nouvelles valeurs doivent etre enregistrées dans la BD ?

sinon il suffit de séléctionner les valeurs en les multipliant comme dis:
$sql = "SELECT niv1 * 0.85 as m_niv1, niv1plus * 0.85  as m_niv1plus FROM tarif1 where age=$age";
à completer :wink:

tu feras appel (par exemple) a : m_niv1 au lieu de niv1

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

09 janv. 2006, 10:40

Merci bien je vais essayer


Entre gens du Nord... ca va mieux

Eléphanteau du PHP | 28 Messages

09 janv. 2006, 12:01

Désolé ca marche pas, j'ai fais le test

je précise le calcul n'est que pour l'affichage du resulat (je modifie pas la BD)

le code :
switch ($regime1) { 
case $regime1 == '1': 
$sql = "SELECT * FROM tarif1 where age=$age";
break;
case $regime1 == '2': 
$sql = "SELECT * FROM tarif1 where age=$age";
break;
case $regime1 == '3': 
$sql = "SELECT niv1 * 0.85 as m_niv1, niv1plus, niv2, niv3 FROM tarif1 where age=$age";
break;

}
j'appelle dans mon tableau "m_niv1" et j'ai une erreur "Notice: Undefined index: m_niv1 in c:\sites internet\site\result.php on line 95"




<TD width=\"94\" height=\"38\" align=\"middle\" bgcolor=\"#CCCCCC\"> <div align=\"center\"><FONT color=\"#FFFFFF\" size=\"4\" face=\"Tahoma\"
style=\"FONT-SIZE: 11pt\"><B>".$result["m_niv1"]."€</font>
</div></TD>

Eléphanteau du PHP | 28 Messages

09 janv. 2006, 12:27

Ok en fait dans le tableau quand j'appelle ma variable $result

si $regime3 est null il me met cette erreur (C'est normal car un internaute peut choisir le regime1 dans sa liste déroulante)

Eléphanteau du PHP | 28 Messages

09 janv. 2006, 14:58

ok j'ai trouvé merci bien


switch ($regime1) { 
case '1': 
$sql = "SELECT * FROM tarif1 where age=$age";
break;
case '2': 
$sql = "SELECT * FROM tarif1 where age=$age";
break;
case '3': 
$sql = "SELECT niv1 * 0.85 as niv1, niv1plus * 0.85 as niv1plus, niv2 * 0.85 as niv2, niv3 * 0.85 as niv3 FROM tarif1 where age=$age";
break;
case '4': 
$sql = "SELECT niv1 * 0.85 as niv1, niv1plus * 0.85 as niv1plus, niv2 * 0.85 as niv2, niv3 * 0.85 as niv3 FROM tarif1 where age=$age";
break;
default :
    $sql = "0" ;

}

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 janv. 2006, 23:57

Entre gens du Nord... ca va mieux
Ha... si seulement :wink: :lol:

sinon tu peux simplifier le switch() puisque les cas se reroupent 2 par 2:
switch ($regime1) 
{
   case '1':
   case '2':
      $sql = "SELECT * FROM tarif1 where age=$age";
      break;
   case '3':
   case '4':
      $sql = "SELECT niv1 * 0.85 as niv1, niv1plus * 0.85 as niv1plus, niv2 * 0.85 as niv2, niv3 * 0.85 as niv3 FROM tarif1 where age=$age";
      break;
   default :
      $sql = "0" ;
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 28 Messages

10 janv. 2006, 00:10

merci bien mais quelle est la règle pour simplifier

quand tu mets case '1': vide et case '2': l'instruction


ca veut dire que l'instruction précédente (case 1) prends toujours la valeur de celle qui la suit ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 janv. 2006, 00:16

enfaite le switch parcours les différents cas (case) jusqu'à ce qu'il rencontre un "break" et donc si tu as plusieurs cas avec la meme instructioona exécuter tu les regroupes et ne met pas de break pour que les cas qui sont avant le break effectuent la meme instruction.

exemple:
<?php
switch ($i) 
{
	case 0:
	case 1:
	case 2:
	   //instruction si $i est égal à 0, 1 ou 2
	   break;
	case 3 :
	   //instruction si $i est égal à 3
	   break;
	case 5:
	case 9:
	   //instruction si $i est égal à 5 ou 9
	   break;
}
?> 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute