Bonjour à tous!
j'ai un souci dans mon script, je m'explique: je dispose d'une page forme_patient.php (formulaire) et Patient_Model.php (contient les fonctions), l'objectif est d'enregistrer les infos d'un patient mais chaque fois quand je dois cliquer sur le bouton save, la page envoit deux informations au même moment avec les mêmes infos (le doublon),
voici le code ci-dessous:

form_patient.php

 <table cellpadding="3" cellspacing="3" width="100%">
<tr><td><input type="text" name="name"placeholder="Nom"></td></tr>          <tr><td><input type="text" name="postnom" placeholder="Postnom"></td></tr>
 <tr><td><input type="text" name="prenom" placeholder="Prénom"></td></tr>
 </table>
 <?php 
  if(isset($_POST['save']))
{
$nom = htmlentities(isset($_POST['name']))?$_POST['name']:"";
$postN = htmlentities(isset($_POST['postnom']))$_POST['postnom']:"";
$prenom = htmlentities(isset($_POST['prenom']))?$_POST['prenom']:"";

$patient = new Patient_model();//ma classe qui contient la partie sql

$query_run = $patient->inputData($code, $nom, $postnom, $prenom);
//ma fonction qui joue le role d'insertion
echo "Ajout effectué";
}

 Patient_Model.php
 require_once("DbCnx.php");
 class Patient_model extends DbCnx 
 {
         private $nom;
         private $postnom;
         private $prenom;
         private $data;

          public function inputData($nom,$postnom,$prenom)
         {
                 $this->nom = $nom;
                 $this->postnom = $postnom;
                 $this->prenom = $prenom;
                 $this->data = [];

                 $db = $this->connect_to_db();
                 $sql = $db->prepare('INSERT INTO t_patient (Pat_Nom,Pat_Postnom,Pat_Prenom) VALUES (?,?,?)');
                 $sql->execute(array($this->code,$this->nom,$this->postnom,$this->prenom));
                 $this->data = $sql->execute();
                 return $this->data;
         }
}

Que dois-je faire?

Je souhaite éviter le doublon pendant l'enregistrement après un premier clic

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

5 réponses


Merci pour votre participation, oui Michael, je l'ai fait mais le problème est toujours là

Dans ma classe Patient_Model, j'ai une fonction verif_Code_Pat($code) qui me permet de verifier si le code existe, je rapelle que code est un champ varchar et il n'est pas la cle primaire de ma table t_patient. il permet juste de verifer si le même code existe pour empecher de l'ajouter deux fois de plus

<?php
        public function verif_Code_Pat($code)
        {
             $this->data = [];
             $this->code = $code;
             $db = $this->connect_to_db();
             $verify = $db->query("SELECT * FROM t_patient WHERE Pat_Code = '".$this->code."' ");
             $this->data = $verify;
             return $this->data;
         }
?>

Salut,

Peux tu aussi nous montrer le code où tu utilises cette fonction ?

merci chers amis mais j'ai trouvé un autre moyen de le faire à travers et je trouve que ça marche jusqu'ici mais je reste toujours ouvert pour une meilleure proposition si elle se présente

je vous partage le bout de code

$req = $db->prepare('INSERT INTO t_patient(Pat_Code, Pat_Nom, Pat_Postnom, Pat_Prenom, Pat_Complet, Pat_DateNaiss, Pat_LieuNaiss, Pat_Sex, Pat_GpSang, Pat_EtatCiv, Pat_Adres, Pat_Photo, Pat_Email, Pat_Phone, Pat_Age, Pat_Taille, Pat_Poids) 
             SELECT :Pat_Code, :Pat_Nom, :Pat_Postnom, :Pat_Prenom, :Pat_Complet, :Pat_DateNaiss, :Pat_LieuNaiss, :Pat_Sex, :Pat_GpSang, :Pat_EtatCiv, :Pat_Adres, :Pat_Photo, :Pat_Email, :Pat_Phone, :Pat_Age, :Pat_Taille, :Pat_Poids FROM DUAL WHERE NOT EXISTS 
             (SELECT 1 FROM t_patient WHERE Pat_Code=:Pat_Code AND Pat_Nom=:Pat_Nom AND Pat_Postnom=:Pat_Postnom AND Pat_Prenom=:Pat_Prenom AND Pat_Complet=:Pat_Complet AND Pat_DateNaiss=:Pat_DateNaiss AND Pat_LieuNaiss=:Pat_LieuNaiss AND Pat_Sex=:Pat_Sex AND Pat_GpSang=:Pat_GpSang AND Pat_EtatCiv=:Pat_EtatCiv AND Pat_Adres=:Pat_Adres AND Pat_Photo=:Pat_Photo AND Pat_Email=:Pat_Email AND Pat_Phone=:Pat_Phone AND Pat_Age=:Pat_Age AND Pat_Taille=:Pat_Taille AND Pat_Poids=:Pat_Poids )');
             $req->execute(array(
             'Pat_Code' => $this->code,
             'Pat_Nom' => $this->nom, 
             'Pat_Postnom' => $this->postnom,
             'Pat_Prenom' => $this->prenom,
             'Pat_Complet' => $this->Nom_Complet,
             'Pat_DateNaiss' => $this->naiss,
             'Pat_LieuNaiss' => $this->lieuN,
             'Pat_Sex' => $this->sexes,
             'Pat_GpSang' => $this->Gpsang,
             'Pat_EtatCiv' => $this->EtatCiv,
             'Pat_Adres' => $this->Adresse,
             'Pat_Photo' => $this->img,
             'Pat_Email' => $this->email,
             'Pat_Phone' => $this->Tel,
             'Pat_Age' => $this->age,
             'Pat_Taille' => $this->taille,
             'Pat_Poids' => $this->poids

             ));    
             $this->data = $req->execute();
             return $this->data;