Je suis complètement désespérée. Ca fait 2 jour que je bloque sur le même problème...
J'ai un fatal error sur la method connexionDB:: prepare() et je ne vois vraiment pas ou j'ai fauté.
Je souhaite effectué une messagerie privé (comme le tuto de PrimFX) permettant d'envoyer un message de l'admin à l'utilisateur et inversement. j'ai début le tuto, j'ai créer dans la même base de donnée que celle de mes utilisateurs la table messages et implanté le code sur une page qui se trouve sur le dashboard de l'admin et la page s'appelle envoiexo.php la page de réception c'est celle que je vous ai envoyé qui se nomme exercices.php.
Je ne sais pas si je dois vous fournir l'autre page je le fais quand même x_x.
En plus de cette erreur, j'ai beau testé tout ce que je veux ça ne fonctionne pas
exercices.php
Code : Tout sélectionner
<?php
session_start();
include('bd/connexionDB.php');
// S'il n'y a pas de session alors on ne va pas sur cette page
if (!isset($_SESSION['Type']) && ($_SESSION['Type'] != '0')){
header('Location: index.php');
exit;
}
// On récupère les informations de l'utilisateur grâce à son ID
$afficher_profil = $DB->query('SELECT *
FROM utilisateur
WHERE id = ?',
array($_SESSION['id']));
$afficher_profil = $afficher_profil->fetch();
if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
$msg = $DB->prepare('SELECT * FROM messages WHERE id_destinataire = ?');
$msg->execute(array($_SESSION['id']));
$msg_nbr = $msg->rowCount();
?>
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Orthoweb</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<!--For Plugins external css-->
<link rel="stylesheet" href="assets/css/plugins.css" />
<link rel="stylesheet" href="assets/css/roboto-webfont.css" />
<!--Theme custom css -->
<link rel="stylesheet" href="assets/css/style.css">
<!--Theme Responsive css-->
<link rel="stylesheet" href="assets/css/responsive.css" />
<script src="assets/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script>
</head>
<body>
<!-- Sections -->
<section id="social" class="social">
<div class="container">
<!-- Example row of columns -->
<div class="row">
<div class="social-wrapper">
<div class="col-md-6">
<!--On peut rajouter ici les reseaux sociaux --->
</div>
<div class="col-md-6">
<div class="social-contact">
<a href="#"><i class="fa fa-phone"></i>+011 54925849</a>
<a href="contact.php"><i class="fa fa-envelope"></i>[email protected]</a>
</div>
</div>
</div>
</div>
</div> <!-- /container -->
</section>
<nav class="navbar navbar-default">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#">Home</a></li>
<li><a href="consulter.php">Comment consulter ? </a></li>
<li><a href="troubles.php">Troubles traités</a></li>
<li><a href="visio.php">Télé-orthophonie</a></li>
<li><a href="procedure.php">Procédure</a></li>
<li><a href="contact.php">Contact</a></li>
<?php
if (isset($_SESSION['Type']) && ($_SESSION['Type'] == '0')){
?>
<li class="login"><a href="profil.php">Mon compte</a></li>
<li class="login"><a href="deconnexion.php">Déconnexion</a></li>
<?php
}else{ //Sinon s'il y a une session alors on verra les liens ci-dessous
header('Location: index.php');
}
?>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<!--Home page style-->
<header id="home" class="home6">
<div class="overlay-fluid-block">
<section id="service" class="sections3" style="padding-top:70px;background-color:#82ca9c3d;">
<div class="head_title text-center">
<h2>EXERCICES</h2>
<p>TÉLÉCHARGEZ ICI TOUS VOS EXERCICES</p>
</div>
</section>
</div>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-3 ">
<div class="list-group ">
<a href="profil.php" class="list-group-item list-group-item-action active">Dashboard</a>
<a href="modifier-profil.php" class="list-group-item list-group-item-action">Mon profil</a>
<a href="exercices.php" class="list-group-item list-group-item-action">Exercices</a>
<a href="reponses.php" class="list-group-item list-group-item-action">Vos Réponses</a>
<a href="correction.php" class="list-group-item list-group-item-action">Correction</a>
</div>
</div>
<h1>Liste des exercices disponibles</h1>
<h3>Votre boîte de réception:</h3>
<?php
if($msg_nbr == 0) { echo "Vous n'avez aucun message..."; }
while($m = $msg->fetch()) {
$p_exp = $DB->prepare('SELECT mail FROM utilisateur WHERE id = ?');
$p_exp->execute(array($m['id_expediteur']));
$p_exp = $p_exp->fetch();
$p_exp = $p_exp['mail'];
?>
<b><?= $p_exp ?></b> vous a envoyé: <br />
<?= nl2br($m['message']) ?><br />
-------------------------------------<br/>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!---footer--->
<?php include("includes/footer.php"); ?>
<!---footer--->
</body>
</html>
<?php } ?>envoiexo.php
Code : Tout sélectionner
<?php
session_start();
include('bd/connexionDB.php');
// S'il n'y a pas de session alors on ne va pas sur cette page
if (!isset($_SESSION['Type']) && $_SESSION['Type'] == '0'){
header('Location: index.php');
exit;
}
if(isset($_SESSION['id']) AND !empty($_SESSION['id'])) {
if(isset($_POST['envoi_message'])) {
if(isset($_POST['destinataire'],$_POST['message']) AND !empty($_POST['destinataire']) AND !empty($_POST['message'])) {
$destinataire = htmlspecialchars($_POST['destinataire']);
$messages = htmlspecialchars($_POST['message']);
$id_destinataire = $DB->prepare('SELECT id FROM utilisateur WHERE mail = ?');
$id_destinataire->execute(array($destinataire));
$dest_exist = $id_destinataire->rowCount();
if($dest_exist == 1) {
$id_destinataire = $id_destinataire->fetch();
$id_destinataire = $id_destinataire['id'];
$ins = $DB->prepare('INSERT INTO messages (id_expediteur,id_destinataire,message) VALUES (?,?,?)');
$ins->execute(array($_SESSION['id'],$id_destinataire,$message));
$error = "Votre message a bien été envoyé !";
} else {
$error = "Cet utilisateur n'existe pas...";
}
} else {
$error = "Veuillez compléter tous les champs";
}
}
$destinataire = $DB->query('SELECT mail FROM utilisateur ORDER BY mail');
?>
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Orthoweb</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<!--For Plugins external css-->
<link rel="stylesheet" href="assets/css/plugins.css" />
<link rel="stylesheet" href="assets/css/roboto-webfont.css" />
<!--Theme custom css -->
<link rel="stylesheet" href="assets/css/style.css">
<!--Theme Responsive css-->
<link rel="stylesheet" href="assets/css/responsive.css" />
<script src="assets/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script>
</head>
<body>
<!-- Sections -->
<section id="social" class="social">
<div class="container">
<!-- Example row of columns -->
<div class="row">
<div class="social-wrapper">
<div class="col-md-6">
<!--On peut rajouter ici les reseaux sociaux --->
</div>
<div class="col-md-6">
<div class="social-contact">
<a href="#"><i class="fa fa-phone"></i>+011 54925849</a>
<a href="contact.php"><i class="fa fa-envelope"></i>[email protected]</a>
</div>
</div>
</div>
</div>
</div> <!-- /container -->
</section>
<nav class="navbar navbar-default">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php"></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="index.php">Home</a></li>
<li><a href="consulter.php">Comment consulter ? </a></li>
<li><a href="troubles.php">Troubles traités</a></li>
<li><a href="visio.php">Télé-orthophonie</a></li>
<li><a href="procedure.php">Procédure</a></li>
<li><a href="contact.php">Contact</a></li>
<?php
if(isset($_SESSION['Type']) && $_SESSION['Type'] != '0'){
?>
<li class="login"><a href="admin.php">Mon Admin</a></li>
<li class="login"><a href="deconnexion.php">Déconnexion</a></li> <?php
}
else { //Sinon s'il y a une session alors on verra les liens ci-dessous
header('Location: index.php');
echo " Vous n'avez pas les droits"; }
?>
</ul>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<!--Home page style-->
<header id="home" class="home6">
<div class="overlay-fluid-block">
<section id="service" class="sections3" style="padding-top:70px;background-color:#82ca9c3d;">
<div class="head_title text-center">
<h2>DASHBOARD</h2>
<p>BIENVENUE DANS VOTRE ESPACE ADMINISTRATEUR</p>
</div>
</section>
</div>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-3 ">
<div class="list-group ">
<a href="admin.php" class="list-group-item list-group-item-action active">Dashboard</a>
<a href="envoiexo.php" class="list-group-item list-group-item-action">Envoyer exercices</a>
<a href="reprecu.php" class="list-group-item list-group-item-action">Réception réponses</a>
<a href="envoicorrec.php" class="list-group-item list-group-item-action">Envoyer correction</a>
</div>
</div>
<div class="col-md-9">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-12">
<h1>Exercices à envoyer</h1>
<hr>
</div>
</div>
<div class="row">
<div class="col-md-12">
<!-- formulaire d'envoi -->
<form method="POST" action="exercices.php">
<label>Destinataire:</label>
<select name="destinataire">
<?php while($d = $destinataire->fetch()) { ?>
<option><?= $d['mail'] ?></option>
<?php } ?>
</select>
<br /><br />
<textarea placeholder="Votre message" name="message"></textarea>
<br /><br />
<input type="submit" value="Envoyer" name="envoi_message" />
<br /><br />
<?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } ?>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!---footer--->
<?php include("includes/footer.php"); ?>
<!---footer--->
</body>
</html>
<?php } ?>