IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Insérer dans ma base de données avec ma requête MySQLi-Preparée


Sujet :

Langage PHP

  1. #21
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par cheboy Voir le message
    Après avoir placé un exit; sous chaque header('Location: ...'), le code nouvellement modifié est
    Tu es conscient que tu as du code qui ne sera JAMAIS exécuté après le exit() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $stmt->execute();
    //email details...
    header('Location: pages_balance_enquiries.php');
    exit;
     
    //Insert Captured information to a database table
    $query = "INSERT INTO iB_Transactions (tr_code, account_id, ac...

  2. #22
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Bonjour.

    Je viens de modifier en suivants les conseils que vous m'aviez laissé en commentaire précédemment dont voici ma nouvelle modification:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
    session_start();
    include('conf/config.php');
    include('conf/checklogin.php');
    check_login();
    $admin_id = $_SESSION['admin_id'];
    //register new account
     
    if (isset($_POST['deposit'])) {
        $tr_code = $_POST['tr_code'];
        $account_id = $_GET['account_id'];
        $acc_name = $_POST['acc_name'];
        $account_number = $_GET['account_number'];
        $acc_type = $_POST['acc_type'];
        // $acc_amount  = $_POST['acc_amount'];
        $tr_type  = $_POST['tr_type'];
        $tr_status = $_POST['tr_status'];
        $client_id  = $_GET['client_id'];
        $client_name  = $_POST['client_name'];
        $client_national_id  = $_POST['client_national_id'];
        $transaction_amt = $_POST['transaction_amt'];
        $client_phone = $_POST['client_phone'];
        //$acc_new_amt = $_POST['acc_new_amt'];
     
        //Notication
        $notification_details = "$client_name Has Deposited Ksh $transaction_amt To Bank Account $account_number";
     
        $balQuery = "SELECT acc_amount FROM iB_bankAccounts WHERE client_id = ? AND account_number = ? AND acc_status = 'Active'";
    	$stmtBal = $mysqli->prepare($balQuery);
        //bind paramaters
        $balance = $stmtBal->bind_param('ii', $client_id, $account_number);
        $stmtBal->execute();
     
    	// var_dump($balance);
     
    	echo $balance;
     
    	if ($stmtBal->num_rows == 1) {
     
    		$total = $balance + $transaction_amt;
    		if($total <= 0) {
    			//return here...
    		}
    		//Insert Captured information to a database table
    		$query="UPDATE iB_bankAccounts SET acc_amount = ? WHERE client_id = ?";
    		$stmt = $mysqli->prepare($query);
    		//bind paramaters
    		$rc=$stmt->bind_param('ii', $total, $client_id);
    		$stmt->execute();
     
     
    		//Insert Captured information to a database table
    		$query = "INSERT INTO iB_Transactions (tr_code, account_id, acc_name, account_number, acc_type,  tr_type, tr_status, client_id, client_name, client_national_id, transaction_amt, client_phone) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
    		$notification = "INSERT INTO  iB_notifications (notification_details) VALUES (?)";
     
    		$stmt = $mysqli->prepare($query);
    		$notification_stmt = $mysqli->prepare($notification);
     
    		//bind paramaters
    		$rc = $notification_stmt->bind_param('s', $notification_details);
    		$rc = $stmt->bind_param('ssssssssssss', $tr_code, $account_id, $acc_name, $account_number, $acc_type, $tr_type, $tr_status, $client_id, $client_name, $client_national_id, $transaction_amt, $client_phone);
    		$stmt->execute();
    		$notification_stmt->execute();
     
    		//declare a varible which will be passed to alert function
    		if ($stmt->execute()) {
    			if ($notification_stmt->execute()) {
    				$success = "Money Deposited";
    				//email details...
    				header('Location: pages_balance_enquiries.php');
    				exit;
    			} else {
    				$err = "Please Try Again Or Try Later";
    				die('Erreur SQL : ' . $notification_stmt->error);
    			}
    		} else {
    				$err = "Please Try Again Or Try Later";
    				die('Erreur SQL : ' . $stmt->error);
    		}
    	} else {
    		die($stmtBal->error);
    		// header('Location: pages_dashboard.php');
    		// exit;
    		$err = 'The account number is inactive. You cannot transfer funds with an inactive account.';
    	}
    }
     
    ?>
    Mais quand j'exécute en faisant le dépôt encore une fois:

    Nom : IB_TRANSACTION PROBLEME.png
Affichages : 172
Taille : 79,7 Ko

    Le résultat de l'exécution est d'une page 100% BLANCHE avec seulement 1 affiché sur la page:

    Nom : IB_TRANSACTION DEPOSIT PAGE BLANCHE account_id 0.png
Affichages : 149
Taille : 73,2 Ko

    Et, la colonne acc_amount de la Table iB_bankAccounts qui représente la valeur du solde (la balance) de l'utilisateur dont on cherche à faire un dépôt via la requête MySQLi Préparées, reste à 0 au lieu de se mettre à jour en prenant la nouvelle valeur de la requête UPDATE que j'ai faites:

    Nom : IB_TRANSACTION account_id 0.png
Affichages : 155
Taille : 124,0 Ko

    Aidez-moi s'il vous plaît.

    Je reposte le code source de la nouvelle modification ici:

    ebankmodif.zip


    Donc, j'ai trois problème au niveau des transactions ce qui fait que c'est impossible de gérer les transaction de mon côté et ce sont les trois fichiers suivants qui gèrent les transactions qui pose les problèmes:

    Fichier traitant le dépôt de fond sur le compte utilisateur: admin/pages_deposit_money.php.
    Fichier traitant le retrait de fond d'un compte utilisateur: admin/pages_withdraw_money.php.
    Fichier traitant le transfert de fond du compte d'un utilisateur à un autre: admin/pages_transfer_money.php.


    Les requêtes SQL de ces trois fichiers traitant les transactions posent de sérieux problème car impossible de faire ni un dépôt, ni un retrait et encore moins un transfert de compte à compte.

    Les informations de connexions du code source que je viens de poster ci-dessus sont dans le Fichier README.

    J'ai vraiment besoin de votre aide car j'ai essayé par toutes les manières possible de corriger cela mais les problèmes persistent.

  3. #23
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 452
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Bon on va reprendre depuis le début et y aller pas à pas si vous voulez bien.

    que donne ce résultat et est-ce bien ce que vous attendez ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
    <?php
    session_start();
    include('conf/config.php');
    include('conf/checklogin.php');
    check_login();
    $admin_id = $_SESSION['admin_id'];
     
     
    if (isset($_POST['deposit'])) {
        $tr_code = $_POST['tr_code'];
        $account_id = $_GET['account_id'];
        $acc_name = $_POST['acc_name'];
        $account_number = $_GET['account_number'];
        $acc_type = $_POST['acc_type'];
        // $acc_amount  = $_POST['acc_amount'];
        $tr_type = $_POST['tr_type'];
        $tr_status = $_POST['tr_status'];
        $client_id = $_GET['client_id'];
        $client_name = $_POST['client_name'];
        $client_national_id = $_POST['client_national_id'];
        $transaction_amt = $_POST['transaction_amt'];
        $client_phone = $_POST['client_phone'];
        //$acc_new_amt = $_POST['acc_new_amt'];
     
        //Notication
        $notification_details = "$client_name Has Deposited Ksh $transaction_amt To Bank Account $account_number";
     
        $balQuery = "SELECT acc_amount FROM iB_bankAccounts WHERE client_id = ? AND account_number = ? AND acc_status = 'Active'";
        $stmtBal = $mysqli->prepare($balQuery);
        $stmtBal->execute([$client_id, $account_number]);
        $balance = $stmtBal->fetch_object();
     
        echo "<pre>";
        print_r($balance);
        echo "</pre>";
        die();
    Merci pour la réponse.

    Ça me retourne une erreur:

    Warning: mysqli_stmt::execute() expects exactly 0 parameters, 1 given in C:\laragon\www\ebank\core\admin\pages_deposit_money.php on line 30

    Fatal error: Uncaught Error: Call to undefined method mysqli_stmt::fetch_object() in C:\laragon\www\ebank\core\admin\pages_deposit_money.php:31 Stack trace: #0 {main} thrown in C:\laragon\www\ebank\core\admin\pages_deposit_money.php on line 31
    Et donc je ne récupère pas la balance car il ne faut pas oublier, je souhaiterais récupérer la balance qui est acc_amount de la Table iB_bankAccounts à laquelle je dois ajouter (additionner) le nouveau montant comme dépôt.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [OpenOffice][Base de données] Récupérer les données d'un fichier .txt et les insérer dans une base de données
    Par frack dans le forum OpenOffice & LibreOffice
    Réponses: 9
    Dernier message: 05/08/2009, 10h52
  2. Réponses: 1
    Dernier message: 15/04/2009, 18h28
  3. [CKEditor] Insérer dans ma base, les données saisies à partir de FCKeditor
    Par remo dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 16/05/2007, 10h44
  4. Réponses: 4
    Dernier message: 23/04/2007, 12h01
  5. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo