Bonsoir,
Je suis entrain de développer un forum dans mon projet de fin d'études , et j'ai rencontré un problème au niveau de création des nouveaux sujets , chaqu'un de ces dernier devra avoir toute une page pour que les autres utilisateurs puissent répondre à son problème, alors je ne sais pas comment faire pour qu'au moment de la création d'un sujet , une page associée soit créer aussi.
Veuilez m'aider s'ils vous plaît , c'est trés urgent.
Merci d'avance .

11 réponses


Salut,

chaqu'un de ces dernier devra avoir toute une page pour que les autres utilisateurs puissent répondre à son problème, alors je ne sais pas >comment faire pour qu'au moment de la création d'un sujet , une page associée soit créer aussi.

Hum... Attention on ne créer pas une page particulière pour chaque sujets d'un forum.
On créer juste une entrée différente en base de données, pour chaque sujets différents.
Mais on se sert toujours de la même page pour afficher ces sujets. (en fait il faut au moins 2 pages).

Quand un utilisateur créer un nouveau sujet,
tu enregistrera ce nouveau sujet (avec son "titre", son "message", sa "date" etc) en base de données.
En base de données, dans la table en question (disons la table "posts"), tu aura pris soin de mettre un champ "id" en "clé primaire", et "auto-incrémente".
Donc ce sujet aura un "id" unique.

Sur ton site,
tu aura au moins 2 pages :

  • Une 1ère page, qui liste tous les sujets (avec une requête SQL, qui sélectionne tous les sujets)

Quand tu liste les sujets (en en faisant des liens vers la 2ème page), tu mets dans le "href" le "id" du sujet.
ex :

// on boucle pour afficher tous les liens
<a href="url/vers/2eme/page?id=$id_sujet_1">titre_sujet_1<a>
<a href="url/vers/2eme/page?id=$id_sujet_2">titre_sujet_2<a>
...

Sur cette 1ère page, quand tu "clic" sur un des sujets, ça t'amène sur la 2ème page (quelque soit le sujet sur lequel tu clic)

  • Une 2ème page, une fois arrivé sur cette page, tu fais une reqûete SQL pour sélectionner le bon sujet, grâce à l'id envoyé en $_GET dans l'url du href
Sanae
Auteur

Merci pour ta réponse,
Alors ce que j'ai compris qu'il faut lister tous les sujet dans la première page avec chacun son lien vers la 2ème page, mais ces liens seront écris comme l'exemple que vous venez de donner "id=$id_du_sujet" ? que dois-je mettre aprés le $

ça ressemble à un truc comme ça :

$pdo = new PDO(TYPE:dbname=DB_NAME;host=HOST, DB_LOGIN, DB_PASS);
$request = $pdo->query('SELECT * FROM posts');
$response = $request->fetchAll();
foreach($response as $post)
{
    echo '<a href="url/vers/2eme/page?id=' . $post['id'] . '">' . $post['title'] . '<a>';
}

PS : on pense à faire des requêtes préparées si besoin.

Sanae
Auteur

Oui, mais l'id est en auto-incrémente n'est ce pas? je dois le saisir aussi dans mon formulaire ?, car vous avez mis le post "$_POST['id']"
Je suis désolée pour ces questions

Ah non l'id on ne le renseigne jamais dans le formulaire.
On ne s'occupe jamais d'attribuer tel ou tel "id" à n'importe quel truc.

Si tu veux qu'un "post" ai un "id", alors tu ajoutes un champ "id" dans ta table "posts" (dans la base de données).
Et ce champ "id" tu le défini en "auto-incrémente", et "clé primaire".

Ainsi,
à chaque fois que tu fera une requête SQL INSERT, tu renseignera dans le INSERT tous les champs de la table "posts", sauf le champ "id".
C'est ta base de données qui attribuera toute seule un "id" au "post" que tu voudra enregistrer en base de données.

Sanae
Auteur

Oui , alors tant que on ne renseigne pas l'id dans le formulaire , comment on peut faire pour accéder à cet id

comment on peut faire pour accéder à cet id

Ah ben, dis donc c'est quand même basique ça... J'avoue que la question me perturbe un peu.
Tu es en projet de fin d'études là ?
C'est quoi comme formation ?

Quand tu fais un INSERT en base de données, l'id est géré tout seul par la base de données (SI tu as mis le champ "id" en "auto-incrémente".

Ensuite pour "accéder" à cet "id", il suffit de faire un SELECT.

Comme j'ai montré dans le code, précédemment :

$request = $pdo->query('SELECT * FROM posts'); // on sélectionne TOUT (*), dont l'id du coup, puisqu'on sélectionne TOUT
$response = $request->fetchAll();
foreach($response as $post)
{
    // ici dans la boucle, dans le tableau "$post" tu as accès à tous les champs de la table (id, title, message, date, auteur, ...)
    echo '<a href="url/vers/2eme/page?id=' . $post['id'] . '">' . $post['title'] . '<a>';
}

Est-ce que tu comprends ce bout de code ou pas ?

Sanae
Auteur

Je m'excuse , mais je développe mon projet de fin d'études aves un langage que je l'ai pas étudié(php) , c'est pour ca que je pose ce genre de questions.
J'ai compris ton code ,alors il me reste de faire la reqûete SELECT pour afficher le sujet déja cliqué grâce à l'id en $_GET.

un langage que je l'ai pas étudié(php)

Ah ben du coup je comprend,
c'est vrai que souvent en FAC, on survole vite fait quelques langages, et on a pas le temps de bien tout voir.

alors il me reste de faire la reqûete SELECT pour afficher le sujet déja cliqué grâce à l'id en $_GET.

Exactement, tu as bien compris.
Le code que j'ai montré plus haut, est à mettre dans la "page 1" (si on peut l'appeler comme ça)
Et maintenant, dans la "page 2", tu fais le SELECT comme tu dis, et tu affiches le sujet.

Dans ta requete il faudra utiliser la clause "WHERE"
ex :

$sql = 'SELECT * FROM posts WHERE id = ' . $_GET['id'];
Sanae
Auteur

MERCI infiniment pour ce grand aide , vraiment vous m'avez sauvé , même j'ai posé des questions stupides un peu .
Le code fonctionne correctement , les informations associées à chaque sujet s'affichent , qu'est ce que je veux de plus :).
Merci beaucoup encore une fois .

De rien ^^

Bonne chance pour la suite.