【问题标题】:Php form update in update the form更新表单中的php表单更新
【发布时间】:2012-10-04 00:58:11
【问题描述】:

我正在运行 while 循环并从数据库中获取 3 条记录。然后在同一页面上更新它。每条记录都有提交按钮。但是在我提交表单时编辑后,它只捕获最后一条记录的值,并用最后一条记录值更新其他行。请如果有人帮助我,我将非常感激。请记住,它会捕获确切的 (id),但其他参数仅是最后一行。

<form method="post" action="">
    <table width="700" border="1">
       <tr><th><?php echo $_SESSION['teamtwo']; ?></th></tr>
       <tr>
         <th>Player Name</th>
         <th>Runs</th>
         <th>Edit</th>
         <th>Save</th>
       </tr>
       <?php
        $team = new DBConnection();
        $condition = "WHERE teamname = '".$_SESSION['teamtwo']."' and datecreated = CURDATE()";
        $sel_player = $team->SelectRecord(array("*"),"`match`","$condition");
        //$sel_player = mysql_query("SELECT * FROM `match` WHERE teamname = '$team1' and datecreated = CURDATE()") or die(mysql_error());
        while($get_player = mysql_fetch_array($sel_player))
        {
        $totalruns = $get_player['runs_bat'];
        $totalballs = $get_player['ball_bat'];
        @$strike = $totalruns / $totalballs * 100; 
        ?>
        <tr>
          <td><input type="text" name="player_name" value="<?php echo $get_player['player_name']; ?>" disabled="disabled" /></td>
           <td><input type="text" name="runs" value="<?php echo $get_player['runs_bat']; ?>" size="1" /></td>

           <td><button><a href="?player=<?php echo $get_player['id']; ?>">Edit</a></button></td>
           <td><input type="submit" value="Save" name="team" /></td>
             </tr>
         <?php 
        } ?>
     </table>
   </form>
<?php } ?>
 </div>
 </div>
</body>
</html>
<?php

    if(isset($_POST['team'])){
        $runs = $_POST['runs'];
        $balls = $_POST['ball'];




        $object = new DBConnection();
        $arr_Field=array("runs_bat","ball_bat","player_status","how_out","opposite_bowl","opposite_player","sr","overs","bowl_ball","runs_ball","extra","madien");
        $arr_Values=array("$runs","$balls","$status","$how_out","$opposite_bowler","$opposite_player","$sr","$over","$bowls","$score","$extra","$madien");
        $condition = "WHERE id = '".$_REQUEST['player']."'";
        //echo $_REQUEST['player'];

        //echo $runs.$balls;

        $object->UpdateRecord("`match`",$arr_Field,$arr_Values,"$condition") or die(mysql_error());
        //header("Location:extra.php?update");


    }

【问题讨论】:

    标签: php html forms phpmyadmin


    【解决方案1】:

    此代码必须有效

    <form method="post" action="">
        <table width="700" border="1">
           <tr><th><?php echo $_SESSION['teamtwo']; ?></th></tr>
           <tr>
             <th>Player Name</th>
             <th>Runs</th>
             <th>Edit</th>
             <th>Save</th>
           </tr>
           <?php
            $team = new DBConnection();
            $condition = "WHERE teamname = '".$_SESSION['teamtwo']."' and datecreated = CURDATE()";
            $sel_player = $team->SelectRecord(array("*"),"`match`","$condition");
            //$sel_player = mysql_query("SELECT * FROM `match` WHERE teamname = '$team1' and datecreated = CURDATE()") or die(mysql_error());
            while($get_player = mysql_fetch_array($sel_player))
            {
            $totalruns = $get_player['runs_bat'];
            $totalballs = $get_player['ball_bat'];
            @$strike = $totalruns / $totalballs * 100; 
            ?>
            <tr>
              <td><input type="text" name="player_name" value="<?php echo $get_player['player_name']; ?>" disabled="disabled" /></td>
               <td><input type="text" name="runs<?=$get_player['id']?>" value="<?php echo $get_player['runs_bat']; ?>" size="1" /></td>
    // you didnt write this i added
    <input type="text" name="ball<?=$get_player['id']?>" value="<?php echo $get_player['ball_bat']; ?>" size="1" />
    
               <td><button><a href="?player=<?php echo $get_player['id']; ?>">Edit</a></button></td>
               <td><input type="submit" value="Save" name="team" /></td>
                 </tr>
             <?php 
            } ?>
         </table>
       </form>
    <?php } ?>
     </div>
     </div>
    </body>
    </html>
    <?php
    
        if(isset($_POST['team'])){
        $runsname = 'runs'.$_GET['player'];
        $ballsname = 'ball'.$_GET['player'];
            $runs = $_POST[$runsname];
            $balls = $_POST[$ballsname];
    
    
    
    
            $object = new DBConnection();
            $arr_Field=array("runs_bat","ball_bat","player_status","how_out","opposite_bowl","opposite_player","sr","overs","bowl_ball","runs_ball","extra","madien");
            $arr_Values=array("$runs","$balls","$status","$how_out","$opposite_bowler","$opposite_player","$sr","$over","$bowls","$score","$extra","$madien");
            $condition = "WHERE id = '".$_REQUEST['player']."'";
            //echo $_REQUEST['player'];
    
            //echo $runs.$balls;
    
            $object->UpdateRecord("`match`",$arr_Field,$arr_Values,"$condition") or die(mysql_error());
            //header("Location:extra.php?update");
    
    
        }
    

    【讨论】:

      【解决方案2】:

      问题是您只有一个表单,当您提交表单时,它将提交最后一行的值,因为您在 1 个表单中的所有 3 行都具有相同的名称。

      解决方案:-

      在 while 循环内创建表单元素并在 while 循环内将其关闭。像这样,您将有 3 个表格,每个表格 3 行。

      代码示例:-

          while($get_player = mysql_fetch_array($sel_player))
          {
          $totalruns = $get_player['runs_bat'];
          $totalballs = $get_player['ball_bat'];
          @$strike = $totalruns / $totalballs * 100; 
          ?>
          <form>
          <tr>
            <td><input type="text" name="player_name" value="<?php echo $get_player['player_name']; ?>" disabled="disabled" /></td>
             <td><input type="text" name="runs" value="<?php echo $get_player['runs_bat']; ?>" size="1" /></td>
      
             <td><button><a href="?player=<?php echo $get_player['id']; ?>">Edit</a></button></td>
             <td><input type="submit" value="Save" name="team" /></td>
          </tr>
          </form>
           <?php 
          } ?>
      

      【讨论】:

        【解决方案3】:

        1. 您需要在 while 中创建输入数组,因为 name 属性在循环中被覆盖

        <td><input type="text" name="player_name[<?php echo $get_player['id']?>]" value="<?php echo $get_player['player_name']; ?>" disabled="disabled" /></td>
        <td><input type="text" name="runs[<?php echo $get_player['id']?>]" value="<?php echo $get_player['runs_bat']; ?>" size="1" /></td>
        

        2. 您拥有所有文本框意味着如果按下一行的提交按钮,那么您还将获得所有文本框作为 php 端,因此在表单中创建隐藏变量以获取单击的按钮

        //write javascript in your page
        <script>
        function setPlayerId(id) {
          document.getElementById('playerid').value=id;
        }
        </script>
        
        //take hidden field into form
        <input type='hidden' name='playerid' value='0'>
        
        //write down onlick button event
        
        <input type="submit" value="Save" name="team" onClick="setPlayerId('<?php <?php echo $get_player['id']?>?>')"/>
        

        3. 现在在php中你会得到如下

        echo $_POST['player_name'][$_POST['playerid']];
        
        // same way you can do your insert or update.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-18
          • 2014-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-30
          相关资源
          最近更新 更多