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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[FluxBB] Fatal error PUNBB


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 37
    Par défaut [FluxBB] Fatal error PUNBB
    Bonjour,

    Je créer actuellement un site internet baser sur punbb, auquel je rajoute un menu, un skin et quelques autres trucs afin de créer un site fonctionnelle avec la sécurité punbb.

    Mais j'ai voulu rajouter un accès à une autre database et depuis, j'ai de temps en temps ce message d'erreur :

    Fatal error: Call to a member function query() on a non-object in /home/www/sargeras.fr/menu.php on line 67

    Par exemple lorsque l'utilisateur se trompe de mot de passe depuis la zone de connexion.
    Je fais tourner le site sur un serveur dedié sous debian lenny et je ne trouve pas du tout d'ou peut venir le problème, quelqu'un peut-il m'aider ? merci bien

  2. #2
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    En fait l'erreur signifie que la fonction query() est appelé hors objet.
    Un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    class Test
    {
      function Query()
       {
           echo "Hello world";
        }
    }
     
    Query();
    ?>
    Ce bout de code retournera le même message d'erreur que le tien.

    Alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    class Test
    {
      function Query()
       {
           echo "Hello world";
        }
    }
    $oObjet = new Test();
    $oObjet -> Query();
    ?>
    Le résultat affichera hello world.

    Cela signifie que ton objet n'est pas initialisé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 37
    Par défaut
    Tout d'abord merci de ta réponse, mais sa ne marche toujours pas,

    le truc vraiment bizarre, c'est que sa bug seulement sur certaine page (en général les pages ou il y a une erreur (du genre tromper de mdp, erreur dans lupload davatar ou ajout de sujet...).

    je ne comprends vraiment pas pourquoi sa ne fonctionne pas sur ces pages qui ne sont pourtant pas si différentes.

    J'ai réussi à contourner un peu le bug (éviter la fatal error) avec ceci :
    if(is_object($db_characters)){

    Mais j'ai toujours cette erreur qui persiste sur certaines pages (les memes que précédemment)
    Notice: Undefined variable: db_characters in /home/www/sargeras.fr/menu.php on line 70

  4. #4
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Citation Envoyé par baddark Voir le message
    (...)
    Notice: Undefined variable: db_characters in /home/www/sargeras.fr/menu.php on line 70
    Ca, c'est une autre erreur qui n'a rien à voir avec la première.

    Là, PHP te dis juste qu'il ne trouve pas la variable db_caracters.

    Un bout de code peut-être ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 37
    Par défaut
    La variable $db_characters est defini comme ceci

    $db_characters = new DBLayer($db_host, $db_username, $db_password, 'characters', $db_prefix, $p_connect);

    avec cette fonction la :
    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
    class DBLayer
    {
    	var $prefix;
    	var $link_id;
    	var $query_result;
     
    	var $saved_queries = array();
    	var $num_queries = 0;
     
     
    	function DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, $foo)
    	{
    		$this->prefix = $db_prefix;
     
    		// Was a custom port supplied with $db_host?
    		if (strpos($db_host, ':') !== false)
    			list($db_host, $db_port) = explode(':', $db_host);
     
    		if (isset($db_port))
    			$this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name, $db_port);
    		else
    			$this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name);
     
    		if (!$this->link_id)
    			error('Unable to connect to MySQL and select database. MySQL reported: '.mysqli_connect_error(), __FILE__, __LINE__);
    	}
     
     
    	function start_transaction()
    	{
    		return;
    	}
     
     
    	function end_transaction()
    	{
    		return;
    	}
     
     
    	function query($sql, $unbuffered = false)
    	{
    		if (defined('PUN_SHOW_QUERIES'))
    			$q_start = get_microtime();
     
    		$this->query_result = @mysqli_query($this->link_id, $sql);
     
    		if ($this->query_result)
    		{
    			if (defined('PUN_SHOW_QUERIES'))
    				$this->saved_queries[] = array($sql, sprintf('%.5f', get_microtime() - $q_start), debug_backtrace());
     
    			++$this->num_queries;
     
    			return $this->query_result;
    		}
    		else
    		{
    			if (defined('PUN_SHOW_QUERIES'))
    				$this->saved_queries[] = array($sql, 0, debug_backtrace());
     
    			return false;
    		}
    	}
     
     
    	function result($query_id = 0, $row = 0)
    	{
    		if ($query_id)
    		{
    			if ($row)
    				@mysqli_data_seek($query_id, $row);
     
    			$cur_row = @mysqli_fetch_row($query_id);
    			return $cur_row[0];
    		}
    		else
    			return false;
    	}
     
     
    	function fetch_assoc($query_id = 0)
    	{
    		return ($query_id) ? @mysqli_fetch_assoc($query_id) : false;
    	}
     
     
    	function fetch_row($query_id = 0)
    	{
    		return ($query_id) ? @mysqli_fetch_row($query_id) : false;
    	}
     
     
    	function num_rows($query_id = 0)
    	{
    		return ($query_id) ? @mysqli_num_rows($query_id) : false;
    	}
     
     
    	function affected_rows()
    	{
    		return ($this->link_id) ? @mysqli_affected_rows($this->link_id) : false;
    	}
     
     
    	function insert_id()
    	{
    		return ($this->link_id) ? @mysqli_insert_id($this->link_id) : false;
    	}
     
     
    	function get_num_queries()
    	{
    		return $this->num_queries;
    	}
     
     
    	function get_saved_queries()
    	{
    		return $this->saved_queries;
    	}
     
     
    	function free_result($query_id = false)
    	{
    		return ($query_id) ? @mysqli_free_result($query_id) : false;
    	}
     
     
    	function escape($str)
    	{
    		return is_array($str) ? '' : mysqli_real_escape_string($this->link_id, $str);
    	}
     
     
    	function error()
    	{
    		$result['error_sql'] = @current(@end($this->saved_queries));
    		$result['error_no'] = @mysqli_errno($this->link_id);
    		$result['error_msg'] = @mysqli_error($this->link_id);
     
    		return $result;
    	}
     
     
    	function close()
    	{
    		if ($this->link_id)
    		{
    			if ($this->query_result)
    				@mysqli_free_result($this->query_result);
     
    			return @mysqli_close($this->link_id);
    		}
    		else
    			return false;
    	}
    }
    C'est pourtant bizarre :s, la fonction est bien déclaré et appeler puisqu'elle fonctionne sur la plupart des pages,

    Surtout que c'est exactement la même que celle utiliser de base par punbb pour ses accès db :
    $db = new DBLayer($db_host, $db_username, $db_password, $db_name, $db_prefix, $p_connect);

    J'ai juste changer la database.

  6. #6
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Là, j'avoue que je sèche. Désolé il est tard et je n'ai plus les idées très claires.

    J'y jetterai un œil demain. Bonne soirée.

Discussions similaires

  1. erreurs fatal error C1010 dans visual c++ 6.0
    Par screeminelle dans le forum MFC
    Réponses: 2
    Dernier message: 12/10/2005, 13h30
  2. Fatal error: Allowed memory size of...
    Par Webfab dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 10h11
  3. Réponses: 17
    Dernier message: 28/07/2005, 08h20
  4. Fatal Error : OpenGL GLX extension not support
    Par kacedda dans le forum GLUT
    Réponses: 5
    Dernier message: 06/06/2005, 10h28
  5. class php5 - Fatal error: main() [function.main]
    Par tom261285 dans le forum Langage
    Réponses: 3
    Dernier message: 21/01/2005, 14h41

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