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 :

Call to undefined function


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut Call to undefined function
    Bonjour,

    Voila j'ai ce message d'erreur :
    Fatal error: Call to undefined function NomDomaine() in /home/projetsm/www/mailjet/index.php on line 28
    Voici ma fonction NomDomaine() :
    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
    require_once('php-mailjet.class-mailjet-0.1.php');
     
    class NomDomaine
    {
    	var $smtp;
     
        var $methode = 'userDomainlist';
     
    	var $option = array();
     
    	var $type = 'GET';
     
    	public function __construct()
    	{
    		$this->smtp = new Mailjet();
    	}
     
    	public function NomDomaine()
    	{
    		$therequest = $smtp->sendRequest($methode,$option,$type);
     
    		if($therequest === true)
    		{ 
     
    		$outgoing = $smtp->_response;
     
    		foreach( $outgoing->domains as $valeur)  
    		    { 
    			    echo '<tr><td>'.$valeur->domain.'</td></tr>';
    		    } 
     
    		} 
    		else{ 
    			echo "Erreur de r&eacute;cup&eacute;ration des donn&eacute;es";
    		}
    	}
    et voila ou je l'appelle :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <meta http-equiv="Content-Language" content="fr" />
     <meta name="author" content="Thibaut Lallement" />
     <title>
     	 Statistique Mailjet
     </title>
    </head>
    <header>
    		<?php include ('NomDomaine.php'); ?>
    </header>
    <body>
    	<p>
    		<h1>Bienvenu sur l'interface Web de votre compte MailJet : </h1>
    	</p>
    	<center><table border="3">
    		<tr>
    			<td>
    				Nom du domaine :
    			</td>
    			<td>
    				Nombre d'email envoyé :
    			</td>
    		</tr> 
    		<?php NomDomaine(); ?>
    	</table></center>
    </body>
    </html>
    Pour faire un petit résumé ma fonction me permet de récupérer des données grâce a une méthode d'une API e je souhaite juste afficher les données dans mon tableau !

    Quelle grossière erreur ai-je faite cette fois ci ?

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    NomDomaine est une classe, pas une fonction... tu ne peux donc pas écrire
    puisque comme te l'indique le message d'erreur, aucune fonction NomDomaine() n'a été définie dans le code.

    Il faut d'abord créer une instance de ta classe et appeler sa méthode éponyme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $instance = new NomDomaine();
    $instance->NomDomaine();
    Ceci dit, appeler une méthode du même nom que ta classe n'est pas l'idée la plus géniale que tu ais eue...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    J'ai honte ... certes je débute en POO mais il me semble que ceci est la base en tout cas merci pour ta réponse rapide et pertinente !

    J'ai effectué les changements et maintenant :

    Fatal error: Call to a member function sendRequest() on a non-object in /home/projetsm/www/mailjet/Domaine.php on line 16
    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
    <?php 
    require_once('php-mailjet.class-mailjet-0.1.php');
    class Domaine
    {
    	var $smtp;
    	var $methode = 'userDomainlist';
    	var $option = array();
    	var $type = 'GET';
     
    	public function __construct()
    	{
    		$this->smtp = new Mailjet();
    	}
    	public function NomDomaine()
    	{
    		$therequest = $smtp->sendRequest($methode,$option,$type);
    		if($therequest === true)
    		{ 
    		$outgoing = $smtp->_response;
    		foreach( $outgoing->domains as $valeur)  
    		    { 
    			    echo '<tr><td>'.$valeur->domain.'</td></tr>';
    		    } 
    		} 
    		else{ 
    			echo "Erreur de r&eacute;cup&eacute;ration des donn&eacute;es";
    		}
    	}
    }
    ?>
    As-tu une idée ?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    A mon avis, tu n'as pas instancié ton objet Domaine. De ce fait, tu n'es pas passé dans le __construct et donc $smtp vaut null..

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $oDomain = new Domaine();
    $oDomain->NomDomaine();

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ceci dit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Domaine extends Mailjet
    pourrait s'avérer judicieux dans ton cas...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    Citation Envoyé par chico_du_33 Voir le message
    A mon avis, tu n'as pas instancié ton objet Domaine. De ce fait, tu n'es pas passé dans le __construct et donc $smtp vaut null..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php 
    		$inst = new Domaine(); 
    		$inst->NomDomaine();
    		?>
    Si je l'avais fait ! C'était à cause de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $therequest= $smtp->sendRequest($methode,$option,$type);
    que j'ai transformé en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $therequest = $this->smtp->sendRequest($this->methode,$this->option,$this->type);
    Mais une autre erreur est apparue !

    Warning: Invalid argument supplied for foreach() in /home/projetsm/www/mailjet/Domaine.php on line 29


    Alors que cette boucle je l'ai testé en procédural, en testant les retours des méthodes et elle marchait très bien je n'y comprend rien

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    Effectivement j'avais mal lu ton code...
    ça donne quoi quand tu fais après la ligne 19 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    var_dump($outgoing);
    die;

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ceci dit,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Domaine extends Mailjet
    pourrait s'avérer judicieux dans ton cas...
    ça dépend de ce qu'il compte faire de sa classe. Etendre en direct une lib de mail ça n'apporte pas forcément que des avantages

  10. #10
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Par défaut
    T'embête pas j'ai trouvé exactement la même erreur qu'au dessus :

    remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $outgoing = $smtp->_response;
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $outgoing = $this->smtp->_response;
    idiot que je suis !

    Bon bah voila je vous remercie mes données s'affichent tout comme je voulais dans mon tableau merci à vous deux !

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

Discussions similaires

  1. [XSLT] Call to undefined function xslt_create
    Par rudy207 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 30/04/2009, 18h27
  2. [SGBD] Call to undefined function mysql_connect()
    Par monphp dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 29/01/2006, 22h33
  3. Call to undefined function mysql_connect()
    Par monphp dans le forum Installation
    Réponses: 1
    Dernier message: 29/12/2005, 14h31
  4. Réponses: 11
    Dernier message: 08/12/2005, 17h54
  5. Call to undefined function mysql_pconnect()
    Par shirya dans le forum Installation
    Réponses: 2
    Dernier message: 03/11/2005, 22h55

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