Page 1 sur 1

Problème sur script

Posté : 08 janv. 2006, 18:29
par storm61
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>");
}

Posté : 08 janv. 2006, 20:06
par DarkBlue
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 ); 

Posté : 08 janv. 2006, 20:54
par Invité
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

Posté : 08 janv. 2006, 23:55
par Truc
Salut,

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

Posté : 09 janv. 2006, 00:32
par storm61
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

Posté : 09 janv. 2006, 00:59
par Truc
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

Posté : 09 janv. 2006, 10:40
par Invité
Merci bien je vais essayer


Entre gens du Nord... ca va mieux

Posté : 09 janv. 2006, 12:01
par storm61
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>

Posté : 09 janv. 2006, 12:27
par storm61
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)

Posté : 09 janv. 2006, 14:58
par storm61
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" ;

}

Posté : 09 janv. 2006, 23:57
par Truc
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" ;
}

Posté : 10 janv. 2006, 00:10
par storm61
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 ?

Posté : 10 janv. 2006, 00:16
par Truc
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;
}
?>