Bonjour a tous,
J'ai un petit souci avec ma classe pour enregistrer dans ma bdd, voici l'erreur qui me donne "Only variables should be passed by reference"
HTML:
<form method="post" action="">
<input type="text" name="username" />
<input type="text" name="email" />
<input type="submit" name="saveuser" />
</form>
PHP:
if(isset($_POST'saveuser'])){
echo $Mysql->insert('users', $_POST, 'index.php');
}
Ma class mysql:
<?php
class Mysql{
public $valid = false;
public $erreur = null;
public $last_key = null;
public function __construct(){
}
public function insert($table, $value, $redirect){
$key = '';
$val = '';
$last_key = end(array_keys($value));
foreach($value AS $c => $v){
if($c !== $last_key) {
$key .= $c.',';
$val .= "'".$v."',";
}
}
$key = rtrim($key,',');
$val = rtrim($val,',');
$requete = "INSERT INTO ".$table." ($key) VALUES ($val)";
if(false !== mysql_query($requete)) {
$this->erreur = 'Réussi';
}else{
$this->erreur = 'Erreur';
}
return $this->erreur;
}
}
?>
J'ai cherché sur le net mais je n'ai pas trouvé de réponse a mon probleme, l'enregistrement se passe bien mais me renvoi cette erreur
Merci d'avance
Ton tableau généré ici :
foreach($value AS $c => $v){
if($c !== $last_key) {
$key .= $c.',';
$val .= "'".$v."',";
}
}
Doit comporter un champs supplémentaire, un blanc etc qui n'est pas présent $key (ou inversement). Fait un var_dump($key); var_dump($val); et vérifie qu'a chaque key il y a bien une val et inversement.
Ensuite $val .= "'".$v."',"; et $lastkey, utilise implode(',', $v); c'est fait pour et pu besoin de last key, il la détecte tout seul. Et les return 'Réussit' et 'Erreur' utilise les boléan true et false c'est aussi fait pour ;) Après ce ne sont que des conseils d'optimisation fait comme tu veut.
;)