Problème d'insertion dans la base de données

GETHALEX007 Messages postés 4 Date d'inscription mardi 29 octobre 2019 Statut Membre Dernière intervention 8 novembre 2019 - Modifié le 29 oct. 2019 à 20:42
GETHALEX007 Messages postés 4 Date d'inscription mardi 29 octobre 2019 Statut Membre Dernière intervention 8 novembre 2019 - 8 nov. 2019 à 11:53
Bonjour à tous,
Je suis un débutant en php et surtout côté orienté objet. Depuis deux semaines, j'ai des bugs, j'ai parcouru des forums mais pas de satisfaction: en un mot le problème demeure. Alors voici mes codes:

-----------------------------------------------
->HTML: page_fournisser.php
<?php 
    include_once '../config/connexion.php';
    include_once '../class/fournisseur.class.php';
       if(isset($_POST["ajouter"]) && isset($_POST["matri_four"])&& isset($_POST["name_four"]) && isset($_POST["raisonso"]) && 
          isset($_POST["adresse"]) && isset($_POST["contact"]) && isset($_POST["fax"]) && isset($_POST["adresse_email"])){
              
           $four = new Fournisseur($_POST["matri_four"], $_POST["name_four"], $_POST["raisonso"], $_POST["adresse"], $_POST["contact"], $_POST["fax"], $_POST["adresse_email"]);
           
            // Appel de la fonction 
           $four->InsertFournisseur();
           // Test sur la de fonction InsertFournisseur

                if($four=="OK"){
                    echo 'Bon enregistrement';
                }
                else{
                    echo "Echec d'enregistrement";
                }

       }

           
?>

<!doctype html>
<html>
 <head>
            <title>Fournisseurs</title>
            <link rel="stylesheet" href="../static/css/fondecran.css" type="text/css">
            <link rel="shortcut icon" href="../static/images/LogoCondicaf.ico" type="image/x-icon"> 
 </head>
        <body>
            <?php include_once 'page_menu.php'; ?>
                <form method="post" action="">
                    <center> 
                        <div id="div-ajout"><strong>    AJOUTER   FOURNISSEUR </strong></div>
                        <div id="div-user">
                                 <table>
                                     <tr>
                                         <td>N° fournisseur</td>
                                         <td><input type="text" name="matri_four" size="10"/></td>
                                     </tr>
                                           <tr><td> </td></tr>

                                     <tr>
                                         <td>Nom fournisseur</td> 
                                         <td><input type="text" name="name_four" size="25"/></td>
                                     </tr>
                                     <tr>
                                         <td>Raison sociale</td>
                                         <td><input type="text" name="raisonso" size="25"/></td>
                                     </tr>
                                     <tr>
                                         <td>Adresse</td> 
                                         <td><input type="text" name="adresse" size="25"/></td>
                                     </tr>
                                     <tr><td>Téléphone</td>
                                         <td><input type="text" name="contact" size="25"/></td>
                                     </tr>
                                     <tr>
<td>Fax</td>
                                         <td>
                                            <input type="text" name="fax" size="25"/>
                                         </td>
                                     </tr>
                                     <tr><td>Adresse email</td>
                                         <td><input type="email" name="adresse_email" size="25"/></td>
                                     </tr>
<tr>
      <td><input type="submit" name="ajouter"  value="Ajouter" /></td>
      <td><input type="reset" name="vider"  value="Vider" /></td>
        <td><input type="button" name="imprimer"  value="Imprimer" /></td>
         <td><input type="button" name="fermer"  value="Fermer" /></td>
   </tr>
                                 </table> 
        </form>
</body>
</html>


------------------------------------------
-> PHP: fournisseur.class.php

<?php

/*
Insertion de la base de données */
include_once '../config/connexion.php';

class Fournisseur {
    //put your code here
    private $matri_four;
    private $name_four;
    private $raisonso;
    private $adresse;
    private $contact;
    private $fax;
    private $adresse_email;
    private $bdd;


    public function __construct($matri_four, $name_four, $raisonso, $adresse, $contact, $fax, $adresse_email) {
        $matri_four = htmlspecialchars($matri_four);
        $name_four = htmlspecialchars($name_four);
        $raisonso = htmlspecialchars($raisonso);
         $adresse = htmlspecialchars($adresse);
         $contact = htmlspecialchars($contact);
             $fax = htmlspecialchars($fax);
           $adresse_email = htmlspecialchars($adresse_email);
           
          $this->matri_four = $matri_four."<br/>";
          $this->name_four = $name_four."<br/>";
          $this->raisonso = $raisonso."<br/>";
          $this->adresse = $adresse."<br/>";
          $this->contact = $contact."<br/>";
          $this->fax = $fax."<br/>";
          $this->adresse_email = $adresse_email."<br/>";
           $this->bdd = bdd();
        }
        
        public function InsertFournisseur() {
            $insertfour =   "INSERT INTO fournisseur(matri_four,name_four,raisonso,adresse,contact,fax, adresse_email)"
                          . "VALUES(:$this->matri_four,:$this->name_four,:$this->raisonso,:$this->adresse,:$this->contact,:$this->fax,:$this->adresse_email)";
                         
            $preparefour = $this->bdd->prepare($insertfour);
            
            $preparefour->execute(array(
                'matri_four' => $this->matri_four,
                'nom_four' => $this->name_four,
                'raisonso' => $this->raisonso,
                'adresse' => $this->adresse,
                'contact' => $this->contact,
                'fax' => $this->fax,
                'adresse_email' => $this->adresse_email));
            
                return 'OK';
        }
}


Et voici le message d'erreur qui s'affiche quand j'exécute le programme:
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\gesmatinfo\class\fournisseur.class.php on line 52.

La ligne 52 c'est celle-là :'adresse_email' => $this->adresse_email));

J'ai formellement besoin de votre aide pour avancer dans la suite de mon programme.

2 réponses

tamsir55 Messages postés 1 Date d'inscription dimanche 3 novembre 2019 Statut Membre Dernière intervention 3 novembre 2019
3 nov. 2019 à 23:34
Peut tu montrer le fichier connexion.php qui représente la connexion à la base de donnée
0
GETHALEX007 Messages postés 4 Date d'inscription mardi 29 octobre 2019 Statut Membre Dernière intervention 8 novembre 2019
5 nov. 2019 à 11:43
Bonjour tamsir55,

Vous m'avez demandé le code de connexion et j'ai mis du temps pour pouvoir vous répondre je m'en excuse. Le voici:

<?php
/*
  • Paramètres de connexion a la BDD
  • /

function bdd(){
try{
$logins = "root";
$mdp = "**********";

// Etablissement de la connexion
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost; dbname=gesmateriel', $logins, $mdp, $pdo_options);

Test de la connexion bonne
if($bdd = "OK"){
echo "Connexion établie";
}
}
catch (Exception $ex) {
print "Erreur !: ".$ex->getMessage()."<br/>";
die();
}
return $bdd ;
}
0
<?php
/*Paramètres de connexion a la BDD*/

//declaration de la fonction
function newInstanceDb(){
try{
$logins = "root";
$mdp = "**********";

// Etablissement de la connexion
$db = new PDO("mysql:host=localhost; dbname=gesmateriel; charset=UTF8", $logins, $mdp);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Test de la connexion
    if($db != null){
         echo "Connexion établie !";
    }
}
catch (PDOException $ex) {
        die("Erreur! :".$ex->getMessage());
}
       return $db;
}
0
GETHALEX007 Messages postés 4 Date d'inscription mardi 29 octobre 2019 Statut Membre Dernière intervention 8 novembre 2019
8 nov. 2019 à 11:53
Bonjour Jlec,
Après avoir essayé les modifications que vous avez apportées aux codes de connexion, le problème d'insertion dans la base de données demeure toujours. Alors je conclus que le souci ne provient pas du fichier connexion.php mais plutôt ce fichier php

<?php

/*
Insertion de la base de données */
include_once '../config/connexion.php';

class Fournisseur {
//put your code here
private $matri_four;
private $name_four;
private $raisonso;
private $adresse;
private $contact;
private $fax;
private $adresse_email;
private $newInstanceDb;


public function __construct($matri_four, $name_four, $raisonso, $adresse, $contact, $fax, $adresse_email) {
$matri_four = htmlspecialchars($matri_four);
$name_four = htmlspecialchars($name_four);
$raisonso = htmlspecialchars($raisonso);
$adresse = htmlspecialchars($adresse);
$contact = htmlspecialchars($contact);
$fax = htmlspecialchars($fax);
$adresse_email = htmlspecialchars($adresse_email);

$this->matri_four = $matri_four."<br/>";
$this->name_four = $name_four."<br/>";
$this->raisonso = $raisonso."<br/>";
$this->adresse = $adresse."<br/>";
$this->contact = $contact."<br/>";
$this->fax = $fax."<br/>";
$this->adresse_email = $adresse_email."<br/>";
$this->newInstanceDb = newInstanceDb();
}

public function InsertFournisseur() {
$insertfour = "INSERT INTO fournisseur(matri_four,name_four,raisonso,adresse,contact,fax, adresse_email)"
. "VALUES(:$this->matri_four,:$this->name_four,:$this->raisonso,:$this->adresse,:$this->contact,:$this->fax,:$this->adresse_email)";

$preparefour = $this->newInstanceDb->prepare($insertfour);

$preparefour->execute(array(
'matri_four' => $this->matri_four,
'nom_four' => $this->name_four,
'raisonso' => $this->raisonso,
'adresse' => $this->adresse,
'contact' => $this->contact,
'fax' => $this->fax,
'adresse_email' => $this->adresse_email));

return 'OK';
}
}

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\gesmatinfo\class\fournisseur.class.php on line 51.
0
Rejoignez-nous