Php - While [data] 循环,$Post 仅返回第一个值

Posted

技术标签:

【中文标题】Php - While [data] 循环,$Post 仅返回第一个值【英文标题】:Php - While [data] loop, $Post returning only first value 【发布时间】:2018-07-11 19:26:42 【问题描述】:

我有这个代码,它从数据库中检索 AD 帐户、邮件。 显示没问题,我在允许更新帐户信息的每一行 (UpdateAccount) 添加一个更新按钮。

但当我提交更新时,$Post 值始终是来自第一个帐户(不是我选择的帐户)的值。

示例:

https://imgur.com/a/GUCOd

问题:

当我想更新第二个帐户时,$post 将第一个帐户的数据发送给我。

当我想更新第三个帐户时,$post 将第一个帐户的数据发送给我。

如果您有任何解决方案,我想我需要在某个地方传递一个包含我选择的数据的“$post ID”...

代码:

<?php
$data = '';

# Retrieving account in database

$sql = "SELECT ".USERAD_ID.",".USERAD_ENABLED.",".USERAD_ACCOUNT.",".USERAD_EMAIL." FROM ".USERAD_TABLE."";
$mydb = new DB();
$result = $mydb->runQuery($sql);

# Template Column

echo "
<div class='col-sm-12'>
        <div class='form-group'>
            <div class='col-sm-1'><label class='BoxSmall col-sm-12 control-label'>ID</label></div>
            <div class='col-sm-2'><label class='BoxSmall col-sm-12 control-label'>Compte AD</label></div>
            <div class='col-sm-3'><label class='BoxSmall col-sm-12 control-label'>Adresse Mail</label></div>
            <div class='col-sm-1'><label class='BoxSmall col-sm-12 control-label'>Etat</label></div>
        </div>
</div>          

";

# While Account in $result, display data

while($data = mysqli_fetch_assoc($result)) 

$id     =   $data[USERAD_ID];
$account    =   $data[USERAD_ACCOUNT];
$email      =   $data[USERAD_EMAIL];
$enabled    =   $data[USERAD_ENABLED];

echo "  
    <div class='col-sm-12'>
        <div class='form-group'>
            <div class='col-sm-1'><input type='textsmall' required name='id' id='id' value='".$id."' '></div>
            <div class='col-sm-2'><input type='textsmall' required name='account' id='account' value='".$account."' '></div>
            <div class='col-sm-3'><input type='textsmall' required name='email' id='email' value='".$email."' '></div>
            <div class='col-sm-1'><input type='textsmall' required name='enabled' id='enabled' value='".$enabled."' '></div>

        <form id='updatead' role='form' method='post'>

                    <input type='hidden' name='id' value='".$id."'>
                    <input type='hidden' name='account' value='".$account."'>
                    <input type='hidden' name='email' value='".$email."'>
                    <input type='hidden' name='enabled' value='".$enabled."'>
        </form>

        <INPUT type='submit' class='form-updatead' value='updatead' name='submit'></INPUT>
        </div>
    </div>

";
   

?>

【问题讨论】:

将提交按钮放入表单 如果我这样做,帖子是空的。 【参考方案1】:

谢谢,一切正常。 这是最终的代码:

<?php

while($data = mysqli_fetch_assoc($result)) 

$id         =   $data[USERAD_ID];
$enabled    =   $data[USERAD_ENABLED];
$account    =   $data[USERAD_ACCOUNT];
$email      =   $data[USERAD_EMAIL];

echo "  
<div class='col-sm-12'  >
    <div class='form-group'>
        <form id='".$id."' role='form' method='post' action='./admin/permissionsform.php?page=updatead'>
            <input type='hidden' name='id' value='".$id."'>
            <div class='col-sm-2'><input type='textsmall' required name='account' id='account' value='".$account."' style='width:75%'></div>
            <div class='col-sm-3'><input type='textsmall' required name='email' id='email' value='".$email."' style='width:75%'></div>
            <div class='col-sm-1'><input type='textsmall' required name='enabled' id='enabled' value='".$enabled."' style='width:75%'></div>
        </form>

        <button class='buttoneditsrv' onclick='document.getElementById(".$id.").submit()';window.location='./?view=list&search='>Mise &agrave jour</button>
    </div>
</div>
";

?>

【讨论】:

【参考方案2】:

如果您在一个页面上有多个表单,那么您的提交按钮将默认发布第一个。考虑删除 INPUT 并使用按钮或 div。像这样:

echo "  
<div class='col-sm-12'>
    <div class='form-group'>
        <div class='col-sm-1'><input type='textsmall' required name='id' id='id' value='".$id."' '></div>
        <div class='col-sm-2'><input type='textsmall' required name='account' id='account' value='".$account."' '></div>
        <div class='col-sm-3'><input type='textsmall' required name='email' id='email' value='".$email."' '></div>
        <div class='col-sm-1'><input type='textsmall' required name='enabled' id='enabled' value='".$enabled."' '></div>

    <form id='".$id."' role='form' method='post' action='/doSomething.php'>

                <input type='hidden' name='id' value='".$id."'>
                <input type='hidden' name='account' value='".$account."'>
                <input type='hidden' name='email' value='".$email."'>
                <input type='hidden' name='enabled' value='".$enabled."'>
    </form>

    <button onclick='document.getElementById('".$id."').submit()'>Submit</button>
    </div>
</div>
";

注意:我还添加了一个“action='/doSomething.php'”。

【讨论】:

复制/粘贴“, 1”的代码错误,这不是问题。

以上是关于Php - While [data] 循环,$Post 仅返回第一个值的主要内容,如果未能解决你的问题,请参考以下文章

为啥javascript不会在while循环中堆叠

带分页的Wordpress自定义循环

14PHP 循环 - While 循环

php之快速入门学习-13(PHP 循环 - While 循环)

PHP第二个while循环在while循环中只运行一次

PHP while 循环