Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php重复提交按钮不同的值_Php_Html_Mysql - Fatal编程技术网

php重复提交按钮不同的值

php重复提交按钮不同的值,php,html,mysql,Php,Html,Mysql,嗨,使用下面的代码,我为每一行生成一个带有提交按钮的表 function GetPlayer($link){ if (isset($_SESSION['username'])) { $x = 0; $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; "; $result = mysqli_query($link,$sql); while($row = mysq

嗨,使用下面的代码,我为每一行生成一个带有提交按钮的表

    function GetPlayer($link){
    if (isset($_SESSION['username'])) {
    $x = 0; 
        $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; ";
        $result = mysqli_query($link,$sql);

        while($row = mysqli_fetch_assoc($result)){
            if($row['username'] !== $_SESSION['username']){//add so it dosent put duplicates
                echo ("<tr>");
                echo ("<th>".$row['username']." </th>");
                echo ("<th>Level: ".$row['Level']." </th>");
                echo ("<th>Player Stats:".$row['Attack']."/".$row['Defence']." </th>");
                echo ("<th>Win Chance: ");
                echo CalculateWinChance($link,$row['Defence']);
                echo ("<th><input type ='submit' name = 'Attack_Btn' value ='Attack'></th>");
                echo ("</tr>");
            }
        }
    }
}
is调用两个传入5的函数以返回一个不同的值,然后将该值传递给另一个函数

我如何才能获得数据,例如$row['Attack'],并且它与其他生成的提交按钮不同


我一直在读关于ajax的文章,这在这种情况下可以使用吗?

最好的方法就是像Leeish说的那样

在表单中创建一个隐藏字段。此外,您还可以通过将回音分配给变量并回音该变量来减少使用的回音量

    function GetPlayer($link){
    if (isset($_SESSION['username'])) {
    $x = 0; 
        $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; ";
        $result = mysqli_query($link,$sql);

        while($row = mysqli_fetch_assoc($result)){
            if($row['username'] !== $_SESSION['username']){//add so it dosent put duplicates
                $toEcho  = "<tr>";
                $toEcho .= "<th>".$row['username']." </th>";
                $toEcho .= "<th>Level: ".$row['Level']." </th>";
                $toEcho .= "<th>Player Stats:".$row['Attack']."/".$row['Defence']." </th>";
                $toEcho .= "<th>Win Chance: ";
                $toEcho .= CalculateWinChance($link,$row['Defence'];
                $toEcho .= "<input type='hidden' name='Hiiden1' value='YOUR NUMBER' />";
                $toEcho .= "<th><input type ='submit' name = 'Attack_Btn' value ='Attack'></th>";
                $toEcho .= "</tr>";

                echo $$toEcho;
            }
        }
    }
}

现在你可以随心所欲地使用它。

做这件事的最好方法就是利什所说的

在表单中创建一个隐藏字段。此外,您还可以通过将回音分配给变量并回音该变量来减少使用的回音量

    function GetPlayer($link){
    if (isset($_SESSION['username'])) {
    $x = 0; 
        $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; ";
        $result = mysqli_query($link,$sql);

        while($row = mysqli_fetch_assoc($result)){
            if($row['username'] !== $_SESSION['username']){//add so it dosent put duplicates
                $toEcho  = "<tr>";
                $toEcho .= "<th>".$row['username']." </th>";
                $toEcho .= "<th>Level: ".$row['Level']." </th>";
                $toEcho .= "<th>Player Stats:".$row['Attack']."/".$row['Defence']." </th>";
                $toEcho .= "<th>Win Chance: ";
                $toEcho .= CalculateWinChance($link,$row['Defence'];
                $toEcho .= "<input type='hidden' name='Hiiden1' value='YOUR NUMBER' />";
                $toEcho .= "<th><input type ='submit' name = 'Attack_Btn' value ='Attack'></th>";
                $toEcho .= "</tr>";

                echo $$toEcho;
            }
        }
    }
}
现在你可以随心所欲地使用它了


您可以使每一行成为自己的表单,并在每个表单上包含一个隐藏的输入值。您可以使用按钮类型submit并使值与文本(我认为)攻击不同。只有当您试图加载/处理数据而不想重新加载整个页面时,Ajax才有用2分钟前的背风

这个

你需要重新考虑你的方法。在你的例子中,你甚至没有使用“Dummy_Btn”的值,所以我不确定你到底想要实现什么

如果您能提供一个更全面的解释,说明您正试图通过表单传递哪些数据,以及您希望对所述数据执行的处理,我很乐意帮助您启动并运行此程序


您可以使每一行成为自己的表单,并在每个表单上包含一个隐藏的输入值。您可以使用按钮类型submit并使值与文本(我认为)攻击不同。只有当您试图加载/处理数据而不想重新加载整个页面时,Ajax才有用2分钟前的背风

这个

你需要重新考虑你的方法。在你的例子中,你甚至没有使用“Dummy_Btn”的值,所以我不确定你到底想要实现什么


如果您能更全面地解释您试图通过表单传递的数据以及您希望对所述数据执行的处理,我很乐意帮助您启动并运行此程序。

解决方案是

  • 首先将提交输入元素封装在
    中,并将
    $row['Attack']
    值附加到表单元素的
    action
    属性中,如下所示:

    function GetPlayer($link){
        if (isset($_SESSION['username'])) {
        $x = 0; 
            $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; ";
            $result = mysqli_query($link,$sql);
    
            while($row = mysqli_fetch_assoc($result)){
                if($row['username'] !== $_SESSION['username']){//add so it dosent put duplicates
                    ?>
                    <tr>
                        <th><?php echo $row['username']; ?></th>
                        <th>Level: <?php echo $row['Level']; ?></th>
                        <th>Player Stats:<?php echo $row['Attack'] . "/" . $row['Defence']; ?></th>
                        <th>Win Chance:</th>
                        <?php echo CalculateWinChance($link,$row['Defence']); ?>
                        <form method="post" action="your_page.php?attack=<?php echo $row['Attack']; ?>">
                            <th><input type ='submit' name = 'Attack_Btn' value ='Attack'></th>
                        </form>
                    </tr>
                    <?php
                }
            }
        }
    }
    

    • 解决方案是

      • 首先将提交输入元素封装在
        中,并将
        $row['Attack']
        值附加到表单元素的
        action
        属性中,如下所示:

        function GetPlayer($link){
            if (isset($_SESSION['username'])) {
            $x = 0; 
                $sql = "SELECT * FROM userstats ORDER BY RAND() LIMIT 5; ";
                $result = mysqli_query($link,$sql);
        
                while($row = mysqli_fetch_assoc($result)){
                    if($row['username'] !== $_SESSION['username']){//add so it dosent put duplicates
                        ?>
                        <tr>
                            <th><?php echo $row['username']; ?></th>
                            <th>Level: <?php echo $row['Level']; ?></th>
                            <th>Player Stats:<?php echo $row['Attack'] . "/" . $row['Defence']; ?></th>
                            <th>Win Chance:</th>
                            <?php echo CalculateWinChance($link,$row['Defence']); ?>
                            <form method="post" action="your_page.php?attack=<?php echo $row['Attack']; ?>">
                                <th><input type ='submit' name = 'Attack_Btn' value ='Attack'></th>
                            </form>
                        </tr>
                        <?php
                    }
                }
            }
        }
        

      您可以使每一行成为自己的表单,并在每个表单上包含一个隐藏的输入值。您可以使用按钮类型submit并使值与文本不同(我认为)
      Attack
      。只有当您试图加载/处理数据而不想重新加载整个页面时,Ajax才有用。您可以使每一行成为自己的表单,并在每个表单上包含一个隐藏的输入值。您可以使用按钮类型submit并使值与文本不同(我认为)
      Attack
      。只有当您试图加载/处理数据而不想重新加载整个页面时,Ajax才有用。虚拟按钮只是我需要传递的变量的一个示例。我需要使用相同的函数,但不是传递5,而是传递$row['defence'],虚拟按钮只是我需要传递的变量的一个示例。我需要使用相同的功能,但不是传递5,而是传递$row[“防御”],虚拟按钮已经在使用中。我试图让攻击使用$row['Defence']的值,但是因为它生成了5个按钮,所有按钮的名称都是相同的,这使得它很困难,而且每次我都尝试使用不同的值,但是因为隐藏1不存在,直到它生成我得到未定义的索引:hidden1错误??那么你想在按钮发布后生成表单吗?它可以工作,但在我加载该页面之前它会有一个错误,这不是理想的。重新编辑该页面后不确定。它似乎不会发生可能是一次性的事情。谢谢虚拟按钮已经在使用中。我试图让攻击使用$row['Defence']的值,但是因为它生成了5个按钮,所有按钮的名称都是相同的,这使得它很困难,而且每次我都尝试使用不同的值,但是因为隐藏1不存在,直到它生成我得到未定义的索引:hidden1错误??那么你想在按钮发布后生成表单吗?它可以工作,但在我加载该页面之前它会有一个错误,这不是理想的。重新编辑该页面后不确定。它似乎不会发生可能是一次性的事情。谢谢你
      if(isset($_POST['Attack_Btn'])){
          $attack = $_GET['attack'];
      
          // call those two functions
          $winChance = CalculateWinChance($link, $attack);
          Train($link,1,1,$winChance);
      }