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

PHP & Base de données Discussion :

erreur php argument [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut erreur php argument
    Bonjour, je suis nouveau ici, je suis actuellement en formation pour le titre de developpeur logiciel web php orienté object.
    Je suis en stage et j'ai un une erreur qui est la suivante :
    Catchable fatal error: Argument 1 passed to dao\MysqlDao_1::ajoutDemandes() must be an instance of entity\demandes, instance of controller\Demandes given, called in C:\Users\greta\eureka_2\controller\Demandes.php on line 26 and defined in C:\Users\greta\eureka_2\dao\MysqlDao_1.php on line 182
    J'ai pourtant créer la partie "inscription" et "connexion" sans problème, j'utilise la méthode avec les attributs nécessaire à mon objet demande, mais impossible de résoudre ce pb, j'ai refait mon object demande, meme la table sql correspondante, mais ça n'as servi à rien car cette erreur est tjs présente, si qq'un à déja rencontrer ce probleme, ou qui à la solution, je serai content qu'il m'aide ( ca fait qques jours que je suis dessus...)

    Merci

  2. #2
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    sans voir le code il est difficile de t'aider.

    Si tu peux nous montrer les deux blocs indiqué dans la description de l'erreur?

    A+
    Si un commentaire t'as aidé pense à mettre un .

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    voici mon controller Demandes :
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    <?php
     
    namespace controller;
     
    use dao\MysqlDao_1;
    use entity\users;
    use entity\services;
    use entity\frequences;
    use \DateTime;
     
    class Demandes {
     
        public function action() {
            $dao = new MysqlDao_1();
     
     
     
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     
                $ref_demande = htmlentities($_POST['demande']);
                $nat_demande = htmlentities($_POST['services']);
                $descrip_demande = htmlentities($_POST['comments']);
                $freq_demande = htmlentities($_POST['frequences']);
                $date_demande = new DateTime('NOW');
                $demande = new demandes(NULL, $ref_demande, $nat_demande, $descrip_demande, $freq_demande, NULL, $date_demande, NULL, NULL, NULL, NULL);
                $dao->ajoutDemandes($demande);
     
    mon object demandes.php :
     
    <?php
     
    namespace entity;
     
    class demandes {
     
        private $id;
        private $ref_demande;
        private $nat_demande;
        private $descrip_demande;
        private $freq_demande;
        private $statut_demande;
        private $date_demande;
        private $date_upload = null;
        private $date_download = null;
        private $prix = null;
        private $url = null;
     
        function __construct($id, $ref_demande, $nat_demande, $descrip_demande, $freq_demande, $statut_demande, $date_demande, $date_upload, $date_download, $prix, $url) {
            $this->id = $id;
            $this->ref_demande = $ref_demande;
            $this->nat_demande = $nat_demande;
            $this->descrip_demande = $descrip_demande;
            $this->freq_demande = $freq_demande;
            $this->statut_demande = $statut_demande;
            $this->date_demande = $date_demande;
            $this->date_upload = $date_upload;
            $this->date_download = $date_download;
            $this->prix = $prix;
            $this->url = $url;
        }
     
        public function getId() {
            return $this->id;
        }
     
        public function getRef_demande() {
            return $this->ref_demande;
        }
     
        public function setRef_demande($ref_demande) {
            $this->ref_demande = $ref_demande;
        }
     
        public function getNat_demande() {
            return $this->nat_demande;
        }
     
        public function setNat_demande($nat_demande) {
            $this->nat_demande = $nat_demande;
        }
     
        public function getDescrip_demande() {
            return $this->descrip_demande;
        }
     
        public function setDescrip_demande($descrip_demande) {
            $this->descrip_demande = $descrip_demande;
        }
     
        public function getFreq_demande() {
            return $this->freq_demande;
        }
     
        public function setFreq_demande($freq_demande) {
            $this->freq_demande = $freq_demande;
        }
     
        public function getStatut_demande() {
            return $this->statut_demande;
        }
     
        public function setStatut_demande($statut_demande) {
            $this->statut_demande = $statut_demande;
        }
     
        public function getDate_demande() {
            return $this->date_demande;
        }
     
        public function setDate_demande($date_demande) {
            $this->date_demande = $date_demande;
        }
     
        public function getDate_upload() {
            return $this->date_upload;
        }
     
        public function setDate_upload($date_upload) {
            $this->date_upload = $date_upload;
        }
     
        public function getDate_download() {
            return $this->date_download;
        }
     
        public function setDate_download($date_download) {
            $this->date_download = $date_download;
        }
     
        public function getPrix() {
            return $this->prix;
        }
     
        public function setPrix($prix) {
            $this->prix = $prix;
        }
     
        public function getUrl() {
            return $this->url;
        }
     
        public function setUrl($url) {
            $this->url = $url;
        }
     
        public function __toString() {
            return "$this->id 
                    $this->raison 
                    $this->ref_demande 
                    $this->nat_demande 
                    $this->descrip_demande 
                    $this->freq_demande 
                    $this->statut_demande 
                    $this->date_demande 
                    $this->date_upload 
                    $this->date_download 
                    $this->prix 
                    $this->url";
        }
     
    }
     
    ?>
    Et mon formulaire de demande html :

    Code html : 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
    <div id="fiste">
        <h1 id="titre5">Formulaire de demande</h1><br/><br/>
        <form action='Demandes' method="POST" id="mod2">
            <table>
                <tr><td>Référence de la demande (*) : </td>
                    <td><input type=text size=30 name="demande" placeholder="Taper une référence" id="demande" /></td></tr>
                <tr><td>Nature du service demandé (*) : </td>
                    <td><select name="services" id="services" >
                            <?php foreach ($services as $service): ?>
                                <option><?php echo "$service"; ?></option>
                            <?php endforeach; ?>
                        </select></td></tr>
                <tr><td colspan=2>Description de la demande (*) : <br />
                        <textarea COLS=40 ROWS=8 name=comments placeholder="Taper la description de votre demande" id="comments"></textarea>
                    </td></tr>
                <tr><td>Fréquence demandée (*) : </td>
                    <td><select name="frequences" id="frequences" >
                            <?php foreach ($frequences as $frequence): ?>
                                <option><?php echo "$frequence"; ?></option>
                            <?php endforeach; ?>
                        </select></td></tr>
            </table><br/>
            <input type='submit' value='Envoyer' id="envoyer2"/>
        </form>

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    j'ai oublié, voici la fonction ajoutDemande de mon dao :

    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
    public function ajoutDemandes(demandes $demandes, frequences $frequences) {
            $sql = "INSERT INTO eur_demandes(id, ref_demande, nat_demande, descrip_demande, freq_demande, statut_demande, date_demande, date_upload, date_download, prix, url) VALUES (:id, :ref_demande, :nat_demande, :descrip_demande, :freq_demande, :statut_demande, :date_demande, :date_upload, :date_download, :prix, :url);";
            $stmt = $this->dbh->prepare($sql);
            $stmt->bindParam(':id', $demandes->getId());
            $stmt->bindParam(':ref_demande', $demandes->getRef_demande());
            $stmt->bindParam(':nat_demande', $demandes->getNat_demande());
            $stmt->bindParam(':descrip_demande', $demandes->getDescrip_demande());
            $stmt->bindParam(':freq_demande', $frequences->getNom());
            $stmt->bindParam(':statut_demande', $demandes->getStatut_demande());
            $stmt->bindParam(':date_demande', $demandes->getDate_demande()->format('c'));
            $stmt->bindParam(':date_upload', $demandes->getDate_upload()->format('c'));
            $stmt->bindParam(':date_download', $demandes->getDate_download()->format('c'));
            $stmt->bindParam(':prix', $demandes->getPrix());
            $stmt->bindParam(':url', $demandes->getUrl());
            $stmt->execute();
        }

  5. #5
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Vu le code pour te simplifier la tache je te conseille de chercher un peu du coté du coté concept de "manager" et surtout le concept "hydrate".

    à mon avis l'erreur est là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function ajoutDemandes(demandes $demandes, frequences $frequences) {
    Ta classe c'est Demandes pas demandes
    Contrôle aussi frequences.

    PHP est assez libre dans son code mais beaucoup moins quand on passe en object

    A+
    Si un commentaire t'as aidé pense à mettre un .

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    lol, merci de ta réponse cependant dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function ajoutDemandes(demandes $demandes, frequences $frequences) {
    j'ai besoin du paramètre "demandes" si c'est par rapport aux majuscules, j'ai simplement oublier en les créant, mais ce sont bien mes objets.

    Et c'est quoi le concept "manager" et "hydrate", enfin je tape ça dans google ou bien dans quoi je fais cette recherche ?

  7. #7
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function ajoutDemandes(demandes $demandes, frequences $frequences) {
    devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function ajoutDemandes(Demandes $demandes, Frequences $frequences) {
    La casse est importante ici car c'est un type que tu passe.

    C'est ce que dit ton message d'erreur tu appelle ta fonction avec un type "controller\Demandes" alors qu'un type "entity\demandes" est attendu

    Oui cherche "hydrate php" et "php manager poo" tu devrais trouver ce dont je te parle.

    Ca simplifira tes constructeur grandement pour l'hydrate et pour le manager, ça permet de centraliser toutes les actions sur tes objects dao.

    A+
    Si un commentaire t'as aidé pense à mettre un .

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci, j'ai modifié mes entity en mettant les majuscules, mais ça ne change rien, j'ai tjs la meme erreur

    Catchable fatal error: Argument 1 passed to dao\MysqlDao_1::ajoutDemandes() must be an instance of entity\Demandes, instance of controller\Demandes given, called in C:\Users\greta\eureka_2\controller\Demandes.php on line 26 and defined in C:\Users\greta\eureka_2\dao\MysqlDao_1.php on line 182
    Tu as surement raison pour la casse, mais je me doutais que ce n'était pas ça le pb, car pour "l'inscription" et "connexion" je n'avais pas mis de majuscules et ça fonctionnait, mais j'ai quand meme suivi tes conseils, du coups je leurs est mis les majuscusles aussi.

    Et merci je vais potasser l' "hydrate php" et "php manager poo", car cette erreur me sort par les yeux, je vais me changer les idées...lol

  9. #9
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 103
    Points : 4 449
    Points
    4 449
    Par défaut
    c'est que tu as un grand bazard dans tes namespaces ou(et) nom de classes

    \entity\demandes
    \controller\Demandes
    l'erreur est claire, attente d'un entity\demandes et tu lui passe dans ta fonction un controller\Demandes

    ce ne serait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $demande = new \entity\demandes()
    $moi= ( !== ) ? : ;

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    J'ai rajouter entity devant, alors je ne sais pas si ça à résolu le pb, mais maintenant ça me marque :

    Catchable fatal error: Argument 2 passed to dao\MysqlDao_1::ajoutDemandes() must be an instance of entity\Frequences, none given, called in C:\Users\greta\eureka_2\controller\Demandes.php on line 26 and defined in C:\Users\greta\eureka_2\dao\MysqlDao_1.php on line 182
    Merci de ta patience lool

  11. #11
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    A voir aussi cette ligne si ce n'est pas déjà fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $demande = new Demandes(NULL, $re...
    A+
    Si un commentaire t'as aidé pense à mettre un .

  12. #12
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Pour ta dernière erreur c'est normal, tu as un seul paramètre dans ton appel, et deux dans ta déclaration de fonction

    A+
    Si un commentaire t'as aidé pense à mettre un .

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    C'est bon, enfin j'ai encore une erreur mais de format(), je pense que c'est sur le datetime, enfait j'avais mis en parametre de ma fonction ajoutDemande() l'object Frequence en plus de l'object Demande, je l'ai virer car pas besoin.

    Ben Merci beaucoup Olivier pr ton aide et ta patience !! @ bientot et encore merci !!!

  14. #14
    Membre régulier Avatar de Sakukun
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 74
    Points : 113
    Points
    113
    Par défaut
    Bonjour,

    Pas de soucis,

    pour les formats pense à au 3ieme paramètre de bindValue PDO::PARAM_INT PDO::PARAM_STR en fonction du type de données. Et pour les dates tu peux faire du TO_DATE (dans ta requete mysql).

    A+
    Si un commentaire t'as aidé pense à mettre un .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur PHP
    Par BW7541 dans le forum Langage
    Réponses: 4
    Dernier message: 30/03/2006, 15h02
  2. récupérer les erreurs php dans des exceptions
    Par jeanvincent dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h26
  3. [Sessions] Message erreur PHP création de session
    Par Ylias dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2005, 11h11
  4. [Apache]Erreur PHP
    Par orditeck dans le forum Apache
    Réponses: 2
    Dernier message: 05/07/2005, 22h42
  5. Erreur php je pense
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/06/2005, 13h45

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