0

フォーム要素の値をtype="button"mySql データベースに追加するのに問題があり、何か足りないのではないかと考えています。

編集 -値をエコーし​​ていないため、その要素の情報が html から php に渡されているようには見えません。私の唯一の問題は、この 1 つの要素と、フォームの残りの部分が適切に送信されていることです。

選択した画像に基づいてユーザープロファイルを作成するオンラインクイズにこれを使用し、画像をボタン要素の背景画像として設定しています。これをストレートhtmlで実行しようとしています(ラジオ ボタンまたはチェック ボックスと一緒に JavaScript を使用する)。

<input type="button" name="quiz_start" value="jeans" style="background: url(files/start1.jpg) no-repeat; width:54px;height:140px; cursor:pointer; border:none; color: transparent; font-size : 0">       

質問をする目的で、php コードを単純化しました (ユーザー ID を指定し、それを 1 つのフィールドのみに制限することを含む)。以下に完全なコードも含めました。

<?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('$user_id','$_POST[quiz_start]')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>

完全なクエリは次のとおりです。

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) { 
 $fieldlist.=$key.',';
 $vallist.='\''.($value).'\',';
}
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$fieldlist.=', user_id';
$vallist.=','.$user_id;
$setlist='';
foreach ($_POST as $key=>$value){
$setlist.=$key .'=\''.$value.'\',';
}
$setlist=substr($setlist, 0, -1);  
$result = mysql_query('UPDATE style SET '.$setlist.' WHERE user_id='.$user_id);
if (mysql_affected_rows()==0) {
$result = mysql_query('INSERT INTO style ('.$fieldlist.') VALUES ('.$vallist.')');
}  
header("location: page2.html");
exit();
?>
4

3 に答える 3

1

これを試して:

    <?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('".$user_id."','".$_POST['quiz_start']."')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>
于 2013-01-14T03:17:48.143 に答える
1

$ _POST ['quiz_start']をエコーできないことを確認すると、値が実際に設定されていないことを意味します。これは、フォームのようにクラスボタンを使用すると、<input type='button'>実際には次のように送信されないためです。<input type='submit'>

1つの解決策は、ボタンを実際の送信に変更してフォーマットすることです...または、次のようにボタンからonClickを使用してjavascript関数を呼び出す必要があります。

<input type="button" onClick="myfunction()">

私が話していることを参照するには、この投稿を見てください。

あなたが言うように、残りのフォーム値はうまく送信されているが、ボタン値だけが機能していない場合は、好みに応じていくつかの異なる解決策があります。

  1. データを渡すことができるタイプを選択するには、選択フィールドまたはチェックボックスを使用します。
  2. JavaScriptでフォームを送信してから、JavaScriptで<input type="button" onClick="myfunction()">更新クエリを実行します。
  3. 最後に、PHPでクエリを実行する場合は、javascript関数を実行してAJAX呼び出しを行い、ページの読み込み後にphp変数を定義して更新クエリにプラグインできるJSON情報を返すことができます。
于 2013-01-14T03:32:27.827 に答える
1

input type="button" はユーザーの選択をキャプチャできないように見えるので、html のみを使用してラジオ ボタンまたはチェック ボックスでこれを行うための非常に簡単な方法を共有したいと思います。

入力要素を に設定しstyle="display:none"、画像と入力要素の両方をラベル タグで囲むだけで、ユーザーは画像の任意の場所をクリックして要素を選択できます :-)

<label for="quiz_start">
<img src="files/start1.jpg" />
<input style="display:none" type="radio" id="quiz_start" name="quiz_start" value="jeans">    
</label>
于 2013-01-14T05:41:06.533 に答える