2010-08-06 10 views
1

J'essaye d'attacher une valeur "post ID" numérique aux commentaires afin qu'ils puissent être récupérés de la base de données et affichés au bon endroit. Comment puis-je établir cette valeur numérique dans mon formulaire html comme quelque chose qui est envoyé au script qui l'insère dans la base de données? Je suppose que j'ai besoin d'utiliser GET ou POST mais je ne comprends pas comment les utiliser pour envoyer autre chose que du texte entré par l'utilisateur.Etablissement d'une valeur "post ID" pour un système quittant un commentaire

C'est la forme que je utilise pour envoyer le « nom » et « commentaire » entrées:

<div class="comments"> 
<form action="foxpost.php" method="post"> 

<label for="name">Name</label><br> 
<input id="name" name="name" type="text" /><br> 
<label for="message">Comment</label><br> 
<textarea class="message" id="message" name="message"></textarea><br><br> 

<input type="Submit" value="Post Comment" /> 
</form> 
</div> 

Répondre

0

Mettez l'identifiant dans un champ caché dans votre formulaire:

<input type="hidden" name="post_id" value="id_goes_here" /> 
+0

@Jimmy: Gardez juste à l'esprit que, bien que le champ soit caché, les utilisateurs * peuvent * changer * la valeur des champs cachés en utilisant des outils tels que [Firebug] (http://getfirebug.com/). –

+0

Ce n'est pas sûr. Si vous voulez générer l'ID à partir de php, vous devez le faire avant d'envoyer le sql, lorsque vous analysez le commentaire de $ _POST et que vous créez une valeur de façon dinamique, sans l'exposer au navigateur. –

+1

L'OP souhaite transmettre l'ID de la publication, que l'utilisateur commente, au serveur, afin que le commentaire puisse être stocké avec une référence à la publication. – mwittrock

1

Si vous Si vous utilisez mysql, vous n'avez pas besoin de le créer, mysql peut le créer automatiquement lorsque vous insérez un nouveau message.

Par exemple, nous pourrions créer une table

 
CREATE TABLE `student` ( 
`student_id` INT(3) NOT NULL AUTO_INCREMENT, 
`name` VARCHAR(25) NOT NULL , 
`email` VARCHAR(50) NOT NULL , 
UNIQUE (`student_id`) 
);

Et puis utilisez la requête suivante

INSERT INTO `student` (`name` , `email`) VALUES ('john', 'email');

Comme vous pouvez voir l'ID n'est pas spécifiée dans la requête, mais le champ a AUTO_INCREMENT attribut. Lorsque vous insérez un étudiant sans identifiant, il obtient l'identifiant le plus élevé et en ajoute un. Donc, si vous avez la table vide et exécutez la requête d'insertion ci-dessus, vous obtiendrez 3 lignes avec id 1,2 et 3.



Plus dans le manuel mysql http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

de P.S. Si vous utilisez une base de données différente, veuillez en spécifier une.

--- 1 --- EDIT aurait mal interprété la question très mal (il est minuit passé, mais ce n'est pas une excuse)
Vous avez quelques options si vous voulez passer 1. un champ hiddent, que a été fait mention ici 2. $ _GET [ 'postID'] de quelque chose comme comment.php? postID = 13 si vous ajoutez des commentaires d'une autre page 3. les deux

mais ne pas oublier, avant d'ajouter le commentaire que le poste existe.

... est-ce que je pourrais suggérer d'utiliser la bibliothèque akismet pour réduire le spam? http://www.achingbrain.net/stuff/php/akismet

Vous pouvez obtenir une clé gratuitement lorsque vous vous inscrivez à wordpress.com

+0

Si vous utilisez MySQL, ce sera la fonction mysql_insert_id(), appelée juste après l'instruction INSERT comme indiqué par @vlad ci-dessus ... http://us.php.net/manual/fr/function.mysql -insert-id.php – Don

+0

Merci Don, j'ai oublié de le mentionner. –

0

Je suggère de ne pas avoir l'ID dans le cadre du formulaire et il suffit d'utiliser vos bases de données AUTO_INCREMENT fonction.

2

Depuis que vous avez étiqueté cette question avec PHP, je suppose que c'est la langue que vous utilisez pour votre back-end.Une autre hypothèse que je fais est que la mise en forme réellement votre querystring demande avec le postID, quelque chose comme « http://example.com/posts.php?postID=1212 », notez la postID dans la chaîne de requête, vous passez juste que sur, comme ceci:

<div class="comments"> 
<form action="foxpost.php?postID=<%= $_GET['postID'] %>" method="post"> 

<label for="name">Name</label><br> 
<input id="name" name="name" type="text" /><br> 
<label for="message">Comment</label><br> 
<textarea class="message" id="message" name="message"></textarea><br><br> 

<input type="Submit" value="Post Comment" /> 
</form> 
</div> 

En utilisant

<%= $_GET['postID'] %> 

va simplement renvoyer le postID de la chaîne de requête directement dans le code HTML, ou vous pouvez l'affecter à une variable.