带有数据库信息 PHP 的 for 循环输入

Posted

技术标签:

【中文标题】带有数据库信息 PHP 的 for 循环输入【英文标题】:inputs with for-loop with database info PHP 【发布时间】:2016-07-09 02:17:32 【问题描述】:

我需要帮助,问题是我有一个输入页面(修改后的用户配置文件) 我有一段地址,我需要做一个循环,在每组输入中我放置每个方向的信息。 因为现在例如,如果我有 3 个方向,在 3 组输入中,我会得到相同的重复信息...

这里是部分代码,因为太大就不放了,只放本期重要的代码。

谢谢大家:)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" lang="es-es">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/bootstrap.min.css" rel="stylesheet" />
		<link rel="stylesheet" type="text/css" href="font-awesome-4.5.0/css/font-awesome.min.css"/>
		<link href="css/css.css" rel="stylesheet" type="text/css" media="all" />
		<link rel="stylesheet" type="text/css" href="css/icSquared_v1.0.css"/>
		<title>Modificación de Direcciones</title>
	</head>
<body>
<div>
<?php
	include 'fn.php';
	iniciarSesion();
	
	$email = $_SESSION['user'];
	$conexion = conectar();
	
	$sql = "SELECT * FROM DIRECCION WHERE email_c='".$email."'";
	
	if($resultado = $conexion -> query($sql))
		while($fila = mysqli_fetch_array($resultado))
			$ide = $fila[0];
			$via = $fila[1];
			$nombre = $fila[2];
			$numero = $fila[3];
			$piso = $fila[4];
			$poblacion = $fila[6];
			$direcciones = mysqli_num_rows($resultado);
			desconectar($conexion);
			
			$sql = "SELECT * FROM POBLACION WHERE idPoblacion='".$poblacion."'";
			$conexion = conectar();
			
			if($resultado = $conexion -> query($sql))
				if($fila = mysqli_fetch_array($resultado))
					$codigoPostal = $fila[1];
					$nombrePob = $fila[2];
					$comunidad = $fila[3];
					$pais = $fila[5];
					
					desconectar($conexion);
				
			else
				desconectar($conexion);
			
	else
		deconectar($conexion);
	
?>
		<div class="col-sm-8">
			<div id="admin_centro" style="margin-top:2%">
				<form action="action.php?accion=updateCenterDir" method="post">
			<?php for($i=0; $i<$direcciones; $i++) ?>
					<div class="col-sm-2" style="margin:2% 6% 0 5%;">
						<div class="form-group">
							<input type="hidden" name="ide" value="<?php echo $ide; ?>" />
							<h4 class="text-success text-right">Dirección <?php echo $i+1 ?></h4>
							<label>Tipo de via:</label>
							<input type="text" name="via" class="form-control" value="<?php echo $via; ?>" required />
						</div>
						<div class="form-group">
							<label>Nombre: </label>
							<input type="text" name="nombre" class="form-control" value="<?php echo $nombre; ?>" required />
						</div>
						<div class="form-group">
							<label>Numero: <label>
							<input type="number" name="num" class="form-control" value="<?php echo $numero; ?>" required min="0"/>
						</div>
						<div class="form-group">
							<label>Piso: <label>
							<input type="text" name="piso" class="form-control" value="<?php echo $piso; ?>" />
						</div>
						<div class="form-group">
							<label>Codigo Postal:  <label>
							<input type="text" name="cp" class="form-control" value="<?php echo $codigoPostal; ?>" required />
						</div>
						<div class="form-group">
							<label>Pais: <label>
							<?php desplegable_pais(-1);?>
						</div>
						<div class="form-group">
							<label>Poblacion: <label>
							<?php echo $nombrePob." - ".$comunidad." - ".$pais; ?>
							<!-- FALTA SELECT DEPENDIENTE-->
						</div>
						<input class="btn btn-success" type="submit" id="enviar" value="Modificar"/>
					</div>
			<?php  ?>
				</form>
			</div>
		</div>
	</div>
</div>
</body>
<script src="js/jquery-1.12.1.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/scriptLogin.js"></script>
</html>
elseif($action == "updateCenterDir")
    $ide = $_POST['ide'];
    $via = $_POST['via'];
    $nombre = $_POST['nombre'];
    $numero = $_POST['num'];
    $piso = $_POST['piso'];
    $cp = $_POST['cp'];
    $poblacion = $_POST['poblacion'];

    $conexion = conectar();
    $sql = "UPDATE DIRECCION SET via='".$via."', nombre='".$nombre."', numero=".$numero.", piso='".$piso."', codigoPostal='".$cp."', poblacion='".$poblacion."' WHERE idInstalacion=".$ide;

    if($resultado = $conexion -> query($sql))
        header("Location:mod_infoDir.php?miss=1");
        desconectar($conexion);
    else
        header("Location:mod_infoDir.php?miss=2");
        desconectar($conexion);
    

【问题讨论】:

【参考方案1】:

您应该从 while 循环中生成表单字段,并且您这样做但不是正确的方式。

现在,您的 while 循环在表单之前关闭。

if($resultado = $conexion -> query($sql))
    $direcciones = mysqli_num_rows($resultado);

    while($fila = mysqli_fetch_array($resultado))

        $ide = $fila[0];
        $via = $fila[1];
        $nombre = $fila[2];
        $numero = $fila[3];
        $piso = $fila[4];
        $poblacion = $fila[6];

        $sql = "SELECT * FROM POBLACION WHERE idPoblacion='" . $poblacion . "'";

        if($resultado = $conexion -> query($sql))
            if($fila = mysqli_fetch_array($resultado))
                $codigoPostal = $fila[1];
                $nombrePob = $fila[2];
                $comunidad = $fila[3];
                $pais = $fila[5];
            
        
?>
Generate divs here...

<?php
     // close while($fila = mysqli_fetch_array($resultado))
 // close if($resultado = $conexion -> query($sql))
?>

将最后一个断开连接移到生成表单的 div 之后。

【讨论】:

它不起作用,如您所见,我在输入之前有一个 for 循环,用于执行方向数的组输入数。

方向

....
当然,那个for循环必须被删除,循环方向由while循环处理。这里,我修改了一下,贴在这里pastebin.com/SDTxz6aN哦,你得把$resultado重命名为$resultadoDireccion$resultadoPoblacion,否则变量可能会被覆盖。 非常感谢您的帮助,我已经尝试过,但没有按照我的意愿去做......任何帮助都很好,看看我是否能如愿以偿!哈哈拥抱

以上是关于带有数据库信息 PHP 的 for 循环输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使用for循环在mpdf PHP中打印数组中的值

使用 PHP for 和 foreach 循环从 JSON 数据中检索视频信息时遇到问题 - YouTube API 3

For 循环语句

For 循环语句

如何使用多个 for 循环在 php 中创建 sql 语句

在Vue3中动态过滤for循环数据源