Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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:如何避免foreach中foreach的重复结果?_Php_Mysql_Loops_Foreach - Fatal编程技术网

PHP:如何避免foreach中foreach的重复结果?

PHP:如何避免foreach中foreach的重复结果?,php,mysql,loops,foreach,Php,Mysql,Loops,Foreach,我有一个项目列表:userID、pagoID、cursoroid 注意:我正在测试这个概念,还没有添加任何安全检查 列表是通过编程生成的,我从数据库中检索userID和pagoID。我在每行旁边添加了一个文本输入字段,以便管理员手动添加光标 我做了一个while循环,以便列出: while($x=mysqli_fetch_array($mostrarPagos)){ echo $x['pagoID']; echo $x['userID']; echo '<input name="verif

我有一个项目列表:userID、pagoID、cursoroid

注意:我正在测试这个概念,还没有添加任何安全检查

列表是通过编程生成的,我从数据库中检索userID和pagoID。我在每行旁边添加了一个文本输入字段,以便管理员手动添加光标

我做了一个while循环,以便列出:

while($x=mysqli_fetch_array($mostrarPagos)){
echo $x['pagoID'];
echo $x['userID'];
echo '<input name="verificarPago['.$x['pagoID'].']" type="text">';
};
表中有两行包含此信息,光标取自我在输入字段中键入的内容:

当我点击提交时,结果如下:

这是我的疑问:

SELECT DISTINCT pagos.pagoID, pagos.userID,  pagos.pagoMonto, pagos.pagoFecha, 
                pagos.pagoMedioUtilizado, pagos.pagoCuentaOrigen, pagos.pagoSucursal, 
                pagos.pagoCodigo,
                usuarios.userID, usuarios.userEmail,
                GROUP_CONCAT(DISTINCT cursos.nombreCurso, ' cid:', cursosUsuarios.cursoID ORDER BY cursosUsuarios.cursoID SEPARATOR '<br>') AS 'cursos'

                FROM pagos LEFT JOIN usuarios
                ON pagos.userID = usuarios.userID
                LEFT JOIN cursosUsuarios
                ON usuarios.userID = cursosUsuarios.userID

                LEFT JOIN cursos
                ON cursosUsuarios.cursoID = cursos.cursoID
                AND cursos.estadoCurso = 'abierto'

                JOIN pagosVerificados
                WHERE pagos.pagoID NOT IN (SELECT pagoID FROM pagosVerificados)

                GROUP BY pagos.pagoID

如果您需要问题的答案,请执行以下操作:

$alreadyHave = array();
while($x=mysqli_fetch_array($mostrarPagos)){
  if(in_array($x['pagoID'].'-'.$x['cursoID'], $alreadyHave)) {
    continue;
  }

  echo $x['pagoID'];
  echo '<input name="userID['.$x['userID'].']" value="'.$x['userID'].'"type="text">';
  echo '<input name="verificarPago['.$x['pagoID'].']" type="text">';
};

首先,如果您不想显示userID(这是您的第一个设计选择),您可以将其放入隐藏的输入中

<input type="hidden" id='userID' value="<? echo $x['pagoID'];?>"/>
没有测试


祝您好运

在您的选择查询中使用“按页码分组”、“按光标分组”您也可以使用DISTINCT。但是,您没有包括您选择的位置,因此我们不知道您是否正在使用其中任何一个。警告:在使用mysqli时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。千万不要将$\u POST或$\u GET数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。
SELECT DISTINCT pagos.pagoID, pagos.userID,  pagos.pagoMonto, pagos.pagoFecha, 
                pagos.pagoMedioUtilizado, pagos.pagoCuentaOrigen, pagos.pagoSucursal, 
                pagos.pagoCodigo,
                usuarios.userID, usuarios.userEmail,
                GROUP_CONCAT(DISTINCT cursos.nombreCurso, ' cid:', cursosUsuarios.cursoID ORDER BY cursosUsuarios.cursoID SEPARATOR '<br>') AS 'cursos'

                FROM pagos LEFT JOIN usuarios
                ON pagos.userID = usuarios.userID
                LEFT JOIN cursosUsuarios
                ON usuarios.userID = cursosUsuarios.userID

                LEFT JOIN cursos
                ON cursosUsuarios.cursoID = cursos.cursoID
                AND cursos.estadoCurso = 'abierto'

                JOIN pagosVerificados
                WHERE pagos.pagoID NOT IN (SELECT pagoID FROM pagosVerificados)

                GROUP BY pagos.pagoID
$alreadyHave = array();
while($x=mysqli_fetch_array($mostrarPagos)){
  if(in_array($x['pagoID'].'-'.$x['cursoID'], $alreadyHave)) {
    continue;
  }

  echo $x['pagoID'];
  echo '<input name="userID['.$x['userID'].']" value="'.$x['userID'].'"type="text">';
  echo '<input name="verificarPago['.$x['pagoID'].']" type="text">';
};
$verificarPago = "INSERT pagosVerificados SET ";
$verificarPago.= "  userID = ".(int)$usuario;
$verificarPago.= ", pagoID = ".(int)$pago;
$verificarPago.= ", cursoID = ".(int)$curso;
<input type="hidden" id='userID' value="<? echo $x['pagoID'];?>"/>
echo '<input name="userID['.$x['userID'].']" value="'.$x['userID'].'" type="text">
echo '<input name="userID['.$x['pagoID'].']" value="'.$x['userID'].'" type="text">
  $userID = $_POST['userID'];
  //foreach ($userID as $usuario) {
  $verificarPago = "INSERT pagosVerificados SET userID = '$userID[$pago]', pagoID = '$pago', cursoID = '$curso'";