-1

我试图从我的数据库中显示 2 行,但我希望它是当我单击第一行单选按钮时,第一行更新.. 这没有发生......当我点击第一行时,第二行更新了.. 检查它请自己生活---> http://albsocial.us/seria.php

  <?php

 include("connect.php");

    $query = "SELECT * FROM test ORDER BY `id` DESC 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 $home, " - ", $away,"<br/>";

        echo "<form action='' method='post'>

        <input type='hidden' name='id' value='".$row['id']."'>

        <input type='radio' name='select' value='1'>1
        <input type='radio' name='select' value='X'>X
        <input type='radio' name='select' value='2'>2

        <input type='submit' name='submit' value='Submit'/>

        </form>
        ";

         echo $home, " -> ", $win;
         echo "<br/>Barazim  -> ", $draw,"<br/>";
         echo $away, " -> ", $lose,"<hr/>";
    }   

    $id = isset($_POST['id']) && is_numeric($_POST['id']) ? $_POST['id']:false;

    if (isset($_POST) && $_POST['select'] == 1){
        $select = $_POST['select'];
        $select = $win + $select;
        mysql_query("UPDATE test SET win='$select' WHERE id='$id'");
        header('Location: ../seria.php');
    }else if (isset($_POST) && $_POST['select'] == 'X'){
        $select = $_POST['select'];
        $select = '1';
        $select = $draw + $select;
        mysql_query("UPDATE test SET draw='$select' WHERE id='$id'");
        header('Location: ../seria.php');
    }else if (isset($_POST) && $_POST['select'] == 2){
        $select = $_POST['select'];
        $select = '1';
        $select = $lose + $select;
        mysql_query("UPDATE test SET lose='$select' WHERE id='$id'");
        header('Location: ../seria.php');
    } 

    ?>
4

2 回答 2

0

问题在于您的按钮名称。您应该为每个按钮名称提供一个彼此不同的名称,以便服务器知道正在提交哪个表单。您可以尝试根据 id 给您的按钮名称,如下所示:

<input type='submit' name='submit<?php echo $id; ?>' value='Submit'/>

然后您可以执行条件语句来查看单击了哪个按钮,如下所示:

if ( isset( $_POST['submit$id'] ) ) { }
于 2013-06-14T00:14:17.353 回答
0

您的 while 循环将始终$id设置为数据集中最后一行的 id。

您需要某种方式为表单中的每一行提交一个 id。POST然后,在检索变量时获取该值。

如果您的结构正确,则无需进行标头重定向。

另外,我建议将isset($_POST)测试移至它自己的 if 语句,这样如果没有发布任何代码,就不会执行任何代码。

这是我将如何重做它:

<?php

include("connect.php");


// if data is submitted, update database
if (!empty($_POST)) {

  $id = isset($_POST['id']) && is_numeric($_POST['id']) ? $_POST['id'] : false;
  $select = isset($_POST['select'])&&in_array($_POST['select'],array('win','lose','draw')) ? $_POST['select'] : false;

  if ($id && $select) {
    $sql="UPDATE `test` SET `$select`=`$select`+1 WHERE `id`='$id';";
    mysql_query($sql) or die(mysql_error());
  }

}


// get data from database
$query = "SELECT * FROM test ORDER BY `id` DESC LIMIT 2";
$result = mysql_query($query) or die(mysql_error());

// output
?><h2>Seria A</h2><hr/><?php

while($row = mysql_fetch_assoc($result)){

    ?><p><?=$row['home']?> - <?=$row['away']?></p>

    <form action="" method="post">
        <input type="hidden" name="id" value="<?=$row['id']?>">
        <input type="radio" name="select" value="win">1
        <input type="radio" name="select" value="draw">X
        <input type="radio" name="select" value="lose">2
        <input type="submit" name="submit" value="Submit">
    </form>

    <p><?=$row['home']?> -> <?=$row['win']?></p>
    <p>Barazim  -> <?=$row['draw']?></p>
    <p><?=$row['away']?> -> <?=$row['lose']?></p><?php

}   


?>

顺便说一句,你是如何处理“主场”和“客场”比赛的?

于 2013-06-14T00:10:17.263 回答