Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2011, 19h59   #1
 
Inscription : juin 2010
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 39
Points : -1
Points : -1
Par défaut Call to a member function prepare() on a non-object

Bonjour, je viens d'hébergé mon site chez 1&1.
Je rencontre l'erreur
Citation:
Fatal error: Call to a member function prepare() on a non-object in /homepages/37/d353709206/htdocs/classes/class_livre.php on line 11
D'après ce que j'ai trouvé, ça serait un problème de version de php. Mais j'ai bien écris dans mon fichier .htaccess la ligne : AddType x-mapp-php5 .php

Code :
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
<?php
    class livre
    {
 
      private $selectAll;
      private $insertAll;
      private $deleteOne;
 
      public function __construct($db)
      {
      $this->selectAll=$db->prepare("select * from livre order by date desc, heure desc ");
      $this->insertAll=$db->prepare("INSERT INTO livre values (:idmessage, :pseudo, :message, :date, :heure)");
      $this->deleteOne=$db->prepare("delete from livre where idmessage=:idmessage");
      }
 
 
 
      public function selectAll()
      {
      $this->selectAll->execute();
      return $this ->selectAll->fetchAll();
      }
 
      public function insertAll($idmessage, $pseudo, $message, $date, $heure)                  // paramétres (valeurs insérées dans la table)
    {
      $this->insertAll->execute(array(':idmessage'=>$idmessage, ':pseudo'=>$pseudo, ':message'=>$message, ':date'=>$date, ':heure'=>$heure));     // execution de la requete
      return $this->insertAll->rowCount();                // fetchall renvoie tout les resultats
    }
 
 
     public function deleteOne ($idmessage)  // entre les () => paramètres
    {
     $this->deleteOne->execute(array(':idmessage'=>$idmessage));
     return $this->deleteOne->rowCount(); 
    }
    }
?>
Code :
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
<?php
 
    echo'<a href="index.php?page=ajoutmessage.php">Ajouter un message</a>';   
    echo'<form action="index.php?page=livre.php" method="POST">'; 
 
    if (isset($_SESSION['login'])) 
    { 
        if(isset($_POST['check']))
        {
        $check=$_POST['check'];
        $livre=new livre($db);
 
            foreach($check as $unlivre)
            {
            $nb=$livre->deleteOne($unlivre);
 
                if ($nb!=1)
                {
                echo'Erreur';
                }   
            }
        }       
    } 
 
 
    $nbparpage=5;
 
    if(isset($_GET['nopage'])) 
    {
    $nopage=$_GET['nopage']; // recup le num
    }
 
        else
        {
        $nopage=1;
        }
 
    $livre = new livre($db);
    $listelivre=$livre -> selectAll();
 
    if (count($listelivre)==0)
    {
    echo'Aucuns messages';
    }
 
        else
        {		
		    $ligne=0;
		    $prems=(($nopage-1)*$nbparpage);
		    $ligne=$prems;
        $dernier=count($listelivre)-$prems;
 
            if($dernier>$nbparpage)
            {
		        $dernier=$nbparpage;
		        }
 
        do      //à '.$unlivre['heure'].'</div></th> 
        {  		  		
  		  $unlivre=$listelivre[$ligne];
 
        echo '<table class="entete">    
                <tr class="pseudo">
 
                  <th width="600px"><div class="test"> '.$unlivre['pseudo'].', le '.implode('/', array_reverse( explode('-',$unlivre['date']) ) ).'';  
 
                    if (isset($_SESSION['login'])) 
	                   { 
                     echo' à '.$unlivre['heure'].'</div></th>'; 
                   }
 
                   else
                   {
                   echo'</div></th>';
                   }
 
                  if (isset($_SESSION['login'])) 
	               { 
 
                echo' <th><input type="checkbox" name="check[]" id="check[]" value="'.$unlivre['idmessage'].'"></th>
                <th>'.$unlivre['idmessage'].'</th>';
                 }
                 echo'                   
              </tr> 
 
             <tr class="message">
                  <th><div class="test2">'.$unlivre['message'].'</div></th>
              </tr>
            </table>';
 
        $ligne=$ligne+1;
        }
		    while($ligne<$dernier+$prems);
 
	     }
 
 
        $nbPages=ceil(count($listelivre)/5);
 
   echo'<div class="page">  ';
    for ($i=1;$i<=$nbPages;$i++)
    {    
        if($nopage!=$i)
        {
		    echo'<a href="index.php?page=livre.php&nopage='.$i.'"><span class="numpage">'.$i.'</span></a>'; //page suivante   
	      }
            else 
		        {
		        echo '<span class="numpageact"> '.$i.' </span>';  // page actuelle
 
		        }
    }
     echo'</div>';
 
    if (isset($_SESSION['login'])) 
 
	{ 
     echo'<input type="submit" value="Supprimer" id="btSupprimer" name="btSupprimer"/></form>'; 
 
      }   
    if($nopage>1)	// il faut qu'il soit au minimum sur la page n°2 pour preceder.	
    {
    $prec=$nopage-1;
    }   
        else
        {
        $prec=1;
        }
 
   // echo '<a href="index.php?page=listemessage.php&nopage='.$prec.'">Précédent</a>';
 
    if($nopage<$nbPages) // Sil le numéro de page actuelle et inferieur au nombre de page total		
    {
    $suiv=$nopage+1; // il peut suivre
    }   
        else
        {
        $suiv=$nbPages; // sinon il prend la dernière page
        }
 
    //echo '<a href="index.php?page=listemessage.php&nopage='.$suiv.'">Suivant</a>';
 
 
 
 
 
 
?>
KenConnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 20h40   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
$db n'est pas défini dans ton code.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 21h03   #3
 
Inscription : juin 2010
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 39
Points : -1
Points : -1
dans mon fichier connexion j'ai ça

Code :
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
<?php
 
$host_db = "*****"; // nom de votre serveur
$user_db = "******"; // nom d'utilisateur de connexion à votre bdd
$password_db = ""; // mot de passe de connexion à votre bdd
$bdd_db = "****"; // nom de votre bdd
 
function connect()
{
global $host_db,$user_db,$password_db,$bdd_db;
$db = mysql_connect($host_db,$user_db,$password_db);
mysql_select_db($bdd_db,$db);
return $db;
}
 
function close()
{
global $db;
mysql_close($db);
}
 
 
 /*   try  
      {
        $db = new PDO('mysql:host=db3010.1and1.fr;dbname=db354410461', 'dbo354410461', '');
        $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
      }
 
      catch (Exception $e)
      {
      echo "echec :" .$e->getMessage();
      }
 
*/
 
?>
Est ce correct ? Quand j'appele la fonction connect ça me dit "Access denied " :/
KenConnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 21h31   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Le fichier de connexion n'est pas présent dans les premiers codes que tu nous a montré.

Pour le "Access denied" et bien, tes informations de connexion ne sont pas bonnes.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 21h51   #5
 
Inscription : juin 2010
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 39
Points : -1
Points : -1
Bon pour l'acces denied c'est bon, par contre j'ai toujours le problème.
KenConnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 21h59   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
Le fichier de connexion n'est pas présent dans les premiers codes que tu nous a montré.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 22h02   #7
 
Inscription : juin 2010
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 39
Points : -1
Points : -1
Voici mon fichier connexion à ma bd

Code :
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
<?php
 
$host_db = "******"; // nom de votre serveur
$user_db = "****"; // nom d'utilisateur de connexion à votre bdd
$password_db = "*****"; // mot de passe de connexion à votre bdd
$bdd_db = "***"; // nom de votre bdd
 
function connect()
{
global $host_db,$user_db,$password_db,$bdd_db;
$db = mysql_connect($host_db,$user_db,$password_db);
mysql_select_db($bdd_db,$db);
return $db;
}
 
function close()
{
global $db;
mysql_close($db);
}
 
connect(); 
 
 
 
 
?>
KenConnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 22h05   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Qu'est ce qui fait le lien entre ce fichier et les autres ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 22h11   #9
 
Inscription : juin 2010
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2010
Messages : 39
Points : -1
Points : -1
Je viens de procédé d'une autre façon :

Code :
1
2
3
4
5
6
7
8
9
10
 try  
      {
        $db = new PDO('mysql:host=****;dbname=****', '****', '****');
        $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
      }
 
      catch (Exception $e)
      {
      echo "echec :" .$e->getMessage();
      }

Ça marche ..
Alors qu'avant ça ne marché pas, tu as surement raison sur le fait qu'il manque un bout de code pour relier ce fichier.
J'ai pourtant fait un require_once
KenConnor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h21.


 
 
 
 
Partenaires

Hébergement Web