Error handling PHP表单提交

Error handling PHP表单提交,error-handling,php,Error Handling,Php,我的表单有问题,我正在显示数据库中的两行,它们使用相同的表单(使用while循环)将值放回数据库。问题是显示的第二行或最下面的一行工作正常,但是上面的一个可以工作,例如,如果我点击底部的一个值1,那么上面的一个只有在我点击值1之后才能工作,然后停止工作 我的网站是www.albsocial.us/test/seria.php为了亲自查看,我在本例中添加了一段视频 <?php session_start(); include("connect.php"); $query = "SELECT

我的表单有问题,我正在显示数据库中的两行,它们使用相同的表单(使用while循环)将值放回数据库。问题是显示的第二行或最下面的一行工作正常,但是上面的一个可以工作,例如,如果我点击底部的一个值1,那么上面的一个只有在我点击值1之后才能工作,然后停止工作

我的网站是www.albsocial.us/test/seria.php为了亲自查看,我在本例中添加了一段视频

<?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');
}

?>

问题在于,您正在使用while循环来显示HTML表单,因此当提交表单并尝试访问
$\u POST['test']
时,它只接收最后一个值,因为HTML将覆盖这些值

因此,您需要做的就是将字段名称从
test
更改为
test[]
,现在发生的情况是,当您提交表单时,它会出现错误,即
$\u POST['test][0]
$\u POST['test'][1]
,等等,所有索引为0的值都将具有第一个字段的值,所有1的值都具有第二个形式的值,依此类推


希望我说的有道理:)。

似乎您想要更新赢、输、平局的值,通过在所选选项中添加1,我已将代码更改了一点,作为建议,希望是wokrs

<?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/>"; 

} 

?>

似乎不管用,兄弟。。这是我需要更改的行-->$select=isset($\u POST['test'][0])$_POST['test'][0]:false;您是否将HTML中的name属性更改为“test[]”?Parashiko 1 X 2仍然无法使用King brothertry打印$\u POST并根据我提供的理论更改您的逻辑。不,它将适用于底部的任何行id。。然后,如果我单击底部的值=1,则顶部仅在我单击相同的值时才起作用,按钮否例如,如果我单击底部的行值,则我希望提交该值。。然后,如果我决定单击顶部一,我应该提交该值一@prix请检查视频。。救命恩人我的朋友。。。非常感谢你的兄弟。。这是一个很好的解决办法。。你能解释一下我做错了什么吗。。我不得不加入这些-->$submit=@$_POST[“submit”]$测试=@$_POST[“测试”];foreachI认为您已经将代码分为两部分,一部分是从数据库中检索数据并显示它,另一部分是将数据保存(更新)到数据库中。如果先进行更新会更好,因为当您决定稍后查询数据库时,数据将是最新的。另一件事是,您在页面中使用了许多表单,而您可以使用一个表单并使用输入作为数组。谢谢我的朋友。。真的很有帮助。多亏了你,我现在明白了