-1

データベースから2行を表示しようとしていますが、1行目のラジオボタンをクリックすると1行目が更新されます..これは起こっていません.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

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

}   


?>

ところで、「ホーム」vs「アウェイ」の試合の扱いはどうなっていますか?

于 2013-06-14T00:10:17.263 に答える