[resolut]

[resolut] - PHP - Programmation

Marsh Posté le 19-05-2010 à 22:30:38    

Bonsoir je suis entraint de faire un script qui enregistre un nom dans une base de donnée:

Code :
  1. <?php
  2. class enregistre
  3. {
  4.  protected $nom;
  5.  protected $endID; //le dernier enregistrement
  6.  public function  __construct($nom)
  7.  {
  8.      $this->nom=$nom;
  9.     }
  10.      
  11.    public function SavPerso()
  12.     {
  13.      $bdd = connection::getInstance()->OpenCnx();
  14.   // enregistrement de la personne
  15.   $sql_perso="INSERT INTO Clients (ID_client,nom) VALUES ('','$this->nom')";
  16.   $nb=$bdd->exec($sql_perso);
  17.   $this->endID= $bdd->lastInsertId();
  18.     $sql_OK="SELECT nom FROM `Clients` WHERE ID_client= $this->endID";
  19.       $req=$bdd->query($sql_OK);
  20.       while ($data = $req->fetch(PDO::FETCH_NUM))
  21.       {
  22.           $test=$data[0];      
  23.       }
  24.    
  25.       if ( $test== $this->nom)
  26.       {
  27.        echo "<h1>le client:".$this->nom." a bien été enregistrer!!</h1>";
  28.       }
  29.       else
  30.       {
  31.        echo "<h1>une erreur est survenu merci de contacter le webmaster</h1>";
  32.       }
  33.     $bdd=null; 
  34.   }
  35.  
  36. }
  37. ?>


Si on rafraichit le navigateur, un deuxième enregistrement est identique à la première, comment procéder pour ne pas avoir ce problème?
merci de vos réponses


Message édité par keo64 le 20-05-2010 à 07:05:31
Reply

Marsh Posté le 19-05-2010 à 22:30:38   

Reply

Marsh Posté le 19-05-2010 à 22:35:01    

tu fais ton enregistrement, et tu redirige vers la page de consultation  si l'enregistrement à réussi

 

un peu comme sur ce forum

 

( et le mélange enregistrement en BDD / echo dans la meme classe, c'est pas forcement une bonne idée)
edit :  un petit mysql_real_escape_string sur le $this->nom, ce serait génial


Message édité par flo850 le 19-05-2010 à 22:35:35
Reply

Marsh Posté le 19-05-2010 à 23:23:31    

merci de la réponse flo
mais comment je fait pour rediriger en POO,?
je pensais qu'il n'était pas necessaire de s'occuper des injection sql avec PDO.

Message cité 1 fois
Message édité par keo64 le 19-05-2010 à 23:27:12
Reply

Marsh Posté le 20-05-2010 à 01:22:19    

Bsr j'ai une solution tres efficace 100%:
sql_perso="INSERT INTO Clients (ID_client,nom) VALUES ('','$this->nom')";
 $nb=$bdd->exec($sql_perso);
$supDoubsd="ALTER IGNORE TABLE Clients  ADD UNIQUE INDEX Clients (nom)";  
mysql_query($supDoubsd);

Reply

Marsh Posté le 20-05-2010 à 07:05:00    

merci de réponse, je vais adopter ta solution
pour contre j'ai été bête pour faire un redirection il me suffit de faire une methode

Code :
  1. public function Revenir()
  2.  {
  3.   header('Location: http://www.example.com/');
  4.  }


je suis pas très futé je pensais que écrit header c'était du html

Reply

Marsh Posté le 20-05-2010 à 08:43:07    

keo64 a écrit :

merci de la réponse flo
mais comment je fait pour rediriger en POO,?
je pensais qu'il n'était pas necessaire de s'occuper des injection sql avec PDO.


si tu utilises des prepared statement, pas besoin de protection  
sinon, c'est obligatoire
 

infoeins a écrit :

Bsr j'ai une solution tres efficace 100%:
sql_perso="INSERT INTO Clients (ID_client,nom) VALUES ('','$this->nom')";
 $nb=$bdd->exec($sql_perso);
$supDoubsd="ALTER IGNORE TABLE Clients  ADD UNIQUE INDEX Clients (nom)";  
mysql_query($supDoubsd);


et si un utilisateur veut modifier deux fois de suite un client ça plante

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed