Forum - Redirection vers le message envoyé

Eléphant du PHP | 172 Messages

18 juil. 2006, 19:26

Salut,

Je suis en train de faire un petit forum perso, mais il y a quelque chose que je ne vois pas comment faire.

Pour faire une redirection vers une réponse à un topic sur le message posté, je récupère l'id du topic et l'id du forum dans l'url.

J'obtiens ceci :
if( isset($reponse) && $reponse === true )
{
    $cat = $_POST['cat'];
    $topic = $_POST['top'];
    $sql = "SELECT nom FROM f_sujet WHERE id = " . $topic;
    $titre = rewrite($db -> req($sql, 'result'));
    $sql = "INSERT INTO f_reponse(id_sujet, auteur, contenu)
    VALUES(" . protection($topic) . ", '" . protection($_SESSION['membre']) . "', '" . protection($_POST['message']) . "');";
    if( $db -> req($sql) ) header('location: forum-' . $cat . '-' . $topic . '-t1-' . $titre . '.html');
    else  header('location: forum.html');
}
Oui, je sais mes variables GET ne sont pas protégées, je vais le faire ;)

Donc aucune difficulté, mais lorsque le message envoyé est un nouveau sujet, comment doit-on faire pour rediriger vers le sujet, car je ne possède que l'id du forum ?

J'arrive pas à trouver une solution.

Merci :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 juil. 2006, 23:51

Bonsoir,

Si le champ "id" de ta table qui enregistre les sujets est de type autoincrement, alors regarde du côté de la fonction mysql_insert_id() qui devrait te retourner se que tu recherches :)

http://fr.php.net/mysql_insert_id
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 172 Messages

19 juil. 2006, 13:09

Merci ç'est ce qu'il me fallait, en plus je connaissais cette fonction, mais je n'y avait pas pensé.

Par contre est-ce que c'est fiable à 100% comme méthode, c'est à dire est-ce que c'est possible que si un 1er posteur envoi son message et qu'un second en envoi un autre quasiment en même temps, que le mysql_insert_id() renvoi l'id du du message du 2nd posteur plutôt que l'id de son propre message, donc du posteur 1 ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 juil. 2006, 15:19

je crois que la réponse est dans la doc, à laquelle tu peux accéder grâce à ce magnifique lien automatique sur le nom de la fonction

Eléphant du PHP | 172 Messages

19 juil. 2006, 17:45

C'est ironique ta réponse ?
Car pour me dire ça, je préfère de loin ne pas avoir de réponse...

La doc j'ai été la voir figures toi, et je ne vois nul part où il est précisé ce que je demande.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 juil. 2006, 23:02

En fait c'est écrit dans la doc mais il faut être attentif:
mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante ou sur la connexion spécifiée par link_identifier
Vu qu'il est spécifié que cela fonctionne par connexion, ton cas de figure est impossible (car le 2nd posteur ouvrira une nouvelle connexion)

Sinon, la doc PHP donne également un lien très interessant dans ton cas je pense:
http://dev.mysql.com/doc/refman/5.0/fr/ ... ue-id.html
Quand tout le reste a échoué, lisez le mode d'emploi...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 juil. 2006, 10:28

C'est ironique ta réponse ?
Car pour me dire ça, je préfère de loin ne pas avoir de réponse...

La doc j'ai été la voir figures toi, et je ne vois nul part où il est précisé ce que je demande.
Non ce n'est pas ironique, ni même moqueur. (c'est peut-être "le magnifique lien auto" qui t'a donné cette impression mais ce n'étais pas le cas)

Et si tu n'acceptes pas ce genre de réponses tant pis pour toi. Si tu ne voyais pas où c'était tu peux demander des précisions gentiment.

Je ne vois pas comment on pouvait savoir que tu y étais déjà allé.

++

Eléphant du PHP | 172 Messages

20 juil. 2006, 12:15

En fait c'est écrit dans la doc mais il faut être attentif:
mysql_insert_id() retourne le dernier identifiant généré par un champ de type AUTO_INCREMENT, sur la connexion MySQL courante ou sur la connexion spécifiée par link_identifier
Vu qu'il est spécifié que cela fonctionne par connexion, ton cas de figure est impossible (car le 2nd posteur ouvrira une nouvelle connexion)

Sinon, la doc PHP donne également un lien très interessant dans ton cas je pense:
http://dev.mysql.com/doc/refman/5.0/fr/ ... ue-id.html
Merci, mais là faut lire entre les lignes, c'est pas très bien expliqué je trouve.
Enfin déjà, je ne savais pas que mysql faisait la différence entre les différentes connexions ouvertes par les utilisateurs, c'est pour cela que je ne voyait pas ma réponse dans la doc.
Non ce n'est pas ironique, ni même moqueur. (c'est peut-être "le magnifique lien auto" qui t'a donné cette impression mais ce n'étais pas le cas)

Et si tu n'acceptes pas ce genre de réponses tant pis pour toi. Si tu ne voyais pas où c'était tu peux demander des précisions gentiment.

Je ne vois pas comment on pouvait savoir que tu y étais déjà allé.

++
Ben, oui, j'ai un peu mal pris le "magnifique lien auto"c'est vrai, mais maintenant j'ai quand même le réflexe d'aller voir la doc sur la fonction en question dès que j'en voit une que je ne connait pas et même si j'en ai pas besoin.

Ben des précisions c'est ce que j'avais demandé, bon prochaine fois je préciserais que j'ai consulté la doc en ligne sans avoir compris certains points.

Désolé, si j'ai été un peu agressif dans ma réponse ;)