IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème Argument 1 passed to function() must be an instance of


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Par défaut Problème Argument 1 passed to function() must be an instance of
    Bonjour à tous.

    Je poste un petit problème que je rencontre actuellement au niveau de mon programme.

    Je m'explique : j'ai un petit problème au niveau de l’exécution avec comme erreur :

    Nom : error.png
Affichages : 194
Taille : 19,3 Ko

    Je sais par avance que l'erreur précise un mauvais nombre de paramètre au niveau constructeur et/ou de la fonction.

    Mais je ne trouve pas le problème.

    Voici mon code :

    model/content :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?php
     
    /**
     * Description of content
     *
     * @author Anthony.Palermo
     */
    class content {
     
        private $idContent;
        private $idUser;
        private $title;
        private $text;
     
        function __construct($idContent=null, $idUser=null, $title=null, $text=null) {
            $this->idContent = $idContent;
            $this->idUser = $idUser;
            $this->title = $title;
            $this->text = $text;
        }
     
     
        function getIdContent() {
            return $this->idContent;
        }
     
        function getIdUser() {
            return $this->idUser;
        }
     
        function getTitle() {
            return $this->title;
        }
     
        function getText() {
            return $this->text;
        }
     
        public function getReqParams ()
        {
            return array ('idContent' => $this->getIdContent(),
                          'idUser' => $this->getIdUser(),
                          'title' => $this->getTitle(),
                          'text' => $this->getText(),
                        );
        }
     
    }
    model/ajouteNews.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?php
     
    require_once 'class/content.php';
    require_once '../autoloader.php';
    require_once '../controller/connexion.php';
     
    function replaceEmailByID()
    {
        $connexion = Connexion::getInstance();
        $emailUser = $_POST['emailUser'];
        $idUser= $connexion->prepare('SELECT idUser from user where emailUser ="'.$emailUser.'"');
        $idUser->execute();
        $ligne = $idUser->fetch(PDO::FETCH_ASSOC);
        return $content = new content('',$ligne['idUser'],$_POST['title'],$_POST['text']);
     
     
    }
     
     
    function testInsert(content $content)
    {
     
        $db= Connexion::getInstance();
        $contents = replaceEmailByID();
     
        $sql=$db->prepare('INSERT INTO content(idContent, idUser, title, text) VALUE (?,?,?,?,?)');
        {
                $params = $content->getReqParams();
                $n=1; // Nombre de paramètres
     
                    foreach($params as $v)
                        {
                            $sql->bindValue($n,$v,PDO::PARAM_STR);
                            echo $v; echo"<br>";
                            $n++;
                        }
     
            $sql->execute();
            $result=$sql->fetchAll();
            return $result;
          }
     
        var_dump($sql,$contents); 
     
    }
    et mon controller/ajouteNew.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
     
    /**
     * Description of ajouteDesNews
     *
     * @author Anthony.Palermo
     */
    require_once '../model/class/content.php';
    require_once '../model/ajouteNews.php';
     
     
    class ajouteNew
    {
       public static function ExecuteAddNew()
       {
           testInsert();
       }
    }
     
    ajouteNew::ExecuteAddNew();
    Si quelqu'un a une solution, je suis preneur =);

    PS : Lors de mes debug, je récupère bien mes informations avec les bonnes valeurs

  2. #2
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Par défaut
    Bonjour,

    Dans le troisième extrait de code, tu as :
    or ta fonction testInsert demande au moins un paramètre, manquant dans cet appel.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Par défaut
    Ah oui en effet, je viens de rajouter mon objet "content" en paramètre mais l'erreur persiste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    require_once '../model/class/content.php';
    require_once '../model/ajouteNews.php';
     
     
    class ajouteNew 
    {
       public static function ExecuteAddNew(content $content)
       {
           testInsert($content);
       }
    }
     
    ajouteNew::ExecuteAddNew();

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ce serait sans doute une bonne idée d'ajouter également un paramètre à l'appel à ExecuteAddNew ici : ajouteNew::ExecuteAddNew();
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Par défaut
    J'ai résolu une partie de mon code, justement au niveau du controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php
     
    /**
     * Description of ajouteDesNews
     *
     * @author Anthony.Palermo
     */
    require_once '../model/class/content.php';
    require_once '../model/ajouteNews.php';
     
     
    class ajouteNew
    {
       public static function ExecuteAddNew()
       {
           $content = new content;
           testInsert($content);
       }
    }
     
    ajouteNew::ExecuteAddNew();

    Maintenant j'ai juste un problème au niveau de l'insertion.
    J'y bosse actuellement

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Par défaut
    Après plus d'une heure de travail sur ce maudit code.
    J'ai mon erreur qui persiste au niveau des paramètres envoyés au niveau de "execute()".

    J'ai essayer de convertir mon objet en un tableau afin de renvoyer un "array" dans "execute()" sans succès.
    J'ai essayer de redéfinir le code afin de supprimer la boucle "foreach" et d'entrer en dur les résultats : sans succès.

    Donc je suis à votre merci pour une dernière aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <?php
    
    require_once 'class/content.php';
    require_once '../autoloader.php';
    require_once '../controller/connexion.php';
    
    function replaceEmailByID()
    {
        $connexion = Connexion::getInstance();
        $emailUser = $_POST['emailUser'];
        $idUser= $connexion->prepare('SELECT idUser from user where emailUser ="'.$emailUser.'"');
        $idUser->execute();
        $ligne = $idUser->fetch(PDO::FETCH_ASSOC);
        return $content = new content('',$ligne['idUser'],$_POST['title'],$_POST['text']); 
        
          
    }
    
    
    function insertContent()
    {
        
        $db= Connexion::getInstance();
        $contents = replaceEmailByID();
        
       var_dump($contents);
        
        if (isset($_POST['submit']) && !empty($contents)) {
    
    
        $sql=$db->prepare('INSERT INTO content(idContent, idUser, title, text) VALUES (?,?,?,?)');
        {
                $params = $contents;
                $n=1; // Nombre de paramètres 
                
                    foreach($params as $v)
                        {
                            $sql->bindValue($n,$v,PDO::PARAM_STR); 
                            echo $v; echo"<br>";
                            $n++;
                        }
    	
            $sql->execute();
            $result=$sql->fetchAll();
            return $result;
          }
            
            
    }  else {
        return false;
    } 
       
    }
    l'erreur ce trouve au niveau de l'execute() selon mon navigateur : PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

    merci d'avance

Discussions similaires

  1. [phpMyAdmin] [phpMyAdmin] Problème mot de passe Root !
    Par StouffR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 26/09/2014, 11h59
  2. Réponses: 4
    Dernier message: 05/05/2013, 20h22
  3. Problème function must return type "trigger"
    Par pony99 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2012, 15h58
  4. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29
  5. Problème de fstream passé en paramètre
    Par Beb8 dans le forum SL & STL
    Réponses: 2
    Dernier message: 11/04/2005, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo