Foros del Web » Programando para Internet » PHP »

Modificación de varios registros de una sola vez

Estas en el tema de Modificación de varios registros de una sola vez en el foro de PHP en Foros del Web. ¡¡Hola de nuevo!! Estuve dandole vueltas a este tema pero no soy capaz de quitar nada en claro así que agradecería que alguno de vosotros ...
  #1 (permalink)  
Antiguo 06/10/2005, 12:05
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Modificación de varios registros de una sola vez

¡¡Hola de nuevo!!
Estuve dandole vueltas a este tema pero no soy capaz de quitar nada en claro así que agradecería que alguno de vosotros me echara una mano.

Voy a explicar lo que quiero conseguir y luego pondré el código que tengo y segurísimo que habrá muchas cosas mal porque a mi lo de programar no se me da muy bien que digamos, así que estad atentos :P
1. Tengo una serie de actos metidos en una tabla en una Base de datos cuyos campos son: ID (autonumerico), nombre, descripción -Es una tabla de actos o actuaciones futuras.
2. Accedo a la base de datos y realizo una consulta para seleccionar todos los registros. Una vez seleccionados los muestro introduciendo los datos directamente en campos <input> para su posterior modificación.
3. Los input evidentemente están introducidos dentro de un formulario.
4. Los datos se muestran en una tabla. Al final de la tabla se encuentra un único botón de submit el cual ejecutará la consulta de modificación de datos. Lo que quiero decir es que quiero modificar varios registros de una sola vez.
5. La primera consulta que hago (selección de datos de la tabla y mostrar) funciona correctamente, se ve todo bien. Una vez modificamos, se recargan los campos de texto con la nueva información y lo único que se me ve es Array Array Array.
6. En fin... ¡socorro!

Ahí os dejo el código:

Código PHP:
<br><form action="modactos.php" name="modificacion" method="post">
<table width="98%" align="center" class="centrado"><tr><td colspan="3">
<h1 class="centrado"> Modificación de actos programados </h1>
<?php 
if ($modificar) {
// echo "Oeoeoeoeoeo";
//echo $_POST['idacto'];
 
foreach ($_POST['idacto'] as $id) {  
//  echo $id;
  
$update "UPDATE agenda SET nombre='"$nombreacto ."', descripcion='"$descripcionacto ."' WHERE ID=$id;";
  
mysql_query($update$dbd);
  if (
mysql_affected_rows()>0) {
   echo 
"";
  }
  else {
   echo 
"<h2 class='fondorosa letrablanca centrado'> *** Ha ocurrido un error en el servidor durante la actualización de los datos, si crees que es necesario comunícanoslo a [email protected] ***</h2>";
  }
 }
}
$sql="SELECT * FROM agenda ORDER BY descripcion;";
$resultado=mysql_query($sql$dbd);
$numero=mysql_num_rows($resultado); //Esta función: mysql_num_rows, nos dice el número de registros que hay en el array resultado.

if (!$resultado)
 die (
"*** Lo sentimos, pero no hay actos disponibles actualmente ****");
if (
$numero == 0
 echo 
"<p class='fondoamarillo'>Actualmente no existe ningún acto próximo programado. Si quiere poner en nuestro conocimiento algún acto, puede enviarnos un e-mail a [email protected] o pulsar en el mensaje ¡Contacte con nosotros! para que se le abra la opción de enviar mensaje, con todos los datos sobre el mismo: nombre, breve descripción, fecha, hora y lugar de celebración, etc. Gracias por su colaboración.</p>";
?>
</td></tr>
<?php 
while($registro mysql_fetch_array($resultadoMYSQL_ASSOC))
?>
 <td width="3%"><input type="hidden" value="<?php echo $registro['ID']?>" name="idacto[]"><img src="../imagenes/gl_lb.gif" alt="actos programados"></td>
    <td width="30%" ><input type="text" value="<?php echo $registro['nombre']?>" name="nombreacto[]" class="letrapequeña" size="40"></td>
    <td width="67%" ><input type="text" value="<?php echo $registro['descripcion']?>" name="descripcionacto[]" class="letrapequeña" size="90"></td>
  </tr>
  <?php 
  
}
?>
<tr><td colspan="3" class="derecha"><br><input type="submit" name="modificar" value="Modificar" class="letrapequeña centrado negro">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
</table></form>
<br>
  #2 (permalink)  
Antiguo 06/10/2005, 14:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No puedes usar un foreach() para leer esos 3 arrays que generas con mismo indice (y distinto valor para cada uno de sus elementos). Debes usar un bucle for() simple donde usaras el indice igual para acceder en "paralelo" a esos 3 o N arrays que tengas:
Código PHP:
for ($indice=0$indice <= count($_POST['idacto']; $indice++){
echo 
$_POST['idacto'][$indice]."<br>";
echo 
$_POST['nombre'][$indice]."<br>";
echo 
$_POST['descripcion'][$indice]."<br><br>";

Como veras .. como son arrays "paralelos" .. con contar los elementos que tiene uno de ellos sobra para recorrer los N subsiguientes en paralelo.

Un saludo,
  #3 (permalink)  
Antiguo 11/10/2005, 11:15
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 8 meses
Puntos: 0
Gracias Cluster, eso era exactamente lo que necesitaba. :)

PD. Siento haber tardado tanto en responder pero no tuve ocasión de probarlo hasta hoy.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.