带有数据库信息 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 循环输入的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP for 和 foreach 循环从 JSON 数据中检索视频信息时遇到问题 - YouTube API 3