Aucune réaction sur la base de donnée
Posté : 29 déc. 2015, 13:19
Bonjour!! j'ai 2 pages dont l'un contient un formulaire de traitement (plusieurs champs input text) et l'autre contient une class en php qui traite l'insertion des données dans une base. La classe génère une requête insert into dynamique et elle marche si je la test mais mon problème est que les données venant du formulaire ne sont pas insérer dans la base après avoir cliqué un bouton "Ajouter". Voici les codes sources :
class.php
formulaire.php
Quelqu'un pour m'aider? svp
Cordialement
class.php
Code : Tout sélectionner
class inserer
{
protected $DbHost;
protected $DbName;
protected $DbUser = 'root';
protected $DbPass ='';
protected $Table;
protected $dsn;
public function __construct($Host, $Db, $tab)
{
$this->setDbHost($Host);
$this->setDbName($Db);
$this->setTable($tab);
}
public function setDbHost($host){
$this->DbHost = $host ;
}
public function setDbName($name){
$this->DbName = $name ;
}
public function setTable($tab){
$this->Table = $tab ;
}
public function setDsn(){
$this->dsn = "mysql:host=".$this->DbHost.";dbname=".$this->DbName;
}
public function ShowFields(){
$fafn = array();
//global $dbh;
try{
$dbh = new PDO("mysql:host=$this->DbHost;dbname=$this->DbName", $this->DbUser, $this->DbPass, array(PDO::ATTR_PERSISTENT => true));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec('SET NAMES utf8');
}
catch(Exception $e){
die('Erreur de connexion : '.$e->getMessage());
}
$sql = 'SHOW COLUMNS from '.$this->Table;
$result = $dbh->prepare($sql);
$result->execute();
while ($ult = $result->fetch(PDO::FETCH_ASSOC)){
if ($ult['Field'] == 'id') {
$rep = $ult['Field'];
}
else {
$fafn[]=$ult['Field'] ;
}
}
return $fafn;
}
public function insert($values = array())
{
try{
$dbh = new PDO("mysql:host=$this->DbHost;dbname=$this->DbName", $this->DbUser, $this->DbPass, array(PDO::ATTR_PERSISTENT => true));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec('SET NAMES utf8');
}
catch(Exception $e){
die('Erreur de connexion : '.$e->getMessage());
}
$retour = $this->ShowFields();
foreach ($retour as $fil => $val)
$index[$val] = '' ;
foreach ($values as $field => $v)
$ins[] = ':name_' . $field;
$ins = implode(',', $ins);
$fields = implode(',', array_keys($index));
$sql = "INSERT INTO ".$this->Table." ($fields) VALUES ($ins)";
$sth = $dbh->prepare($sql);
foreach ($values as $f => $v)
{
$sth->bindValue(':name_' . $f, $v);
}
$sth->execute();
}
}
formulaire.php
Code : Tout sélectionner
include_once 'class.php';
$Host = 'localhost';
$Db = 'baseadsl';
$tab = 'nvllinstallation';
$values = array();
$insert = new inserer($Host, $Db, $tab);
if(isset($_POST['valider']))
{
foreach ($_POST as $field => $val)
$values = $val ;
$insert->insert($values);
}
Cordialement