j'ai un problème dans une requête qui doit enregistrer des activités sportives et qui me retourne le message d'erreur suivant:
Fatal error: Call to a member function prepare() on a non-object dans ma fonction enregistrer_activite().
Je pense que c'est plus un problème de connexion car ma requête fonctionnait quand tous les fichiers étaient dans un fichier unique je n'ai fait que de la mettre dans une fonction. je voulais savoir si le fait de mettre tous les fichiers dans des dossiers séparés pouvait jouer sur le fait que ma connexion n'était pas reconnu en fonction des include que l'on faisait .Je précise que j'utilise PDO mais que je débute en programmation objet et que donc tout n'est sûrement pas bon car j'appelle ma connexion avec global $bdd et j'ai un doute là dessus .
voici les codes:
Monsite/index.php :
<?php
include(__DIR__.'/Modele/connexion_sql.php');
if (isset($_GET['page']) AND $_GET['page']=='enregistrer')
{
include_once(__DIR__.'/Controleur/enregistrer/enregistrer_activites_cont.inc.php');
}
?>
Monsite/Modele/connexion_sql.php:
<?php
// Connexion à MySQL avec PDO
try
{
$bdd = new PDO('mysql:host=localhost;dbname=madatabase', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
Monsite/Controleur/enregistrer/enregistrer_activites_cont.inc.php :
<?php
if (isset($_POST['date']) AND isset($_POST['activite']) AND (! empty($_POST['date']) ) AND (! empty($_POST['activite'])))
{
include_once(__DIR__.'/../../Modele/enregistrer/enregistrer_activites_mod.inc.php');
$enreg = enregistrer_activite();
}
Monsite/Modele/enregistrer/enregistrer_activites_mod.inc.php :
<?php
function enregistrer_activite()
{
global $bdd;
//ci dessous la ligne qui pose problème
$req = $bdd->prepare('INSERT INTO activites(date, activite, commentaire) VALUES(:date, :activite, :commentaire)') or die(print_r($bdd->errorInfo()));
$req->execute(array(
'date' => $_POST['date'],
'activite' => $_POST['activite'],
'commentaire' => $_POST['commentaire']
));
$enreg = 'ok';
echo'<p>Enregistrement effectué avec succès !</p>';
return $enreg;
}
Merci pour votre aide et vos conseils
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.