Comment faire un fil d'actualité en fonction de l'id d'un membre en PDO ?

Le problème exposé dans ce sujet a été résolu.

Salut,

La question est très vaste. Voici une piste, très simple :

  • on imagine un mur facekook-like, où l'on ne peut poster que des statuts
  • on crée une table statuts avec au minima id_statut, id_membre, date_statut, texte_statut
  • on peuple cette table à chaque nouveau statut
  • pour afficher le fil d'actualité d'un membre :
1
SELECT id_statut, texte_statut FROM statuts WHERE id_membre = 123 ORDER BY date_statut DESC

Après les choses se complique si tu intègre d'autres tables (likes, commentaires, etc.)

+1 -0

Et du côté du code je fais comment !? Je dois faire forcément un formulaire HTML, ensuite pour le PHP PDO, je fais un INSERT classique et en dessous-de celui-ci le SELECT classique !? J'aimerais mieux avoir deux exemples car j'ai dû mal un peu à imaginer ce que ça pourrait donner… :/

Non je ne veux pas de script complet ;)

J'étais sur PHP Mysql avant, mais maintenant les hébergeurs obligent le SGBL PDO. En fait je voudrais créer un champ discussion, ça soit stocké dans une base. Mais cette discussion est affiché seulement dans l'id particulier d'un groupe ou d'une personne. Voilà c'est tout ;)

*Je suis un intermédiaire en PHP

J'étais sur PHP Mysql avant, mais maintenant les hébergeurs obligent le SGBL PDO.

Alors, en fait, PDO n'est pas un système de gestion de base de données (SGBD au passage). PDO est un genre de librairie qui se positionne entre la base de données et le PHP. Pourquoi ? Parce qu'avant, on utilisait des fonctions de la forme typeBdd_nomFonction (par exemple, mysql_connect).

Or lorsqu'on doit changer de base de données, pour une raison ou pour une autre, il faut tout recoder avec les fonctions correspondant à la nouvelle base de données ! Pas très pratique.

Donc attention, PDO n'est rien d'autre que du code.

En fait je voudrais créer un champ discussion, ça soit stocké dans une base. Mais cette discussion est affiché seulement dans l'id particulier d'un groupe ou d'une personne.

Si je comprends bien, une sorte de messagerie privée ?

Réfléchis du coup, une discussion c'est quoi ? Un ensemble de messages. Un message c'est quoi ? Un sujet, le contenu du message, un expéditeur et un ou plusieurs destinataires.

Essaie de modéliser une structure de table avec ces informations.

Donc si j'ai bien compris, je dois faire ça pour l'INSERT :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 <?php

if(!empty($_POST['submit']))
{
    $title_statut = htmlspecialchars($_POST['title_statut']);
    $contenu_statut = htmlspecialchars($_POST['contenu_statut']);

    if(!empty($title_statut)&&!empty($contenu_statut))
    {

                    $bdd = new PDO('mysql:host=localhost;dbname=localhost','root','root');
                    $requete_post = $bdd->prepare('INSERT INTO statut(title_statut, contenu_statut) VALUES(:title_statut, :contenu_statut)');
                    $requete_post->execute(array(
                        'title_statut' => $title_statut,
                        'contenu_statut' => $contenu_statut,
                    ));

                    echo 'Votre billet a bien été publié';  
    }else echo "Veuillez saisir tous les champs!";
}
?>

Mais après je comprends pas comment récupérer l'id affiché, l'insérer dans la base et faire un select…

Ton code me semble correct (je ne l'ai pas testé cependant). Est-ce que tu l'as testé toi-même ? Vos-tu une nouvelle ligne dans la table en base de données ?

Mais après je comprends pas comment récupérer l'id affiché, l'insérer dans la base et faire un select…

Il faudrait que tu expliques un peu mieux ce que tu veux faire (avec des mots, pas avec du code). Décris le fonctionnement attendu de ton programme, parce que là c'est compliqué de t'aider sans savoir ce que tu veux faire.

Oui, le code est correct et marche en tout cas pour l'insertion. En fait, je voudrais que les gens après publications, voient leurs messages affichés sur une page particulière et pas une autre, pour cela je ne sais pas quel table créer et quel SELECT faire.

par exemple, imagine je suis un utilisateur j'écris "J'aime les vacances", ça s'insert dans ma base de donnée, ça s'affiche dans par exemple http://monsite.com/id?=2 et pas dans http://monsite.com/id?=1

Je ne vois pas comment faire pour la suite le SELECT et les tables à créer :(

Dans ce cas-là, comme l'a dit elyppire, tu dois récupérer l'identifiant de l'utilisateur qui navigue sur ton site (généralement par un système de connexion, avec l'identifiant stocké dans la session), et utiliser une requête du type SELECT * FROM messages WHERE id_membre = :id_membre

EDIT : J'ai remplacé id par id_membre, pour ne pas confondre les deux

+0 -0

donc si je résume le tout ;)

je laisse mon INSERT ci-dessus comme il est ;)

je crée une table messages où ce message par exemple "je suis en vacances" ça s'insère. Dans cette table il y aurait un champs id_auteur ; title ; messages…

et je fais un SELECT sur une page en fonction de l'id et c'est bon ?

et je fais un SELECT sur une page en fonction de l'id et c'est bon ?

Oui, en fonction de l'ID du membre si tu veux afficher uniquement les messages écrits par ce membre.

Mais tu sais tu devrais simplement tester et nous demander si ça ne marche pas, au pire ton script plantera mais ton ordinateur ne t'explosera pas au visage si tu as fait une erreur ! :p

Voici mon PDO pour le SELECT ;)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
                                <?php
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=root', 'root', 'root');
}

catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

$reponse = $bdd->prepare('SELECT * FROM news LIMIT 0,4');
$reponse->execute(array("id" => $_GET['id']));

while ($donnees = $reponse->fetch())
{
?>
<h3><?php echo $donnees['title']; ?></h3><br />
<br />
<br />
<i>
<h5>
<?php echo $donnees['message']; ?></h5></i>
<?php
}

$reponse->closeCursor(); 

?>

sur celui-là je rajoute le fameux id… patatitapata

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte