Mon code crée dans la base deux enregistrement identique avec un timestamp égale a la seconde prés. N'ayant pas des connaissance très hautes dans ce domaine j’espère pouvoir régler ce problème avec vous.
Voici mon index ainsi que mes 4 objet.
index.php
<html>
<body>
<form method="POST" action="index.php" enctype="multipart/form-data" >
Prenom: <input type="text" name="prenom">
Nom: <input type="text" name="nom">
Age: <input type="text" name="age">
telephone: <input type="text" name="telephone">
naissance: <input type="text" value="XX/XX/XXXX" name="naissance">
email: <input type="text" name="email">
adresse: <input type="text" name="adresse">
code postal: <input type="text" name="codepostal">
ville: <input type="text" name="ville">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000000000000000000000000000000000000000000">
Fichier : <input type="file" name="photo">
<input type="submit" value="enregistrer">
</form>
</body>
</html>
<?php
require 'CompteEleveManager.class.php' ;
require 'Eleve.class.php';
require 'EleveManager.class.php';
require 'Compte.class.php';
if(isset($_FILES['photo']))
{
$dossier = 'upload\\';
$fichier = basename($_FILES['photo']['name']);
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
$photo = $dossier.$fichier ;
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
if( isset($_POST['prenom'])&&
isset($_POST['nom'])&&
isset($_POST['age'])&&
isset($_POST['telephone'])&&
isset($_POST['naissance'])&&
isset($_POST['email'])&&
isset($_POST['adresse'])&&
isset($_POST['codepostal'])&&
isset($_POST['ville'])
)
{
$eleve = new Eleve(
array
(
'prenom' => $_POST['prenom'],
'nom' => $_POST['nom'],
'age' => $_POST['age'],
'telephone' => $_POST['telephone'],
'naissance' => $_POST['naissance'],
'email' => $_POST['email'],
'adresse' => $_POST['adresse'],
'codepostal' => $_POST['codepostal'],
'ville' => $_POST['ville'],
'photo' => $photo,
)
);
$compte = new Compte(
array(
'telephone' => $_POST['telephone'],
'soldes' => $inscription = 250,
)
);
try
{
$db = new PDO('mysql:host=localhost;dbname=pdo', 'root', '');
$manager = new EleveManager($db);
$manager->add($eleve);
$db1 = new PDO('mysql:host=localhost;dbname=pdo', 'root', '');
$manager2 = new CompteEleveManager($db1);
$manager2->add($compte);
}
catch(PDOException $e)
{
echo "connection fail ".$e->getMessage();
}
}
else
{
echo "t enocre un nul";
}
?>
Eleve.class.php
<?php
class Eleve
{
protected $_prenom;
protected $_nom;
protected $_age;
private $_telephone;
protected $_naissance;
protected $_email;
protected $_adresse;
protected $_code_postal;
protected $_ville;
protected $_photo;
protected $_date;
public function __construct(array $donnees)
{
foreach ($donnees as $key => $value)
{
// On récupère le nom du setter correspondant à l'attribut.
$method = 'set'.ucfirst($key);
// Si le setter correspondant existe.
if (method_exists($this, $method))
{
// On appelle le setter.
$this->$method($value);
}
}
}
public function prenom() { return $this->_prenom; }
public function nom() { return $this->_nom; }
public function age() { return $this->_age; }
public function telephone() { return $this->_telephone; }
public function naissance() { return $this->_naissance; }
public function email() { return $this->_email; }
public function adresse() { return $this->_adresse; }
public function codepostal() { return $this->_code_postal; }
public function photo() { return $this->_photo; }
public function ville() { return $this->_ville; }
public function date() { return $this->_date; }
public function setPrenom($prenom)
{
// On vérifie qu'il s'agit bien d'une chaîne de caractères.
// Dont la longueur est superieur à 0 caractères.
$this->_prenom = $prenom;
}
public function setNom($nom)
{
// On vérifie qu'il s'agit bien d'une chaîne de caractères.
// Dont la longueur est superieur à 0 caractères.
$this->_nom = $nom;
}
public function setAge($age)
{
// On vérifie qu'il s'agit d'un int.
$this->_age = $age;
}
public function setTelephone($telephone)
{
// On vérifie qu'il s'agit bien un int.
// Dont la longueur est superieur à 0 caractères et inferieur a 10.
$this->_telephone = $telephone;
}
public function setNaissance($naissance)
{
// On vérifie qu'il s'agit bien int.
// Dont la longueur est superieur à 0 caractères.
$this->_naissance = $naissance;
}
public function setEmail($email)
{
$this->_email = $email;
}
public function setAdresse($adresse)
{
// On vérifie qu'il s'agit bien d'une chaîne de caractères.
// Dont la longueur est superieur à 0 caractères.
$this->_adresse = $adresse;
}
public function setCodepostal($codepostal)
{
// On vérifie qu'il s'agit bien d'un int.
// Dont la longueur est superieur à 0 caractères et ne depasse pas 5.
$this->_code_postal = $codepostal;
}
public function setVille($ville)
{
// On vérifie qu'il s'agit bien d'une chaine.
// Dont la longueur est superieur à 0 caractères.
$this->_ville = $ville;
}
public function setPhoto($photo)
{
// On vérifie qu'il s'agit bien d'une chaine.
// Dont la longueur est superieur à 0 caractères.
$this->_photo = $photo;
}
public function setDate($today)
{
$this->_date = $today;
}
}
?>
EleveManager.class.php<?php
class EleveManager
{
private $_db;
public function __construct($db)
{
$this->setDb($db);
}
public function add(Eleve $eleve)
{
$q = $this->_db->prepare('INSERT INTO eleve (prenom,nom,age,telephone,naissance,email,adresse,codepostal,ville,photo) VALUES (:prenom,:nom,:age,:telephone,:naissance,:email,:adresse,:codepostal,:ville,:photo)');
$q->bindValue(':prenom', $eleve->prenom());
$q->bindValue(':nom', $eleve->nom());
$q->bindValue(':age', $eleve->age(), PDO::PARAM_INT);
$q->bindValue(':telephone', $eleve->telephone());
$q->bindValue(':naissance', $eleve->naissance());
$q->bindValue(':email', $eleve->email() );
$q->bindValue(':adresse', $eleve->adresse() );
$q->bindValue(':codepostal', $eleve->codepostal(), PDO::PARAM_INT);
$q->bindValue(':ville', $eleve->ville() );
$q->bindValue(':photo', $eleve->photo());
$q->execute();
$result=$q->execute();
if ($result === false) {
var_dump($result);
//echo $this->_db->errorCode();
echo $q->errorCode();
var_dump($q->errorInfo());
}
}
public function delete($tel)
{
$this->_db->exec('DELETE FROM eleves WHERE telephone = ' .$tel);
return 'l\'eleve a ete supprimer avec succes';
}
public function getList()
{
$eleve = array();
$q = $this->_db->prepare('SELECT id, prenom, nom, age, telephone, naissance, email, adresse, codepostal, ville, photo FROM eleve ORDER BY nom');
$q->execute();
$result=$q->execute();
if ($result === false) {
var_dump($result);
echo $this->_db->errorCode();
//echo $q->errorCode();
var_dump($q->errorInfo());
}
while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
{
$eleve[] = new Eleve($donnees);
}
return $eleve;
}
public function getEleve($tel)
{
$eleve = array();
$q = $this->_db->prepare('SELECT prenom, nom, age, telephone, naissance, email, adresse, codepostal, ville, photo, date FROM eleve WHERE telephone = '.$tel);
$q->execute();
$result=$q->execute();
if ($result === false) {
var_dump($result);
echo $this->_db->errorCode();
//echo $q->errorCode();
var_dump($q->errorInfo());
}
while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
{
$eleve[] = new Eleve($donnees);
var_dump($eleve);
}
return $eleve;
}
public function update(Eleve $eleve)
{
$q = $this->_db->prepare('UPDATE eleve SET prenom = :prenom, nom = :nom, age = :age, telephone = :telephone, naissance = :naissance, email = :email, adresse = :adresse, codepostal = :codepostal, ville = :ville, photo = :photo WHERE telephone = :telephone');
$q->bindValue(':prenom', $eleve->prenom());
$q->bindValue(':nom', $eleve->nom());
$q->bindValue(':age', $eleve->age(), PDO::PARAM_INT);
$q->bindValue(':telephone', $eleve->telephone());
$q->bindValue(':naissance', $eleve->naissance(), PDO::PARAM_INT);
$q->bindValue(':email', $eleve->email());
$q->bindValue(':adresse', $eleve->adresse());
$q->bindValue(':adresse2', $eleve->adresse2());
$q->bindValue(':codepostal', $eleve->codepostal(), PDO::PARAM_INT);
$q->bindValue(':ville', $eleve->ville());
$q->bindValue(':photo', $eleve->photo());
$q->execute();
$result=$q->execute();
if ($result === false) {
var_dump($result);
echo $this->_db->errorCode();
//echo $q->errorCode();
var_dump($q->errorInfo());
}
}
public function setDb($db)
{
$this->_db = $db;
}
}
?>
Compte.class.php
<?php
class Compte extends Eleve
{
protected $_soldes;
protected $_prix;
private $_telephone;
public function __construct(array $donnees)
{
foreach ($donnees as $key => $value)
{
// On récupère le nom du setter correspondant à l'attribut.
$method = 'set'.ucfirst($key);
// Si le setter correspondant existe.
if (method_exists($this, $method))
{
// On appelle le setter.
$this->$method($value);
}
}
}
public function soldes() { return $this->_soldes; }
public function prix() { return $this->_prix; }
public function compteTelephone() { return $this->_telephone; }
public function setSoldes($inscription)
{
$this->_soldes = $inscription ;
}
public function setPrix($heures, $indice)
{
switch ($indice)
{
case 1:
$this->_prix = $this->_soldes + $heures*45;
break;
case 2:
$this->_prix = $this->_soldes + 90 ;
break;
case 3:
$this->_prix = $this->_soldes + 70 ;
break;
}
}
public function setcompteTelephone($telephone)
{
$this->_telephone = $telephone;
}
}
?>
CompteEleveManager.php<?php
class CompteEleveManager
{
private $_db;
public function __construct($db)
{
$this->setDb($db);
}
public function add(Compte $compte)
{
$q = $this->_db->prepare('INSERT INTO Compte (telephone,soldes,date) VALUES (:telephone,:soldes,:date)');
$q->bindValue(':soldes', $compte->soldes(), PDO::PARAM_INT);
$q->bindValue(':telephone', $compte->telephone());
$q->bindValue(':date', $compte->date());
$q->execute();
$result=$q->execute();
if ($result === false)
{
var_dump($result);
echo $this->_db->errorCode();
echo $q->errorCode();
var_dump($q->errorInfo());
}
return 'paiement effectuer le '.$compte->date();
}
public function update(Compte $eleve)
{
$q = $this->_db->prepare('UPDATE compte SET soldes = :soldes, date = :date WHERE telephone = :telephone');
$q->bindValue(':soldes', $eleve->prix(), PDO::PARAM_INT);
$q->bindValue(':telephone', $eleve->telephone());
$q->bindValue(':date', $eleve->date());
$q->execute();
$result=$q->execute();
if ($result === false)
{
var_dump($result);
echo $this->_db->errorCode();
echo $q->errorCode();
var_dump($q->errorInfo());
}
return 'paiement effectuer le '.$compte->date();
}
public function setDb($db)
{
$this->_db = $db;
}
}
?>
Ce petit projet va servir pour mon auto-ecole où je travaille en ce moment et je fait ce projet durant mon temps et entre deux lecon de conduite, et je ne sais pas si ca peut vous servir mais il ne sera executer qu'en local.Merci par avance