Page 1 sur 1

Problème d'if et de else

Posté : 16 sept. 2013, 18:29
par alantheo
Bonsoir, j'ai tenté de faire un code PHP/SQL qui permet de modifier un champs d'une table pour ajouter +1 sauf si le membre n'a pas assez de sous.

En clair, j'aimerais que mon code ajoute +1 dans un champs, seulement si le champ "sous" est supérieur à 10, et que, si ce n'est pas le cas, cela affiche un message pour prévenir le membre.

J'ai réussi à tout faire sauf afficher un message d'erreur :

Voilà mon code qui fonctionne sans le message d'erreur :
<?php
             
 
//connection au serveur
$cnx = mysqli_connect( "host", "user", "pass" ) ;
  
//sélection de la base de données:
$db  = mysqli_select_db($cnx,"db") ;
 
// verification connection
if (mysqli_connect_errno($cnx)){
  echo "Connexion impossible à MySQL: " . mysqli_connect_error();
}
  
   
$id = $_GET['id'];
  
 
     
//création de la requête SQL:
$sql = "UPDATE inventaire SET ballon =(ballon+1) WHERE id=$id AND sous!=0" ;
 
//exécution de la requête SQL:
$requete = mysqli_query($cnx, $sql) or die(mysqli_error($cnx));
  
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete === TRUE){
        echo("Votre rapport sera traité dans les plus bref délais !") ;
}
else{
    echo("L'insertion à échouée") ;
}
 
//fermetuire de la connexion à SQL
mysqli_close($cnx);
?>
Et voici le code que j'ai tenté de faire pour afficher le message d'erreur, mais le problème, c'est que le message d'erreur s'affiche même si le champ est supérieur à 10, ce qui empêche l'ajout +1 :
<?php
             
 
//connection au serveur
$cnx = mysqli_connect( "host", "user", "pass" ) ;
  
//sélection de la base de données:
$db  = mysqli_select_db($cnx,"db") ;
 
// verification connection
if (mysqli_connect_errno($cnx)){
  echo "Connexion impossible à MySQL: " . mysqli_connect_error();
}
  
   
$id = $_GET['id'];
  
$sous = "SELECT sous FROM inventaire WHERE id=$id ";
   
if ($sous > 10) // oui
{
     
//création de la requête SQL:
$sql = "UPDATE inventaire SET ballon =(ballon+1) WHERE id=$id AND sous!=0" ;
 
//exécution de la requête SQL:
$requete = mysqli_query($cnx, $sql) or die(mysqli_error($cnx));
  
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete === TRUE){
        echo("Votre rapport sera traité dans les plus bref délais !") ;
}
else{
    echo("L'insertion à échouée") ;
}
  
}
else // non
{
    echo "Vous n'avez pas assez de sous !";
     
}
   
 
 
 
//fermetuire de la connexion à SQL
mysqli_close($cnx);
?>

Merci par avance de votre aide :)

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:27
par juliette
Salut,
pour ma part je sais pas trop te dire ce qui ne va pas mais ce code fonctionne:
<?php

$sous = "10";

if ($sous > 10) { // oui

//exécution de la requête SQL:
    $requete = " ";

//affichage des résultats, pour savoir si l'insertion a marchée:
    if ($requete) {
        echo("Votre rapport sera traité dans les plus bref délais !");
    }
} else { // non
    echo "Vous n'avez pas assez de sous !";
}
Le TRUE de $requete ne sert a rien, elle renverra toujours TRUE
essaye des var_dump sur tes variables pour être sur qu'elle contiennent bien ce que tu veux.

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:41
par juliette
Autre chose, ta 1er requête te sert a vérifier les disponibilités financières du client donc normalement dans ton if tu sais déjà que $sous est > a 10, alors il me semble que que dans la 2eme requête le AND sous!=0 ne sert a rien non plus...

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:46
par alantheo
Bonsoir, le code fonctionne chez moi aussi mais je veux récupérer le nombre de sous du membre, donc il me faut un SELECT.

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:48
par juliette
Désolé, je comprend pas ce que tu veux dire ???
EDIT: je crois comprendre, biensur qu'il te faut ton select, la je n'ai que initialisé la variable sous avec le genre de données qu'elle devrait contenir...
Dans ton code, sous cette ligne:
$sous = "SELECT sous FROM inventaire WHERE id=$id ";
ajoute cette ligne:
var_dump($sous);
et regarde ce qu'elle contient.

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:53
par alantheo
Merci, j'ai trouvé, il manquait des chose dont la variable de connexion !
<?php
			

//connection au serveur
$cnx = mysqli_connect( "", "", "" ) ;
 
//sélection de la base de données:
$db  = mysqli_select_db($cnx,"") ;

// verification connection
if (mysqli_connect_errno($cnx)){
  echo "Connexion impossible à MySQL: " . mysqli_connect_error();
}
 
  
$id = $_GET['id'];
 

	
if ($result = mysqli_query($cnx, 'UPDATE inventaire SET ballon =(ballon+1) WHERE id=' . intval($_GET['id']) . ' AND sous >= 10', MYSQLI_USE_RESULT))
 {
    echo ("ok !!!!");
}
 
else {
    echo ("non !!!!");
}
   
 
 
 
//fermetuire de la connexion à SQL
mysqli_close($cnx);
?>

Re: Problème d'if et de else

Posté : 16 sept. 2013, 19:53
par alantheo
Le sujet est résolu donc :)

Re: Problème d'if et de else

Posté : 16 sept. 2013, 20:20
par moogli
Modération :
Puisque ta question est résolue, je l'indique en cliquant sur le bouton "Mettre le sujet en tant que Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert situé en haut de la page à côté du titre, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)