Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Personne...
Auteur Sujet: ERREUR EN PHP catchable fatal error: Object of class stdClass

bykertix

Messages: 32

Bonjour, donc voila j'ai une erreur en php je n'arrive pas a la regler, vous pouvez m'aider ?

L'erreur: Catchable fatal error: Object of class stdClass could not be converted to string in /home/cristalh/public_html/bykertix/nouveau_topic.php on line 20

Le Code:

<?php $Auth->allow('member'); ?>
<?php if($Auth->user('id')); ?>
<?php
$pdo = new PDO('mysql:dbname=c***;host=localhost', 'cr**', 'C***S');
/* Traitement du formulaire de création de Topic */
if(isset($_SESSION['Auth'])) {
   if(isset($_POST['tsubmit'])) {
      if(isset($_POST['tsujet'],$_POST['tcontenu'])) {
         $sujet = htmlspecialchars($_POST['tsujet']);
         $contenu = htmlspecialchars($_POST['tcontenu']);
         if(!empty($sujet) AND !empty($contenu)) {
            if(strlen($sujet) <= 70) {
               if(isset($_POST['tmail'])) {
                  $notif_mail = 1;
               } else {
                  $notif_mail = 0;
               }
               $ins = $pdo->prepare('INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())');
               $ins->execute(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));
            } else {
               $terror = "Votre sujet ne peut pas dépasser 70 caractères";
            }
         } else {
            $terror = "Veuillez compléter tous les champs";
         }
      }
   }
} else {
   $terror = "Veuillez vous connecter pour poster un nouveau topic";
}
require('nouveau_topic.view.php'); /* Appel du fichier "vue" de notre page */
?>

Publicité

PrimFX
Membre Premium

Messages: 125

Salut !
Je pense que ton erreur vient de cette ligne:
$ins->execute(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));
On dirait qu'une de tes variables que tu fais passer en array() est un objet "stdClass" et non une string 😦 D'où l'erreur qui te dit que ton objet ne peut pas être converti en string :p

bykertix

Messages: 32

Ah 😦 ducoup il faut que je place une variable avant le
$_SESSION
  ?

PrimFX
Membre Premium

Messages: 125

Euh nope 😋 Je te conseillerais de faire un var_dump() de chaque variable que tu passes en paramètre de ta requête. La variable qui fait bugger ta requête sera celle qui retournera un objet et non une string 😉

bykertix

Messages: 32

Quand je fait un var_dump sa me dit sa: 
array(4) { [0]=> object(stdClass)#1 (16) { ["id"]=> string(1) "1" ["username"]=> string(8) "ByKeRTiX" ["email"]=> string(23) "gog********" ["password"]=> string(60) "$2y$10$x***********PXhie" ["address"]=> string(9) "Fondateur" ["confirmation_token"]=> NULL ["confirmed_at"]=> string(4) "2015" ["remember_token"]=> NULL ["remember_at"]=> NULL ["reset_token"]=> string(60) "wHDlMrRccBos1UZReGo4SieNpeUnDLeS5ScQQpiv8NGOm90pj4p5BSN3AfxX" ["reset_at"]=> string(19) "2016-03-27 00:50:09" ["role_id"]=> string(1) "1" ["avatar"]=> string(0) "" ["name"]=> string(14) "Administrateur" ["slug"]=> string(5) "admin" ["level"]=> string(1) "2" } [1]=> string(3) "dfd" [2]=> string(4) "dffd" [3]=> int(0) } Catchable fatal error: Object of class stdClass could not be converted to string in /home/cristalh/public_html/bykertix/nouveau_topic.php on line 21

PrimFX
Membre Premium

Messages: 125

Oui mais là tu as fait un var_dump de $ins non ?
Je pense que le mieux serait de faire un var_dump de chaque variable que tu passes en paramètre séparément, sinon c'est galère de s'y retrouver :p

bykertix

Messages: 32

J'ai fait sa juste avant la ligne 20
var_dump(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));

PrimFX
Membre Premium

Messages: 125

Ça marche 😀 Test ça et dis-moi ce que ça te retourne (histoire d'avoir les résultats de chaque variable séparément) ;)
var_dump($_SESSION['auth']);
var_dump($sujet);
var_dump($contenu);
var_dump($notif_mail);

bykertix

Messages: 32

NULL string(3) "ttt" string(3) "ttt" int(0) 

sa me dit sa

bykertix

Messages: 32

Et sa: 

object(stdClass)#1 (16) { ["id"]=> string(1) "1" ["username"]=> string(8) "ByKeRTiX" ["email"]=> string(23) "gogob***mail.com" ["password"]=> string(60) "$2*******ie" ["address"]=> string(9) "Fondateur" ["confirmation_token"]=> NULL ["confirmed_at"]=> string(4) "2015" ["remember_token"]=> NULL ["remember_at"]=> NULL ["reset_token"]=> string(60) "wHDlMrRccBos1UZReGo4Si***v8NGOm90pj4p5BSN3AfxX" ["reset_at"]=> string(19) "2016-03-27 00:50:09" ["role_id"]=> string(1) "1" ["avatar"]=> string(0) "" ["name"]=> string(14) "Administrateur" ["slug"]=> string(5) "admin" ["level"]=> string(1) "2" } string(2) "tt" string(2) "tt" int(0)

bykertix

Messages: 32

J'ai trouver la solution, sa marche ! 😄
$ins->execute(array($_SESSION['Auth']->id,$sujet,$contenu,$notif_mail));

PrimFX
Membre Premium

Messages: 125

Ah nickel 😉
Tu vois, grâce aux var_dump() tu peux voir ce qui déconne, quelle variable n'est pas une string, ce qu'elles contiennent, ... :)
Bref, cool que tu ais trouvé solution à ton problème !
@+

theagar

Messages: 9





Vous devez vous connecter ou créer un compte pour poster une réponse