0
$as = mysql_query('SELECT u.id,u.username,c.score FROM user u, course c WHERE u.id = c.userid ');
echo '<form action="score.php" method="post"><table>';
while($row = mysql_fetch_array($as)
{
   $uid = $row['id'];
   $username = $row['username'];
   $score    = $row['score'];
   echo '<tr><td>'.$username.'</td>
             <td><input type="hidden" name="uid" value='.$uid.'>
                 <input type="text" name="score" value='.$score.'>
             </td>
         </tr>
}
echo '<tr><td><input type="submit" name="submit" value="update"></td></tr>';
echo '</table></form>';
if($_SERVER['REQUEST_METHOD == 'POST']
{
  $uid = $_POST['uid'];
  $score = $_POST['score'];
  $sql = mysql('UPDATE user SET c.score = '.$score.' WHERE c.userid = '.$uid.'');
}

コーステーブル

userid    score
 4         45%
 3          30%
 5          80%

テーブルに更新されていませんでした。そして、変数をエコーし​​ようとしました。最後の行のみが表示されていましたが、ユーザー3用に編集しました。どこが間違っているかを誰かに提案できますか

4

1 に答える 1

1

同じ入力を再利用しているため、最後の入力のみが送信されます

変化する

echo '<tr><td>'.$username.'</td>
         <td><input type="hidden" name="uid" value='.$uid.'>
             <input type="text" name="score" value='.$score.'>
         </td>
     </tr>

echo '<tr><td>'.$username.'</td>
         <td><input type="hidden" name="uid['.$uid.']" value='.$uid.'>
             <input type="text" name="score['.$uid.']" value='.$score.'>
         </td>
     </tr>

また

if(sizeof($_POST)>0)
{
  if(is_array($_POST['uid']))
  {
    while(list($key,$value)=each($_POST['uid'])
    {
        $sql="UPDATE user SET score='".mysql_real_escape_string($_POST['score'][$key])."' WHERE userid=".intval($value);
        mysql_query($sql);
    }
  }
}
于 2012-08-01T08:18:09.020 に答える