begin process at 2012 05 31 18:56:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

utilisation de condition if


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utilisation de condition if

samedi 14 janvier 2012 à 17:24:23 | utilisation de condition if

msi079

salut je veux utiliser la condition if dans mon code mais je constate que le condition marche pas .le code marche mais ne tiens pas compte de la condition if . je suis debutant en php veuillez bien m'aider si possible mettre des commentaire pour explication .
voici mon code :
Code PHP :
<?php
 
//print_r($_POST);
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){
//include("connection.php");
//echo $id=(int)$_POST['Ncandidat'];
$id=(int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);
$sql2 = "SELECT candidat.montantT - SUM(payement.MTV) AS reste

FROM candidat,payement 
where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat='".$id."'";
/*
$query = "SELECT candidat.Ncandidat,candidat.nom,candidat.pieceP,candidat.contact,candidat.nationalite,payement.Npayement,payement.datePay,payement.MTV ".
"FROM candidat, payement ".
"WHERE candidat.Ncandidat = payement.Ncandidat";   */
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());


$res2=null;

while ($liste_etu=mysql_fetch_assoc($req2)) {
	
  //$j=$i%2;
		
  
  $res2.='<tr bgcolor=#FFFFCC>


 
  <td bgcolor="#CCCCCC"><input type="text" name="textfield" value="'. $liste_etu['reste'] .'"/></td>
  </tr>';


  
  }

}else{
$res2=null;
}
 echo $res2 = isset($res2) ? $res2 : null;
 
if($res2 == 0)
  {
     echo 'vous avez soldé !!!';
  }else 
  {
    echo 'vous navez pas encore soldé merci de bien vouloir continuer à payer';
  }
  
	
?>
dimanche 15 janvier 2012 à 03:23:40 | Re : utilisation de condition if

TychoBrahe

Salut,

Ta conditions fonctionen bien, c'est juste que tu n'as aps encore totalement compris le fonctionnement de isset. Si on résume ton code on a ceci :

Code PHP :
<?php

if (condition)
   $res = valeur;
else
   $res = null;

echo $res2 = isset($res2) ? $res2 : null;

if($res2 == 0)
   instruction;
else
   instruction;
?>

Dans ton code, quel que soit le résultat de la condition du if, tu affecte une valeur à $res. Et oui, null est une valeur, nulle mais c'est une valeur quand même. Du coup, quand après tu fais un test avec isset(), le test est toujours vrai vu que $res est définie. Tu dois remplacer isset() par un test sur null.

Second piège : l'opérateur == effectue des conversion de type. À cause de ça, 0 et null sont égaux. Pour éviter ceci, tu dois utiliser l'opérateur === qui compare également le type.

Au passage, quelques autres modifications que tu peux faire :
Code PHP :
if(isset($_POST['Ncandidat']) && !empty($_POST['Ncandidat'])){

Le isset() ne sert à rien ici vu que empty() s'en charge :
Code PHP :
if(!empty($_POST['Ncandidat'])){


Code PHP :
$id=(int)$_POST['Ncandidat'];
$id=mysql_real_escape_string($id);

Ici, c'est mysql_real_escape_string() qui est totalement inutile. En effet, tu convertis ton nombre en entier, qui sera lui même implicitement reconvertis en chaîne de caractère. Cette second conversion n'introduit aucun caractère qui ai besoin d'être échapper.
Code PHP :
$id=(int)$_POST['Ncandidat'];


Code PHP :
$sql2 = "SELECT candidat.montantT - SUM(payement.MTV) AS reste
FROM candidat,payement 
where candidat.Ncandidat = payement.Ncandidat and candidat.Ncandidat='".$id."'";

Quelques remarques ici :
- Parce que tu utilises le double quote (") et non le simple quote (') tu as une expansion qui est effectuée sur la chaîne de caractère et donc tu n'as pas besoin de concaténer plusieurs chaînes avec $id, tu peux laisser $id dans la chaîne.
- Parce que $id est un entier, ta requête SQL n'a pas besoin de le mettre entre quotes.
- Il est mieux pour la lisibiliter de se conformer à une seule case sur l'écriture des mot-clé MySQL. Et entre le lowercase et le uppercase, on préféreras le uppercase.
- Pour les jointures, utiliser un mot clé explicite est prête moins à confusion que la simple virgule.
Code PHP :
$sql2 = "SELECT candidat.montantT - SUM(payement.MTV) AS reste
FROM candidat INNER JOIN payement ON candidat.Ncandidat = payement.Ncandidat
WHERE candidat.Ncandidat=$id";


Code PHP :
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());

Attention, ne fais de l'affichage d'erreur que lorsque tu veux débugger ta requête, il ne faut jamais que l'utilisateur puisse voire l'erreur exacte :
- Parce qu'un utilisateur lambda prendra peur.
- Parce qu'un utilisateur mal intentionné peut en tirer des informations sur ta base de donnée afin d'en sous-tirer des informations ou bien sen aider pour mettre au point une injection SQL si jamais il en a la possibilité.

Code PHP :
echo $res2 = isset($res2) ? $res2 : null;

Totalement inutile.

Code PHP :
if($res2 == 0)

Tout comme je l'ai expliqué plus haut, il te faut tester sur null avec l'opérateur ===.
Code PHP :
if($res2 === null)


Cette discussion est classée dans : code, echo, condition, res2, if


Répondre à ce message

Sujets en rapport avec ce message

renommage des fichiers sélectionnés [ par DevTry ] Bonjour à tous, Débuttant en php, c'est ma 1ère question sur le forum... J'espère ne pas faire d'impairs... J'ai déjà effectué des recherches dans les Multiples conditions if [ par abdinfo6 ] Bonjour, j'ai une boucle if avec 3 conditions : [b]if (($cond1) || ($cond2) || ($cond3)) { EXECUTION DU CODE }[/b] Cependant lorsque ma condit Systeme de connexion [ par geof2810 ] Bonjour a tous, voila j'ai un code qui apparemment ne marche pas correctement je vous explique le principe et puis je vous mets le code. Donc voila Problème de boucle / accès BDD [ par satreix ] Bonsoir [^^clinoeil1], Je viens vers vous ce soir pour un problème de syntaxe selon moi mais ce pourrait être autre chose. La fonction suivante est c liste déroulante cliquable !!!! [ par apollo1990 ] bjr tout le monde, en faite j'ai rencontré un problémee à propos d'ajout d'une ligne au tableau en choisissant un nbre d'une liste déroulante, pour insertion d'image [ par chypsteur ] bonjour je suis débutant en php et je voudrais installé une news sur mon site. jusqu'à tous va bien. le probleme et que je voudrait inseré une image l inscription des clients [ par samia22 ] Bonjour a tous; j'ai un probleme lors d'inscription des clients ... ca na marche pas.. easyphp m'affiche: erreur dans la requete.. voici le code: Recuperation de variable [ par lilyy59 ] Bonjour je voudrai uploader des images pour ensuite les rappeler sur un autre page mais je voudrais que ces images porte le nom de la variable défini syntaxe a respecter [ par BLJC ] Bonjour, J'ai une question toute simple, mais je n'ai pas trouvé de réponse claire et précise, je viens donc vous voir. [^^clinoeil1] Voilà, pendant


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales