Addition montant variable PHP

Fermé
Kiricouille - Modifié par jordane45 le 14/06/2015 à 02:09
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 15 juin 2015 à 00:25
Bonjour,

Je suis débutant en PHP, et j'aimerais ajouter un solde saisi à l'écran, à un autre solde déjà présent dans la base de donnée. Merci d'avance pour vos réponses.

Voici mon code :
<?php
// on teste si les variables du formulaire sont déclarées
if (isset($_POST['solde']) && isset($_POST['pseudo'])) {
 
 $req = 'SELECT $solde+.$solde. FROM utilisateurs WHERE pseudo = "'.$pseudo.'"'; 

 // lancement de la requête
 $sql = 'UPDATE utilisateurs SET solde="'.$_POST['solde'].'+'.$req.'" WHERE pseudo="'.$_POST['pseudo'].'"';

 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

 // on ferme la connexion à la base
 mysql_close();

 // un petit message permettant de se rendre compte de la modification effectuée
 echo 'Le nouveau solde est de '.$_POST['solde'].'.';
}
else {
 echo 'Les variables du formulaire ne sont pas déclarées';
}
?>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
A voir également:

3 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 14/06/2015 à 02:19
Bonjour,

Tu dois récupérer le montant présent dans ta BDD via une requête SELECT
// on récupère les variables
$pseudo = isset($_POST['pseudo'])?$_POST['pseudo']:NULL;
$solde = isset($_POST['solde'])?$_POST['solde']:0;

// on cherche l'ancien solde
 $req = 'SELECT solde FROM utilisateurs WHERE pseudo = "'.$pseudo.'"'; 
 $result = mysql_query($req) or die('Erreur SQL !'.$req.'<br />'.mysql_error());
 if($result ){
 $row = mysql_fetch_row($result);
 $ancienSolde = $row['solde'];
}else{
  $ancienSolde = 0;
}




Une fois le montant récupérer ... tu fais l'addition en PHP.

$nouveauSolde = $ancienSolde + $solde ;

Puis.. pour finir .. tu mets à jour le montant dans ta BDD
 // lancement de la requête
 $sql = 'UPDATE utilisateurs SET solde="'.$nouveauSolde .'" WHERE pseudo="'.$pseudo.'"';

 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());





Cordialement,
Jordane
1
Salut Jordane 45,
Merci beaucoup de ta réponse Jordane, malheureusement, je n'ai pas le résultat escompté sur ma base de donnée. J'ai enlevé mon code précédent et l'ai remplacé par le tien. Quand je tape un nombre, mettons 9, ça me le met dans la base de donnée, mais quand la seconde d'après, je retape un autre numéro, mettons 7, ça m'affiche 7, et non 9 + 7, soit 16.

Pour l'information, je te donne mon code complet ;), mon problème se trouve à rechargement.php :
Site.php :
<!DOCTYPE html>
<html lang='fr'>
<head>
 <meta charset='utf-8'>
 <title>Site de rechargement</title>
</head>
<body>
 <h2> Bienvenue dans l'ebauche de notre site de paiement sans contact</h2>
 <form>
 <ul>
        <li><a href="http://localhost:8000/login.php">Se connecter</a></li>
        <li><a href="http://localhost:8000/register.php">S'enregistrer</a></li>
    </ul>
 </form>

</body>
</html>

register.php :
<?php
 include'fonctions.php';
 include'config.php';
 
?>
<!DOCTYPE html>
<html lang='fr'>
<head>
 <meta charset='utf-8'>
 <title>Formulaire d'enregistrement</title>
</head>
<body>
 <h2> Formulaire d'enregistrement</h2>
 <form action='' method='post'>
  <input type='text' name='pseudo'/> Votre pseudo <br/>
  <input type='text' name='mail'/> Votre E-mail <br/>
  <input type='password' name='mot_passe'/> Votre mot de passe <br/>
  <input type='password' name='mot_passe2'/> Retaper votre mot de passe <br/>
  <input type='submit' value="S'inscrire"/>
 </form>
 <?php
  if (isset($_POST)){
   if(!empty($_POST['pseudo'])){
    if(!empty($_POST['mot_passe'])){
     extract($_POST);
     $req2 = mysql_query('SELECT pseudo FROM utilisateurs WHERE pseudo = "'.$pseudo.'"');
     $info_utilisateurs = mysql_fetch_array($req2);
     if(!isset($info_utilisateurs['pseudo'])){
     if($mot_passe==$mot_passe2){    
      connexion_db();
      $today = date("d.m.y");
      $mail=mysql_real_escape_string($mail);
      $pseudo=mysql_real_escape_string($pseudo);
      $mot_passe_crypte=crypter($mot_passe);
      $inserer="INSERT INTO utilisateurs (id,pseudo,mot_passe,mail,dateinscription,solde) VALUES ('','$pseudo','$mot_passe_crypte','$mail','$today','$solde')";
      $req=mysql_query($inserer) or die('Erreur requête insertion : '.mysql_error());
      if($req) 
       echo'Inscription effectué. Vos identifiants sont désormais : <strong>'.$pseudo.'</strong> et Mot de passe : <strong>'.$mot_passe.'</strong>';
      else echo"Echec inscription";
     }else echo"Mot de confirmation erronné";
     }else echo"Le pseudo existe deja";
     
    }else echo"Mot de passe requis";
    
   }else echo"Pseudo requis";
   
   
  }
 ?>
  
  <br/><br/><a href="login.php" />Se connecter</a><br/>
  <a href="register.php" />S'inscrire</a>
</body>
</html>

Login.php :
<?php
 include'fonctions.php';
 include'config.php';
?>
<?php 
if(isset($_POST['envoyer'])) {
if(isset($_POST['pseudo']) AND !empty($_POST['pseudo']) AND isset($_POST['mot_passe']) AND !empty($_POST['mot_passe'])){
//Tout les champs ont été remplis
$pseudo = mysql_escape_string($_POST['pseudo']);
$motdepasse = mysql_escape_string(md5($_POST['mot_passe']));

$req1 = mysql_query('SELECT * FROM utilisateurs WHERE pseudo ="'.$pseudo.'"');
$info_membre = mysql_fetch_array($req1);

if(isset($info_membre['pseudo'])) {


if($motdepasse == $info_membre['mot_passe'])
{

$_SESSION['pseudo'] = $pseudo;
$succes = 'Connexion reussie';

}
else
{
$erreur = 'Le pseudo ou mot de passe entre sont incorrect,';
}

}
else
{
$erreur = 'Le pseudo n\'existe pas';
}
}
else
{
$erreur = 'Tout les champs sont obligatoires.';
}
}



?>
<h1 style="text-align: center;">Connexion</h1>
<hr>
<?php if(isset($erreur)) { echo $erreur; } ?>
<?php if(isset($succes)) { echo $succes; } ?>
<hr>
<form action="index.php" method="post">
Pseudo : <input type="text" name="pseudo" value="<?php if(isset($_POST['pseudo'])) { echo $_POST['pseudo']; } ?>"><br>
Mot de passe : <input type="password" name="mot_passe" value="<?php if(isset($_POST['mot_passe'])) { echo $_POST['mot_passe']; } ?>"><br>
<input type="submit" name="envoyer" value="Se connecter">
</form>
index.php :
<?php 
include'fonctions.php';
include'config.php';

?>

<?php if(isset($_SESSION['pseudo'])) { ?>

<p>
Vous etes connecte, <?php echo $_SESSION['pseudo']; ?>. Tu peux sur cette page recharger tes credits<br/>
<a href="recharge.php" />Rechargez vos credits</a><br/>
<a href="logout.php" />Se deconnecter</a><br/>

<?php } else {?>
<p>
Vous n'etes pas connecte.<br/>
<a href="login.php" />Se connecter</a><br/>
<a href="register.php" />S'inscrire</a>
</p>
<?php } ?>
fonctions.php :
<?php
 ini_set('display_errors','off');
 function connexion_db(){
  mysql_connect('127.0.0.1','root','') or die('Erreur Seveur : '.mysql_error());
  mysql_select_db('base') or die('Erreur base de données : '.mysql_error()); 
  echo'Connexion à la base de données réussie. ';
 }
 function crypter($passe){
  $passe=md5($passe);
  return $passe;
 }
?>
<br>
config.php :
<?php
session_start();
mysql_connect('127.0.0.1','root','');
mysql_select_db('base');
?>



logout.php :
<?php 
include('includes/config.php');
session_destroy();
header('Location: register.php');
?>

recharge.php :
<?php
 include'fonctions.php';
 include'config.php';
?>

<!DOCTYPE html>
<html lang='fr'>
<head>
 <meta charset='utf-8'>
 <title>Formulaire d'enregistrement</title>
</head>
<body>
 <h2> Formulaire d'enregistrement</h2>
 <form action='' method='post'>
 <input type='text' name='pseudo'/> Votre pseudo <br/>
  <input type='number' name='solde'/> Votre solde <br/>
  <input type='submit' value="Valider"/>
 </form>

<?php
// on teste si les variables du formulaire sont déclarées
if (isset($_POST['solde']) && isset($_POST['pseudo'])) {

$pseudo = isset($_POST['pseudo'])?$_POST['pseudo']:NULL;
$solde = isset($_POST['solde'])?$_POST['solde']:0;

// on cherche l'ancien solde
 $req = 'SELECT solde FROM utilisateurs WHERE pseudo = "'.$pseudo.'"'; 
 $result = mysql_query($req) or die('Erreur SQL !'.$req.'<br />'.mysql_error());
 if($result ){
 $row = mysql_fetch_row($result);
 $ancienSolde = $row['solde'];
}else{
  $ancienSolde = 0;
}
$nouveauSolde = $ancienSolde + $solde ;
// lancement de la requête
 $sql = 'UPDATE utilisateurs SET solde="'.$nouveauSolde .'" WHERE pseudo="'.$pseudo.'"';

 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

 // on ferme la connexion à la base
 mysql_close();

 // un petit message permettant de se rendre compte de la modification effectuée
 echo 'Le nouveau solde est de '.$_POST['solde'].'.';
}
else {
 echo 'Les variables du formulaire ne sont pas déclarées';
}
?>
  
  <br/><br/><a href="recharge.php" />Se connecter</a><br/>
  <a href="register.php" />S'inscrire</a>
</body>
</html>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
15 juin 2015 à 00:25
Déjà .
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Ensuite...
Pourquoi me mettre TOUTES tes pages... alors que ton souci ne concerne que la page recharge.php

Après.... Pourquoi mettre tes infos de connexion à la BDD un peu partout dans ton code ???
il serait préférable de le mettre dans un fichier à part ...et de l'inclure au début de tes pages....

Puis...
dans la page recharge.php .. pourquoi avoir deux fois le même code:
 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
 mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

 // on ferme la connexion à la base
 mysql_close();




et enfin...
Le nouveau solde n'est pas contenu dans la variable post .. mais dans la variable nouveausolde..
donc :
 // un petit message permettant de se rendre compte de la modification effectuée
 echo 'Le nouveau solde est de '.$_POST['solde'].'.';

est à remplacer par :
 // un petit message permettant de se rendre compte de la modification effectuée
 echo 'Le nouveau solde est de '.$nouveauSolde;


.Commence par faire ces corrections... et reviens nous les montrer avant que l'on ne continue.
0