0

最近、フォームを から に変更し<input type="button">まし<button>たが、PHP によって処理されているフォームはデータベースに送信されません。コードに何か不足していますか?

基本的に私が行ったのはこれを変更したことだけです:

<input type="submit" name="submitAdd" value="Ask Question! " />

これに:

<button type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></button>

基本的な PHP 処理コードは次のとおりです。

// 提出物から質問を抽出する
$question = (isset($_POST["question"]))?$_POST["question"]:"";
$question_date = (isset($_POST["question_date"]))?$_POST["question_date"]:"";
$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

//データベースへの接続を開く
include("include/session.php");

//送信用のデータを準備する
$db_question = addslashes($question);
$db_question_date = addslashes($question_date);

//フォームが送信された場合、質問をデータベースに挿入します
if ($submitAdd) {
    $sql="INSERT INTO 質問
    (質問,質問_日付)
    VALUES ('$db_question', '$db_question_date')";
    $result = mysql_query($sql);
    もし (!$結果) {
        $message = "質問の追加に失敗しました。MySQL は " . mysql_error();
    } そうしないと {
        header("場所:http://localhost/grill/register.php");
    }
}
4

5 に答える 5

3

ボタンのバージョンに値がないため、機能しません。あなたのコードは言う:

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

しかし、あなたは持っています:

<button type="submit" class="btn" name="submitAdd"><span><span>Ask Question!</span></span></button>

これを次と比較してください。

<input type="submit" name="submitAdd" value="Ask Question! " />

value 属性を持っています。この値は PHP スクリプトに渡され、テストしているものです。あなた<button>にはそれがありません。

$submitAddがない場合は、クリックしても値が '' になります。これを行うと、空の文字列は false と評価されます。

if ($submitAdd) {

そこで、いくつかの変更をお勧めします。まず、これを変更します。

$submitAdd = (isset($_POST["submitAdd"]))?$_POST["submitAdd"]:"";

$submitAdd = isset($_POST['submitAdd']);

あなたは価値を本当に気にしないからです。

第二に、これとは関係ありませんが、言及する価値はありますが、私はこれを行います:

$db_question = mysql_real_escape_string($question);
$db_question_date = mysql_real_escape_string($question_date);
$sql = <<<END
INSERT INTO QUESTIONS (question, question_date)
VALUES ('$db_question', '$db_question_date')
END;
于 2009-11-25T23:44:41.303 に答える
1
  1. 入力submitAddフィールドを非表示にする
  2. ボタンをクリックしてJavascript関数を呼び出す

マークアップ:

<input type="hidden" name="submitAdd" value="Ask Question! " />

<button type="submit" onclick="submitForm();" class="btn" name="submitAdd">
<span><span>Ask Question!</span></span></button>

Javascript:

function submitForm(){
    document.forms["form_name"].submit();
}

フォームの送信はjavascriptに依存するため、お勧めしません。しかし、Gmailでさえそのようにしています:P

于 2009-11-26T01:35:54.373 に答える
0

同じ問題があり、私のソリューションでは JavaScript を使用していません。これは主に、ユーザーvsrが以前に回答したものと同じです。

送信したいデータを含む非表示の入力を追加します。

<input name="submitAdd" type="hidden" value=" Ask Question! ">

ボタンに別の名前を付ける:

<button type="submit" class="btn" name="submitsForm"> Ask Question! </button>

ボタンはフォームを送信し、必要なデータは非表示の入力にあり、さらに送信されます。それが役に立てば幸い!

于 2014-01-07T13:12:02.527 に答える
0

<button>タグが送信されないため、$_POST にならないと思います。確認するには、スクリプトの先頭でこれを行うだけです。

print $_POST["submitAdd"];

とにかく入力からボタンに変更したのはなぜですか?と呼ばれる隠しフィールドを追加することをお勧めしform_actionます。if ($_POST['form_action'])if ($submitAdd)

于 2009-11-25T23:43:00.787 に答える
0

w3schools.com あたり

重要: HTML フォームでボタン要素を使用する場合、異なるブラウザーは異なる値を送信します。Internet Explorer は と タグの間のテキストを送信しますが、他のブラウザーは value 属性のコンテンツを送信します。input 要素を使用して、HTML フォームでボタンを作成します。

http://www.w3schools.com/tags/tag_button.asp

于 2009-11-25T23:43:34.297 に答える