Je dois créer un annuaire concernant le personnel d'une petite société, on m'a demandé de le faire avec PHP mais
en tant que débutant en php (pas en OOP) je suis venu sur ce forum car j'ai un problème, j'ai lu un cours http://fr.openclassrooms.com/informatiq ... s-stockees; j'ai eu des problèmes avec avec le méthode hydrate donc j'ai modifié mon code pour m'en passer.
Voici mon problème: quand je fais une insertion via un formulaire ça marche et les informations que j'ai entré s'affichent correctement, mais quand je fais un recherche certaines valeurs ne s'affichent pas(i.e l'Id et le Nom).
Voici le code, merci d'avance
classe Gestion
<?php
class Gestion{
private $_db;
public function __construct($db){
$this->setDb($db);
}
public function add(Personne $perso){
//$q=$this->_db->prepare('INSERT INTO mygestion.personne (nom_personne) VALUES (:nom_personne)');
$q=$this->_db->prepare('INSERT INTO mygestion.personne (nom_personne,prenom, adr) VALUES (:nom_personne, :prenom , :adr)');
$q->bindValue(':nom_personne',$perso->getNom());
$q->bindValue(':prenom',$perso->getPrenom());
$q->bindValue(':adr',$perso->getAdresse());
$q->execute();
$perso->setIdPersonne($this->_db->lastInsertId());
$q->closeCursor();
}
public function count(){
return $this->_db->query('SELECT COUNT(*) FROM personne')->fetchColumn();
}
public function exists($info){
if(is_int($info)){
return (bool) $this->_db->query('SELECT COUNT(*) FROM personne WHERE id_personne = '.$info)->fetchColumn();
}
$q = $this->_db->prepare('SELECT COUNT(*) FROM personne WHERE nom_personne =:nom_personne');
$q->execute(array(':nom_personne'=>$info));
return (bool) $q->fetchColumn();
}
public function get($info){
$req = $this->_db->query('SELECT id_personne, nom_personne, prenom, adr FROM mygestion.personne WHERE nom_personne = ' . $this->_db->quote($info, \PDO::PARAM_INT));
$donnees = $req->fetchAll(\PDO::FETCH_CLASS, 'Personne')[0];
$req->closeCursor();
return $donnees;
}
public function setDb(\PDO $db){
$this->_db=$db;
}
}
?>
le corps:
<?php
require 'Gestion.php';
require 'Personnage.php';
session_start();
if(isset($_GET['deconnexion'])){
session_destroy();
header('Location:.');
exit();
}
$db= new PDO('mysql:host=localhost;dbname=mygestion','root','');
$db->setAttribute(\PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$gestion = new Gestion($db);
if(isset($_SESSION['perso'])){
$perso = $_SESSION['perso'];
}
if(isset($_POST['ok']) && isset($_POST['nom'])&& isset($_POST['prenom'])&&isset($_POST['adr'])){
$perso=new Personne();
$perso->setNom($_POST['nom']);
$perso->setPrenom($_POST['prenom']);
$perso->setAdresse($_POST['adr']);
if(!($perso->nomValide())){
$message = 'Le nom choisi n\'est pas valide.';
unset($perso);
}
elseif($gestion->exists($perso->getNom())){
$message ='Ce nom est deja pris.';
unset($perso);
}
else{
$gestion->add($perso);
$message ='OK';
}
}
elseif(isset($_POST['search'])&&isset($_POST['nom'])){
if($gestion->exists($_POST['nom'])){
$perso = $gestion->get($_POST['nom']);
}
else{
$message ='Cette personne n\'existe pas.';
}
}
?>
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>Gestion Etudiant</title>
</head>
<body>
<p> Nombre de personne dans la base :<?php echo $gestion->count();?> </p>
<?php
if(isset($message)){
echo '<p>',$message,'</p>';
}
if(isset($perso)){?>
<p><a href="?deconnexion=1">deconnexion</a></p>
<fieldset>
<legend>Informations</legend>
<p>
Id : <?php echo htmlspecialchars($perso->getIdPersonne()); ?> </br>
Nom : <?php echo htmlspecialchars($perso->getNom()); ?> </br>
Prenom : <?php echo htmlspecialchars($perso->getPrenom()); ?> </br>
Adresse : <?php echo htmlspecialchars($perso->getAdresse()); ?> </br>
</p>
</fieldset>
</p>
<?php
}
else{?>
<form action="corps.php" method="post">
<p>
Nom : <ul><input type="text" name="nom"></ul>
Prenom : <ul><input type="text" name="prenom"></ul>
Adresse : <ul><input type="text" name="adr"></ul>
<ul><input type="submit" value="inserer" name="ok"></ul>
<ul><input type="submit" value="rechercher" name="search"></ul>
</p>
</form>
<?php
}
?>
</body>
</html>
<?php
if(isset($perso)){
$_SESSION['perso']=$perso;
}
?>
Je crois que l'erreur se trouve au niveau de la méthode get()