PHPのsubmitボタンが複数ある場合

PHPにて会計システムを開発しているのですが、計算ボタンと、更新してDBに追加するためのボタンとが混在している場合、
$_POST等で押されたボタンの処理を分けることは可能なのでしょうか?下の例は、
name="calculation"が押された場合は、val1とval2の値を計算し、totalへ値を入れます。
name="update"が押された場合は、それぞれのフォームの値をDBに更新をかけます。
<?php

<form action="****.php" method="POST">
<input type="text" name="val1" value="20"/>
<input type="text" name="val2" value="30"/>
<input type="text" name="total" value="50"/>
<input type="submit" name="calculation"/>
<input type="submit" name="update"/>
</form>

?>
お分かりになる方、ご教授お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

<input type="submit" name="calculation" value="calculation"/>


<input type="submit" name="update" value="update" />

それぞれにvalueを入れておくと
$_POST['calculation']、$_POST['update']のどちらかに、押されたボタンのvalueが入ります。

<input type="text">などでエンターキー/リターンキーを押しても、フォームを送信出来るブラウザが多いですが、
その時はsubmitボタンは押してないので、
$_POST['calculation']、$_POST['update']の両方がnullになります。
そのときは「どちらのボタンも押されていない」という判断が出来ます。

JavaScriptのform.submit()で送信しても、<input type="submit">のnameとvalueは送られてないと思います。
    • good
    • 0

if ($_SERVER["REQUEST_METHOD"]=="POST"){ //ポストで飛ばされてきたら以下を処理



if($_POST["calculation"]){
処理内容
}

if($_POST["update"]){
処理内容
}

}

ボタンにより処理を分岐させます。
type="submit"にvalueを設定しないと上記のプログラムは、正常に動作しません。
セキュリティー処理は、省略しております。
    • good
    • 0

押されたボタンだけ、ポストで渡されますので、


if(!isNull($_POST["calculation"])
と言った形で判定できます。
    • good
    • 1

submitにもvalueを設定しているとvalueが送られるよ

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qforeach($stock as $name => $value){ の$value)で値用の変数

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のforeach文は特殊な繰り返し文で$stockは”変数名”・$name"はキー(引出し)用の変数・
 ここまでは何となく意味がわかります。最後のは$valueは”値用の変数”・・とあります。
 ここで言う、”値用の変数”の値とは何のことなのでしょうか? 
 よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のfor...続きを読む

Aベストアンサー

$name には、"みかん"、"いちご" など。$valueには、80や60が入ります。

> $stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

の => という記号と対応しているでしょ?

Qinput type valueの値について

valueの値をデータベースに投げる際の、ソースの書き方について質問させていただきます。


画像にリンク先URLを埋め込んだ状態で、valueにそのまま持たせてしまうと、正常に
データを投げれません。

※例
--------------------------------------------------------------------------------

echo "<input type=\"hidden\" name=\"img_comp\" value=\"<a href=\"http://www.○○○.com\"><img src=\"http://www.○○○.com/test_1.jpg\" border=\"0\"></a>\">";

--------------------------------------------------------------------------------

シングルクォート等様々な書き方で試しましたが、中々うまく行かずに苦戦しております。

<a ~ /a>までを変数として置いてもみたのですが、正常に走らず難儀しておりますので
もしよろしければ、どうかご教示いただけますでしょうか?

どうぞよろしくお願い申し上げます。

--------------------------------

PHP 5.1.6

MySQL 5.0.77

--------------------------------

valueの値をデータベースに投げる際の、ソースの書き方について質問させていただきます。


画像にリンク先URLを埋め込んだ状態で、valueにそのまま持たせてしまうと、正常に
データを投げれません。

※例
--------------------------------------------------------------------------------

echo "<input type=\"hidden\" name=\"img_comp\" value=\"<a href=\"http://www.○○○.com\"><img src=\"http://www.○○○.com/test_1.jpg\" border=\"0\"></a>\">";

---------------------------------------------------...続きを読む

Aベストアンサー

こういうこと?

<?PHP
echo "<input type=\"text\" name=\"img_comp\" value=\"".htmlspecialchars("<a href=\"http://www.○○○.com\"><img src=\"http://www.○○○.com/test_1.jpg\" border=\"0\"></a>")."\">";
?>

Qinput type=imageでjavascript

<input type="submit" name="next" onclock="・・・">

<input type="image" src="image/next.gif" onclick="・・・">
としたいのですが、type="image"がonclick="・・・"を利用できません。
aタグにしようとしたのですが、
<input type="submit" name="next" onclock="・・・">
のようにして、name="next"(フラグ)を飛ばすことができません。
困っているので対処方法を教えていただけるでしょうか?
よろしくお願いします。

Aベストアンサー

<form onSubmit~
で、できると思います。

もしくは画像をAタグにして、name="next"のhiddenを追加するとか。

Q要素でcheckboxの数をチェックしたい

基本的なCSS及びPHPの知識が乏しい為、自己で解決出来ずに困っています。

ある任意のデータファイルをオープンして、Webページに表示させます。
--------------------------------------------------------------------------
<html>
<body>
<form action='test2.php' method='post'>
<?php
$logfile = './logdata.txt';

$fp = fopen($logfile, "r");

while($str = fgetcsv($fp)){
$data1[] = $str[0];
$data2[] = $str[1];
}

fclose($fp);

for ($i = 0; $i < sizeof($data1); $i++){
print "<input type='checkbox' name='col1[]' value='$data1[$i]'>";
print "<input type='text' name='col2[]' value='$data2[$i]' >";
print "<br>";
}

?>
<input type='submit' value='実行'>
</form>
</body>
</html>
--------------------------------------------------------------------------

表示した内容から、checkboxで10個のデータ選択させたいと考えています。
選択したデータを次ページの'test2.php' に配列(col1[]、col2[])にして
送信しているのですが、このスクリプト内で、checkboxで選択する数のチェックを行い、
選択した数が10個でなければ、javascriptでクライアント端末側にアラートを
ポップアップ表示させたい考えています。

-------------------------------------------
<script type='text/javascript'>
function checkbox_alert() {

alert("選択数は10個にして下さい");
}
</script>
-------------------------------------------

上記のようなfunctionをスクリプにを挿入すれば出来ると考えているのですが、
具体的な記載方法が分かりません。
どなたかお分かりになる方がいらっしゃいましたら、教えて頂けないでしょうか。

基本的なCSS及びPHPの知識が乏しい為、自己で解決出来ずに困っています。

ある任意のデータファイルをオープンして、Webページに表示させます。
--------------------------------------------------------------------------
<html>
<body>
<form action='test2.php' method='post'>
<?php
$logfile = './logdata.txt';

$fp = fopen($logfile, "r");

while($str = fgetcsv($fp)){
$data1[] = $str[0];
$data2[] = $str[1];
}

fclose($fp);

for ...続きを読む

Aベストアンサー

このような感じで如何でしょう
-------------------------------
<html><head>
<SCRIPT language="JavaScript">
<!--
function CBCheck() {
var count = 0;
for (var i=0;i<document.myForm.elements.length;i++){
if ((document.myForm.elements[i].name=="col1[]") && (document.myForm.elements[i].checked)) {
count++;
}
}
if (count!=10){
alert("選択数は10個にして下さい。"+count+"個が選択されています。");
return;
} else {
document.myForm.submit();
}
}
// -->
</SCRIPT>
</head><body>
<form name='myForm' action='test2.php' method='post'>
<?php
$logfile = './logdata.txt';
$fp = fopen($logfile, "r");
while($str = fgetcsv($fp)){
$data1[] = $str[0];
$data2[] = $str[1];
}
fclose($fp);

for ($i = 0; $i < sizeof($data1); $i++){
print "<input type='checkbox' name='col1[]' value='$data1[$i]'>";
print "<input type='text' name='col2[]' value='$data2[$i]' >";
print "<br>";
}
?>
<input type='button' value='実行' onClick="CBCheck()">
</form>
</body>
</html>

このような感じで如何でしょう
-------------------------------
<html><head>
<SCRIPT language="JavaScript">
<!--
function CBCheck() {
var count = 0;
for (var i=0;i<document.myForm.elements.length;i++){
if ((document.myForm.elements[i].name=="col1[]") && (document.myForm.elements[i].checked)) {
count++;
}
}
if (count!=10){
alert("選択数は10個にして下さい。"+count+"個が選択されています。");
return;
} else {
document.myForm.submit();
}
}
// -->
</SCRIPT>
</h...続きを読む

Qinput type="hidden"で送る値を、セレクトした内容に応

input type="hidden"で送る値を、セレクトした内容に応じて動的に変えるにはどうしたらよいでしょうか?

▽現状
<form action="search.php" method="get">
キーワード:<input type="text" name="keyword">
<select name="genreid">
<option value="0">すべての商品</option>
<?php foreach ($genres as $hit) { ?>
<option value="<?php echo ($hit->genreId); ?>">
<?php echo ($hit->genreName); ?>
</option>
<?php } ?>
</select>
<input type="hidden" name="genrename" value="<?php echo ($genres->genreName); ?>">

▽問題点
この書き方だと、<option value="0">を選択した際、「すべての商品」という文字列が送れません。
<option value="0">を選択した際は「すべての商品」を、
それ以外を選択した場合は、<?php echo ($genres->genreName); ?>を送りたいのですが、どう書けばよいでしょうか?
最終的には、遷移先で、$genrename=$_GET["genrename"];で利用する予定です。

▽その他
http://oshiete.goo.ne.jp/qa/6215844.htmlで回答いただいた内容で、解決したつもりだったのですが、新たな疑問が出てきたので、質問しました。上記でアドバイスいただいた、フォームを使わないやり方については、データをAPIから取得していること等もあり、どうやって処理してよいか分からないため、できればこのフォームでやりたいと考えてます…。

input type="hidden"で送る値を、セレクトした内容に応じて動的に変えるにはどうしたらよいでしょうか?

▽現状
<form action="search.php" method="get">
キーワード:<input type="text" name="keyword">
<select name="genreid">
<option value="0">すべての商品</option>
<?php foreach ($genres as $hit) { ?>
<option value="<?php echo ($hit->genreId); ?>">
<?php echo ($hit->genreName); ?>
</option>
<?php } ?>
</select>
<input type="hidden" name="genrename" value="<?php echo ($genres->genreN...続きを読む

Aベストアンサー

<option value="0">すべての商品</option>
であなく
<option>すべての商品</option>
こうすれば
「0」のかわりに「すべての商品」が送信されるようになるわよ。
両方送りたいなら
<option value="0:すべての商品">すべての商品</option>
こうしてあげてPHPで分解してあげるのも一つの手よ。

どうしてもhiddenに格納して送りたいならJavaScriptでhiddenのvalueを書き換えるしかないわね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報