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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    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 : 453
    Par défaut Insérer dans ma base de données avec ma requête MySQLi-Preparée
    Bonjour.

    J'ai un casse-tête au niveau de ma requête mysqli-prepared dans mon Code PHP ci-dessous.

    Pourtant, je reçois bien afficher le Message à succès Money Deposited:

    Nom : IB_TRANSACTION SUCCESS.png
Affichages : 560
Taille : 65,1 Ko

    Le souci, c'est que je n'arrive pas du tout à réussir l'insertion dans la Base de Données:

    Nom : IB_TRANSACTION VIDE.png
Affichages : 533
Taille : 131,1 Ko


    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
    <?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";
     
     
        //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 && $notification_stmt) {
            $success = "Money Deposited";
        } else {
            $err = "Please Try Again Or Try Later";
        }
    }
     
        if(isset($_POST['deposit']))
        {
           $account_id = $_GET['account_id'];
           $acc_amount = $_POST['acc_amount'];
     
            //Insert Captured information to a database table
            $query="UPDATE iB_bankAccounts SET acc_amount=? WHERE account_id=?";
            $stmt = $mysqli->prepare($query);
            //bind paramaters
            $rc=$stmt->bind_param('si', $acc_amount, $account_id);
            $stmt->execute();
     
            //declare a varible which will be passed to alert function
            if($stmt )
            {
                $success = "Money Deposited";
            }
            else
            {
                $err = "Please Try Again Or Try Later";
            }   
        }   
     
    ?>
    Où me suis-je planté je l'ignore car j'ai beau cherché mais tout semble parfait de mon côté et pourtant les données ne sont aucunement insérées.

    Aidez-moi donc à me corriger et réussir mes insertion s'il vous plaît.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Utilise mysqli->error pour voir ce qui bloque => https://www.php.net/mysqli-error


    PS : Et pourquoi ne pas utiliser PDO au lieu de MySQLi ?

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    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 : 453
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Utilise mysqli->error pour voir ce qui bloque => https://www.php.net/mysqli-error
    Merci pour la réponse. Mais quand, je modifie en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($stmt->execute()) {
        $success = "Money Deposited";
    } else {
        $err = 'Erreur SQL : ' . $stmt->error;
    }
    Je reçois le même retour d'erreur avec succès mais toujours sans l'insertion dans la BDD et sans l'affichage sur la page web de la moindre erreur SQL:

    Nom : IB_TRANSACTION SUCCESS.png
Affichages : 515
Taille : 65,1 Ko

  4. #4
    Membre chevronné Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 346
    Par défaut
    à la place du Money Deposited, affichez le texte de la requête envoyée ($query) ... et postez le ici.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    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 : 453
    Par défaut
    Je reçois à présent l'erreur:

    Erreur SQL : Field 'acc_amount' doesn't have a default value,

    quand j'ajoute le mysqli->error comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ($stmt->execute()) {
    		if ($notification_stmt->execute()) {
    			$success = "Money Deposited";
    		} 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);
    	}
    Mais le souci c'est que le champs acc_amount du même Utilisateur dont on fait le Deposit, dans mon code est dans la Table iB_bankAccounts de la même BDD contrairement aux autres champs et informations qui sont dans la Table iB_Transactions de la Base de données, et donc, j'ai fait ceci:

    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
    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";
     
     
        //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";
    		} 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);
    	}
    }
    	if(isset($_POST['deposit']))
        {
           $account_id = $_GET['account_id'];
           $acc_amount = $_POST['acc_amount'];
     
            //Insert Captured information to a database table
            $query="UPDATE iB_bankAccounts SET acc_amount=? WHERE account_id=?";
            $stmt = $mysqli->prepare($query);
            //bind paramaters
            $rc=$stmt->bind_param('si', $acc_amount, $account_id);
            $stmt->execute();
     
            //declare a varible which will be passed to alert function
            if($stmt )
            {
                $success = "Money Deposited";
            }
            else
            {
                $err = "Please Try Again Or Try Later";
            }
        }
    Et pourtant la même erreur: Erreur SQL : Field 'acc_amount' doesn't have a default value.

    Comment donc mettre à jour le champs "acc_amount" (qui représente le solde de l'Utilisateur dont on cherche à créditer le compte) et situé dans la Table iB_bankAccounts à chaque fois que je fais un Dépôt ?

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    le champs "acc_amount", ne serait il pas un champs calculé par une macro dans la BDs suivant les autres champs, donc non modifiable, mais en lecture seulement
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.

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