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

3 réponses


zebulonbof
Réponse acceptée

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.

;)

jaa09
Auteur

Je te remercie, je vais regarder cela :)

Si ton problème est résolu, n'oublie pas de venir valider la réponse ici ;)