我的表单有问题,我正在显示数据库中的两行,这些行使用相同的表单(使用while循环)将值放回数据库。问题在于显示的第二行或底部行有效很好,但是最上面的一个工作,例如,如果我单击最下面的一个值1,则最上面的一个只有当我单击值1且此后停止工作时才起作用。
我的网站是 www.albsocial.us/test/seria.php 自己检查一下,其中包括一个视频 http://www.youtube.com/watch?v=xGwPd_P65oM
<?php
session_start();
include("connect.php");
$query = "SELECT * FROM test ORDER BY `id` ASC LIMIT 2";
$result = mysql_query($query);
echo "<h2>Seria A</h2><hr/>";
while($row = mysql_fetch_array($result)){
$id = $row['id'];
$home = $row['home'];
$away = $row['away'];
$win = $row['win'];
$draw = $row['draw'];
$lose = $row['lose'];
echo "<br/>",$id,") " ,$home, " - ", $away;
echo "
<form action='seria.php' method='post' id='$id'>
<select name='test'>
<option value=\"\">Parashiko</option>
<option value='1'>1</option>
<option value='X'>X</option>
<option value='2'>2</option>
<input type='submit' name='submit' value='Submit'/>
<input type='hidden' name='id' readonly value='".$row['id']."'/>
</select>
<br/>
</form>";
echo "Totali ", $sum = $win+$lose+$draw, "<br/><hr/>";
}
if (!empty($_POST)) {
$id=isset($_POST['id'])&&is_numeric($_POST['id']) ? $_POST['id']:false;
$select = isset($_POST['test']) ? $_POST['test']:false;
switch ($select) {
case 1:
$select = $win + $select;
mysql_query("UPDATE test SET win='$select' WHERE id='$id'");
break;
case 'X':
$select = '1';
$select = $draw + $select;
mysql_query("UPDATE test SET draw='$select' WHERE id='$id'");
break;
case 2:
$select = '1';
$select = $lose + $select;
mysql_query("UPDATE test SET lose='$select' WHERE id='$id'");
break;
default:
}
header('Location: ../test/seria.php');
}
?>
最佳答案
似乎您想通过在选定的选择上加1来更新获胜,失败,平局的值,我建议稍稍更改代码,希望如此。
<?php
session_start();
include("connect.php");
$submit = @$_POST["submit"];
$tests = @$_POST["test"];
// If the user submitted the form.
// Do the updating on the database.
if (!empty($submit))
{
if (count($tests) > 0)
{
foreach ($tests as $test_id => $test_value)
{
switch ($test_value)
{
case 1:
mysql_query("UPDATE test SET win = win + 1 WHERE id = '$test_id'");
break;
case 'X':
mysql_query("UPDATE test SET draw = draw + 1 WHERE id = '$test_id'");
break;
case 2:
mysql_query("UPDATE test SET lose = lose + 1 WHERE id = '$test_id'");
break;
default:
// DO NO THING.
}
}
}
// Redirect to seria page.
header('Location: ../test/seria.php');
}
// Whenever this wiil be fetched it will be updated.
$query = "SELECT * FROM test ORDER BY `id` ASC LIMIT 2";
$result = mysql_query($query);
echo "<h2>Seria A</h2><hr/>";
while($row = mysql_fetch_array($result)){
$id = $row['id'];
$home = $row['home'];
$away = $row['away'];
$win = $row['win'];
$draw = $row['draw'];
$lose = $row['lose'];
echo "<br/>",$id,") " ,$home, " - ", $away;
echo "
<form action='seria.php' method='post'>
<select name='test[$id]'>
<option value=\"\">Parashiko</option>
<option value='1'>1</option>
<option value='X'>X</option>
<option value='2'>2</option>
</select>
<input type='submit' name='submit' value='Submit'/>
<br/>
</form>";
echo "Totali ", $sum = $win+$lose+$draw, "<br/><hr/>";
}
?>
最好的祝福,
老公
关于error-handling - PHP表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120994/