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: 113

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 Rechigne D'où l'erreur qui te dit que ton objet ne peut pas être converti en string :p

bykertix

Messages: 32

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

PrimFX
Membre Premium

Messages: 113

Euh nope Tire la langue 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 Clin d'oeil

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: 113

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: 113

Ça marche Sourire 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 ! Grand sourireNerd
$ins->execute(array($_SESSION['Auth']->id,$sujet,$contenu,$notif_mail));

PrimFX
Membre Premium

Messages: 113

Ah nickel Clin d'oeil
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





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