フォーム送信では、メソッド POST または GET のみを使用でき、両方を同時に使用できないことを理解しています。
しかし、私はフォーラム スクリプトを作成しようとしているので、トピックに返信すると、それをデータベースに照会し、返信を送信したときの $_GET['id'] に応じて、reply_id を返します。唯一の問題は、送信を押して POST メソッドでデータを POST すると、送信後に $_GET を次のページに移動できないことです。したがって、$_GET['id'] を照会することはできません。
さて、アクション「topic.php?id=」にしようかなと思ったのですが、なぜかうまくいきませんでした。
間違っているのは、フォームで送信を押しても、何も照会されないことです。:/
コードの何が問題なのか、誰にもわかりませんか?
形:
<form action="topic.php?id=$postid" method="POST">
<textarea name="comment" class="field span6" rows="3" placeholder="Content..."></textarea><br /><br />
<input type="hidden" name="id" value="<?php echo $_GET['id'];?>">
<div><input type="submit" name="submit" value="Reply" /></div>
</form>
フォーム アクション:
if(isset($_POST['submit'])) {
$postid=$_POST['id'];
$errors = array();
if(isset($_POST['comment'])){
if(empty($_POST['comment'])){
$errors[] = 'Error, try again!';
}
if(strlen($_POST['comment']) > 400){
$errors[] = 'Comment must be in a 10 to 400 characters range!';
}
if(empty($errors)){
//write to topics and replies tables
$q2 = @mysql_query("INSERT INTO reply VALUES('$postid', \"$comment\", now(), '$id')");
} else {
echo 'You have '. (count($errors) + 1).' errors in your form:<br />';
foreach($errors as $error){
echo $error .'<br />';
}
echo '<a href="new_topic.php">Try again</a>';
}
}