Commentaires Ajax

Slt tout le monde!

Première fois que je viens dans cette rubrique, j’espère que l’on pourra m’orienter :D. Alors je souhaite utiliser ce script qui fonctionne impec de base en tant que livre d’or / tchat. Seulement je voudrai transformer ce script en gestion de commentaires via des articles (news).

Fonctionnement : Ma page d’accueil contient des news.
Lorsque que je clique dessus ma news s’affiche dans une nouvelle page du type localhost/monsite/voir.php?id=5 :
l’id de la news apparaît donc dans l’URL.

A ce moment là je souhaiterai placer le script de commentaire. Chaque messages ajouter devra correspondre à l’id de la news. Dans cette optique j’ai procéder de la façon suivante :

- Création d’un champ id_news dans la table southbox : ce champ correspondra à l’id de la news

[b]- J’intègre le formulaire de base du script dans ma page voir.php et j’ajoute un

Cet input récupère 'id de ma news.[/b] [i]

$data étant la variable associer à l’affichage de mes news[/i]

  • Après je pense qu’il faut que je récupère cette id pour la placer dans le fichier southbox.php via le SELECT de cette façon :
SELECT * from southbox WHERE id_news=l'id de la news

Seulement je ne sais pas trop comment l’intégrer. Comment faire la relation entre :

<?php echo $data['id'] ;?>

(formulaire - fichier voir.php) et le

WHERE

du southbox.php ?

J’ai essayé d’ajouter a southbox.php cette ligne pour pouvoir récupérer l’id de la news :

$id=$_GET['id']    // Je pense pas que ce paramètre récupère l'id de la news je devrais plutot mettre : $id=$data['id']  - Qu'en pensez-vous ?

Puis le Select donne : 

SELECT * from southbox WHERE id_news=$id

Seulement mon input ne sert à rien si je procède de cette façon ?

En gros je suis un peu perdu, je ne sais même pas si je suis sur la bonne voie pour l’affichage d’un commentaire d’une news. D’autant plus qui me reste après à modifier le script pour ajouter un commentaire (l’id de la news devra s’ajouter automatiquement dans le champ id_new de la table southbox). Je pensais à :

INSERT INTO shoutbox(user, message, id_news) VALUES('%s', '%s', '%s');", mysql_real_escape_string(strip_tags($user)), mysql_real_escape_string(strip_tags($message)), mysql_real_escape_string(strip_tags($id_news)) WHERE id_news=$id);  

J’en demande peut être beaucoup…si une âme charitable pourrait m’aider çà serait vraiment sympa! Merçi :slight_smile:
Edité le 26/05/2009 à 11:17

Petites précisions :

J’ai rajouter un champ input hidden au formulaire en intégrant la value suivante :

<?php echo $_GET['id'] ;?>

Cette valeur permet d’indiquer l’id de la news. Il me reste plus qu’à la récupérer dans le WHERE ? Comment récupérer et intégrer cette variable ?

Suis-je sur la bonne voie SVP ? :arf:
Edité le 28/05/2009 à 11:24

Je comprend pas trop ton probleme mais imaginons:

Tu as une page avec une news, et en bas de celle ci : la liste des commentaires, et un formulaire pour ajouter un commentaire.
Le but est de passer l’identifiant de la news pour la quelle le commentaire à été rédigé à la page qui va traiter le formulaire.
Donc le principe d’ajouter l’identifiant de la news dans le formulaire est correct, par contre le récupérer pour le mettre dans un WHERE, je vois pas trop ou tu veux en venir.

Ce qu’il faudrait plutôt c’est de traiter l’insertion du commentaire du style :


$sql = 'INSERT INTO `commentaires` (`idNews`,`Titre`,`Commentaire`) VALUES( '.intval( $_POST['id'] ).', \''.$_POST['titre'].'\',\''.$_POST['commantaire'].'\');";

Edité le 28/05/2009 à 11:41

Merçi pour ta rep :wink:

Oui tu as bien résumé mon soucis :super:
Okay pour l’INSERT, cela me permettra donc d’insérer dans le champ id_news, l’id de la news coresspondante. :slight_smile:

Pour le WHERE, en faite je pensais récupérer l’id de la news via le WHERE pour afficher uniquement le com de la news sélectionnée. Car si je ne précise pas de WHERE tous les commentaires s’afficheront je pense :arf: ?

Exemple : J’ai entré à la main l’id d’une news dans le champ id_news, puis pour afficher le commentaire relatif à cette news :

SELECT * from southbox WHERE id_news=26

Quand je me rend sur la news qui comprte l’id 26 je peux ainsi voir le fameux commentaire.

=> Par contre si je me rend sur une autre news (admettons id=15) bah j’aurai aussi le commentaire de la news id=26 : en même temps normal puisque mon WHERE est ciblé.

=> Ainsi je voudrais qu’au changement de news (donc au changement id) cela m’affiche les commentaires provenant uniquement de cette id :confused:

Etant débutant en Php, ça se trouve je me trompe complètement! Est-ce le cas ?

monsite.com/news?id=12


// Debut HTML
$data = getNews( $_GET['id'] ); // SELECT * FROM news WHERE id_news = $param1
afficherNews( $data );
$com = getCommentaire( $_GET['id'] ); // SELECT * FROM com WHERE id_news = $param1
affichierCommentaires( $com );

// Formulaire :
<input type="hidden" value="<?php echo $_GET['id']; ?>" />

Bien sur faut vérifier les valeur du $_GET etc (intval)
Edité le 28/05/2009 à 14:07

Merçi bcp de me venir en aide :slight_smile:

Alors je vais tester ce soir, je te tiens au courant du résultat. Pour la vérification des valeur du $_GET je fais avec :

if (isset($_GET['id'])){ //(test si la variable GET existe)
        $data = getNews( $_GET['id'] ); // SELECT * FROM news WHERE id_news = $param1
        afficherNews( $data );
        $com = getCommentaire( $_GET['id'] ); // SELECT * FROM com WHERE id_news = $param1
        affichierCommentaires( $com );
}

$param1 doit aussi être définit ? Comme ceci : $param1=$_GET[‘id’]

intval( $_GET[‘id’] ), c’est bien mieux en plus de testé avec isset biensur. Vu que tu attends un numéro, tu cast la valeur en entier, sois c’était pas un nombre et tu auras -1 ou 0, sinon tu auras la bonne valeur.

Apres je t’ai donnée un idée de l’ALGO pour resoudre ton probleme, et non pas un truc qu’il faut copier/coller. T’es pas obligé d’utilisé des fonctions etc à toi de faire :slight_smile:

Yep :super: Ce que tu m’a donné m’éclaire déjà bcp mieux :slight_smile: alors merci! Je ne suis pas un crack en Php donc je verrai bien le résultat…