Publier des statuts en php

Résolu/Fermé
sarahsusy Messages postés 4 Date d'inscription jeudi 26 mars 2015 Statut Membre Dernière intervention 26 mars 2015 - 26 mars 2015 à 14:50
 Ru486 - 22 août 2022 à 12:21
bonjour à tous
je suis débutante en php et mysql et j'ai besoin de votre aide svp
j'ai crée un espace membre et je veux que les utilisateur puissent publier des statuts
voici les champs de mes 2 table :
table: statuts
id_statu , id_auteur , date_statut , titre , statut
table : user
id_user , pseudo , password
et voila les 2 requêtes INSERT/SELECT
$sql = $bdd->prepare('INSERT INTO statuts (id_auteur,date_statut,titr,statut) VALUES (?,?,?,?)');
$sql->execute(array($_SESSION['user_id'],$date,$titre,$statut));

$req = $bdd->prepare ('SELECT titre_statu,statu,date_statu, user.pseudo as moi ,id_statu FROM table_statu,user WHERE id_auteur = ? ORDER BY date_statu DESC');

$req->execute(array($_SESSION['user_id']));


le probleme c'est que au lieu d'afficher seulement l'auteur et le statut ça affiche tout les membres avec le statut
Merci pour votre aide :)
A voir également:

2 réponses

Utilisateur anonyme
26 mars 2015 à 15:18
Bonjour

Le code que tu nous montres n'affiche rien du tout. Il s'agit seulement de l'exécution de requêtes.
Tu nous montres une requête qui fait une insertion dans une table "statuts", puis une qui fait un select dans une jointure de deux tables "table_statu" et "user", donc absolument aucun rapport.
Pourrais-tu nous donner des informations cohérentes ?

Je vais quand même me risquer à supposer qu'il te manque une condition de jointure entre tes deux tables dans ton SELECT pour préciser quels sont les champs qui se correspondent:
'SELECT titre_statu,statu,date_statu, user.pseudo as moi ,id_statu FROM table_statu INNER JOIN user ON table_statu.id_auteur = user.id_user WHERE id_auteur = ? ORDER BY date_statu DESC'
0
sarahsusy Messages postés 4 Date d'inscription jeudi 26 mars 2015 Statut Membre Dernière intervention 26 mars 2015
26 mars 2015 à 15:29
tout d'abord merci pour votre aide voici le code complet :
page : afficher.php

<?php
session_start();
// on vérifie toujours qu'il s'agit d'un membre qui est connecté
if (!isset($_SESSION['pseudo'])) {
// si ce n'est pas le cas, on le redirige vers l'accueil
header ('Location: p_connexion.php');
exit();
}
?>

<html>
<head>
<title>Espace membre</title>
<meta charset="utf-8"/>

</head>

<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['pseudo'])); ?> !<br />
<?php

// code de connexion à la BDD
// on prépare une requete SQL cherchant tous les titres, les dates ainsi que l'auteur des status pour le membre connecté
$req = $bdd->prepare ('SELECT titre_statut,statut,date_statut, user.pseudo as moi ,id_statut FROM table_statut,user
WHERE id_auteur = ? ORDER BY date_statut DESC');

$req->execute(array($_SESSION['user_id']));


$num_rows = $req->rowCount();
if ($num_rows == 0) {
echo "il n'existe aucun statut";
}
else {
// si on a des statuts, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
?>

<section style="height:auto;">
<div id="tablo">
<?php
echo"vous avez ".$num_rows." statu reçus <br/><br/>";
while ($data = $req->fetch()) {

?>



<table>
<tr> <td class="c"> <?php echo stripslashes(htmlentities(trim($data['moi']))); ?>

( <?php echo'<a href="lire.php?id_statut=' , $data['id_statut'] , '">' , stripslashes(htmlentities(trim($data['titre_statut']))) , '</a>'; ?> )</td></tr>
<tr> <td class="c" style="height: 50px;">
<span class="msg"><?php echo (stripslashes(htmlentities(trim($data['statut'])))); ?></span></td></tr>
<tr><td class="c"><span class="date"><?php echo $data['date_statut']; ?></span></td> </tr>
</table>

<?php

}
}



$req->closeCursor();
?>
</div>
</section>



<br /><a href="insert_statut.php">Inserer un statu </a>
<br/><a href="p_deconnexion.php">Déconnexion</a>
</body>
</html>



page:insert_statut.php

<?php
session_start();
// on vérifie toujours qu'il s'agit d'un membre qui est connecté
if (!isset($_SESSION['pseudo'])) {
// si ce n'est pas le cas, on le redirige vers l'accueil
header ('Location: p_connexion.php');
exit();
}
// on teste si le formulaire a bien été soumis
if (isset($_POST['go']) && $_POST['go'] == 'Publier') {
if ( empty($_POST['titre']) || empty($_POST['statut'])) {
$erreur = 'Au moins un des champs est vide.';
}
else {

try
{
$bdd = new PDO('mysql:host=localhost;dbname=facile', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// si tout a été bien rempli, on insère le statut dans notre table SQL


$date = date("Y-m-d H:i:s");
$titre = $_POST['titre'];
$statut = $_POST['statut'];

$sql = $bdd->prepare('INSERT INTO table_statu (id_auteur,date_statu,titre_statu,statu) VALUES (?,?,?,?)');
$sql->execute(array($_SESSION['user_id'],$date,$titre,$statut));
$sql->CloseCursor();


header('Location: affichage.php');
exit();
}
}
?>

<html>
<head>
<meta charset="utf-8"/>

</head>
<body>
<a href="afficher.php">Retour à l'accueil</a><br /><br />
<form method="post" action="insert_statut.php">


<table>

<tr><td>Titre :</td> <td><input type="text" name="titre" size="30"></td> </tr>
<tr><td>Message :</td><td><textarea name="statut" rows="8" cols="60"></textarea></td></tr>
</table>
<p><input type="submit" name="go" value="Publier" style=" width:100px;background:pink; color:white; margin-left:250px;"></p>



</form>
</section>




<br /><br /><a href="p_deconnexion.php">Déconnexion</a>
</body>
</html>



et ça m'affiche tout les membres avec le statut que j'ai poster
0
sarahsusy Messages postés 4 Date d'inscription jeudi 26 mars 2015 Statut Membre Dernière intervention 26 mars 2015
26 mars 2015 à 15:43
la requête que vous m'avez donné marche parfaitement merci énormément
0

Cool

0
As-tu essayé ma requête avec jointure (en remettant les bons noms de tables) ?

Et pourquoi la table dans laquelle tu fais ton INSERT n'a-t-elle pas le même nom que celle dans laquelle tu fais le SELECT ? Ça n'a aucun sens - ou alors explique-nous lequel.
0
sarahsusy Messages postés 4 Date d'inscription jeudi 26 mars 2015 Statut Membre Dernière intervention 26 mars 2015
26 mars 2015 à 22:15
oui j'ai essayé la requête avec jointure et ça marche très bien
pour la table c'été juste une faute de frappe
Merci beaucoup
0
Utilisateur anonyme
26 mars 2015 à 23:49
OK, je n'avais pas vu ta seconde réponse quand je t'avais répondu.
Mais tout de même...
c'été juste une faute de frappe
Il faudra m'expliquer comment avec un copier-coller on fait deux fois la même faute de frappe au milieu d'un texte.
0