Foros del Web » Programando para Internet » PHP »

Guardar varios arrays de checkbox

Estas en el tema de Guardar varios arrays de checkbox en el foro de PHP en Foros del Web. Hola amigos: Tengo un formulario que es un calendario en donde la persona seleccionará en cada mes los días de temporada alta. Luego debe guardarlos ...
  #1 (permalink)  
Antiguo 25/07/2012, 19:56
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Busqueda Guardar varios arrays de checkbox

Hola amigos:

Tengo un formulario que es un calendario en donde la persona seleccionará en cada mes los días de temporada alta.

Luego debe guardarlos en la base de datos mysql en una tabla llamada temporada que contiene el id_temp_alta y id_posada y a su vez en la tabla relacionada detalle temporada que contiene id_temp_alta y fecha_temp.

El problema es que no se como guardarlos porque tengo un foreach para cada array pero asi no sirve.

Este es el formulario:

http://vamonosdevacaciones.com.ve/temporada.php

y este es el archivo que recibe los datos para guardarlos:

Código PHP:
Ver original
  1. foreach ($_POST['enero'] as $checkbox){
  2.    echo 'Enero:'. $checkbox."<br>";
  3. }
  4.  
  5. foreach ($_POST['febrero'] as $checkbox1){
  6.    echo $checkbox1."<br>";
  7. }
  8.  
  9. foreach ($_POST['marzo'] as $checkbox2){
  10.    echo $checkbox2."<br>";
  11. }
  12.  
  13. foreach ($_POST['abril'] as $checkbox3){
  14.    echo $checkbox3."<br>";
  15. }
  16.  
  17. foreach ($_POST['mayo'] as $checkbox4){
  18.    echo $checkbox4."<br>";
  19. }
  20.  
  21. foreach ($_POST['junio'] as $checkbox5){
  22.    echo $checkbox5."<br>";
  23. }
  24.  
  25. foreach ($_POST['julio'] as $checkbox6){
  26.    echo $checkbox6."<br>";
  27. }
  28.  
  29. foreach ($_POST['agosto'] as $checkbox7){
  30.    echo $checkbox7."<br>";
  31. }
  32.  
  33. foreach ($_POST['septiembre'] as $checkbox8){
  34.    echo $checkbox8."<br>";
  35. }
  36.  
  37. foreach ($_POST['octubre'] as $checkbox9){
  38.    echo $checkbox9."<br>";
  39. }
  40.  
  41. foreach ($_POST['noviembre'] as $checkbox10){
  42.    echo $checkbox10."<br>";
  43. }
  44.  
  45. foreach ($_POST['diciembre'] as $checkbox11){
  46.    echo $checkbox11."<br>";
  47. }

como puedo hacer para que guarde todo esto en un solo foreach y no de error.

Gracias.
__________________
Caminando con el corazón partío
  #2 (permalink)  
Antiguo 25/07/2012, 20:29
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Guardar varios arrays de checkbox

Código PHP:


if (isset($_POST['enero'])){
foreach (
$_POST['enero'] as $checkbox){
   echo 
'Enero:'$checkbox."<br>";
}

haciendo eso en todos no tendria que dar error. porque solo recorreria el array si existe.

probalo
  #3 (permalink)  
Antiguo 25/07/2012, 20:34
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Gracias diegomel asi manejo el error.

Ahora lo que no se es que si lo hago asi por cada array al momento de hacer INSERT, se guardan completos en la Bd o hay que hacer un foreach general para todos???
__________________
Caminando con el corazón partío
  #4 (permalink)  
Antiguo 25/07/2012, 21:25
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: Guardar varios arrays de checkbox

ahi en ves del echo tendrias que poner el INSERT e insertaria todos los del array enero por ej .
quizas podrias pensar alguna funcion que vaya insertando si existe o no el post , sino vas a tener que hacer un insert por cada mes .
  #5 (permalink)  
Antiguo 25/07/2012, 22:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar varios arrays de checkbox

Porqué no usar un array?

Código PHP:
Ver original
  1. $meses = array('enero', 'febrero', /* ... */ 'diciembre');
  2. foreach($meses as $mes) {
  3.     if(isset($_POST[$mes])) {
  4.           foreach($_POST[$mes] as $checkbox) {
  5.                // Aquí haces lo que necesites con cada checkbox
  6.           }
  7.     }
  8. }
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 26/07/2012, 23:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Muchas Gracias Triby y diegomel.
__________________
Caminando con el corazón partío
  #7 (permalink)  
Antiguo 30/07/2012, 19:08
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Hola, no se que pasó me enrede. Lo puse así:

Código PHP:
Ver original
  1. $id_posada = '8';
  2. $meses = array($_POST['enero'], $_POST['febrero'], $_POST['marzo'], $_POST['abril'], $_POST['mayo'], $_POST['junio'],
  3. $_POST['julio'], $_POST['agosto'], $_POST['septiembre'], $_POST['octubre'], $_POST['noviembre'], $_POST['diciembre']);
  4.  
  5.  
  6. //var_dump($meses);
  7. foreach($meses as $mes) {
  8.     if(isset($_POST[$mes])) {
  9.           foreach($_POST[$mes] as $checkbox) {
  10.                // Aquí haces lo que necesites con cada checkbox
  11.                $query = "INSERT INTO detalle_temp_alta (id_posada, fecha_temp_alta) " .
  12.                 "VALUES ('$id_posada', '$checkbox')";
  13.                 mysql_query($query) or die(mysql_error());
  14.  
  15.           }
  16.     }
  17. }

Y me da este error:

Warning: Illegal offset type in isset or empty in C:\AppServ\www\phpMyAdmin\ ... on line 9.

Se que estoy haciendo el insert mal pero no se como va.
__________________
Caminando con el corazón partío
  #8 (permalink)  
Antiguo 30/07/2012, 19:18
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

Eh, nop, el array meses debe tener los nombres de los meses, no los index del array POST, para que se entienda mejor:

Código PHP:
Ver original
  1. //tuyo (MAL)
  2. $meses = array($_POST['enero'],$_POST['febrero']);
  3.  
  4. //el correcto
  5. $meses = array('enero','febrero'); // y así con los demás meses
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #9 (permalink)  
Antiguo 30/07/2012, 19:32
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Gracias Nemutagk. SI funcionó asi.
__________________
Caminando con el corazón partío
  #10 (permalink)  
Antiguo 30/07/2012, 20:00
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Guardar varios arrays de checkbox

Estimados, yo he venido dandole vueltas a algo similar... tengo una tabla dinamica que genera un checkbox por cada registro de la base de datos...

Mi problema se presenta al momento de guardar, solo me guarda uno de los seleccionados, no los otros... aca les dejo el codigo a ver si se puede hacer algo, ya que en codigo no me manejo mucho, y todo esta hecho en dreamweaver... muchas gracias por su ayuda!!!!

Código PHP:
<?php require_once('Connections/formulario.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE falla_cocina SET opcion=%s WHERE id1=%s",
                       
GetSQLValueString($_POST['idcat[]'], "text"),
                       
GetSQLValueString($_POST['idcat[]'], "int"));

  
mysql_select_db($database_formulario$formulario);
  
$Result1 mysql_query($updateSQL$formulario) or die(mysql_error());
}

mysql_select_db($database_formulario$formulario);
$query_Recordset1 "SELECT * FROM falla_cocina";
$Recordset1 mysql_query($query_Recordset1$formulario) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
<!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=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<?
$rows
=mysql_query("select * from falla_calefon") or die(mysql_error());
?>
<form action="<?php echo $editFormAction?>" name="form1" id="form1" method="POST">
    <table>
        <tr>
            <th>
                ID
            </th>
            <th>
                Falla
            </th>
        </tr>
       <?
       
while($row=mysql_fetch_array($rows)){
       
?>
        <tr>
            <td><?php echo $row['id']?><input type="checkbox" name="idcat[]" id="idcat" value="<?php echo $row['id'];?>" /></td>
            <td><?php echo $row['id']?></td>
        </tr>
        <?php 
       
}
        
?>
        <tr>
            <td colspan="2">
                <input type="submit" value="Modificar" />
            </td>
        </tr>
     </table>
    <input type="hidden" name="MM_update" value="form1" />
</form>
</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
  #11 (permalink)  
Antiguo 30/07/2012, 20:53
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

Tu problema es como estas intentando obtener los valores de POST, recuerda que al agregar corchetes [] al nombre del input estos se convierten en un array, pero no se recuperan de la misma forma, en fin, supongo que Dreamweaver no detecta de manera automatica los input array, la manera correcta de obtener los datos seria la siguiente...

Código PHP:
Ver original
  1. //de forma manual
  2. $_POST['idcat'][0] //seria el primer campo
  3. $_POST['idcat'][1] //seria el segundo y así con los demás...
  4.  
  5. //de forma automatica...
  6. foreach($_POST['idcat'] as $item) {
  7.      echo $item;
  8. }
  9.  
  10. //en tu caso...
  11.   $updateSQL = sprintf("UPDATE falla_cocina SET opcion=%s WHERE id1=%s",
  12.                        GetSQLValueString($_POST['idcat'][0], "text"),
  13.                        GetSQLValueString($_POST['idcat'][1], "int"));
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #12 (permalink)  
Antiguo 31/07/2012, 10:33
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Guardar varios arrays de checkbox

Muchas gracias por tu respuesta

parece que algo voy entendiendo, pero como soy basicamente nula en codigo, me cuesta bastante... MUCHO...

entonces tengo que realizar los siguientes cambios:

original
Código PHP:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE falla_cocina SET opcion=%s WHERE id1=%s",
                       
GetSQLValueString($_POST['idcat[]'], "text"),
                       
GetSQLValueString($_POST['idcat[]'], "int")); 
modificado
Código PHP:
if ((foreach($_POST['idcat'] as $item)) {
     echo 
$item;
}

  
$updateSQL sprintf("UPDATE falla_cocina SET opcion=%s WHERE id1=%s",
                       
GetSQLValueString($_POST['idcat'][0], "text"),
                       
GetSQLValueString($_POST['idcat'][1], "int")); 
hay algo que no me calza...
  #13 (permalink)  
Antiguo 31/07/2012, 10:52
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

a ver, será mejor que abras un tema nuevo, ya que no es lo mismo, tu problema es diferente, ahora, no has definido realmente cual es tu problema, dices:

Cita:
Mi problema se presenta al momento de guardar, solo me guarda uno de los seleccionados, no los otros
A que te refieres con los otros?, cuantos registros pretendes guardar?, en tu sentencia SQL solo guardas 2 items, no mas, así tengas 20 solo se guardarán los 2 primeros, si deseas guardar los demás tendrás que recorrer el array...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #14 (permalink)  
Antiguo 31/07/2012, 11:04
 
Fecha de Ingreso: junio-2012
Ubicación: En Chile :D
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Guardar varios arrays de checkbox

Cita:
Iniciado por Nemutagk Ver Mensaje
a ver, será mejor que abras un tema nuevo, ya que no es lo mismo, tu problema es diferente, ahora, no has definido realmente cual es tu problema, dices:



A que te refieres con los otros?, cuantos registros pretendes guardar?, en tu sentencia SQL solo guardas 2 items, no mas, así tengas 20 solo se guardarán los 2 primeros, si deseas guardar los demás tendrás que recorrer el array...
vale, hare un nuevo tema....
  #15 (permalink)  
Antiguo 01/08/2012, 17:08
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Hola ahora tengo otro problema con algo que debo agregar al código. Mi código quedó asi:

Código PHP:
Ver original
  1. $id_posada = $_POST['id_posada'];
  2.  
  3. $meses = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');
  4.  
  5. foreach($meses as $mes) {
  6.     if(isset($_POST[$mes])) {
  7.           foreach($_POST[$mes] as $checkbox) {
  8.                // Aquí haces lo que necesites con cada checkbox
  9.                $query = "INSERT INTO detalle_temp_alta (id_posada, fecha_temp_alta) " .
  10.                 "VALUES ('$id_posada', '$checkbox')";
  11.                 mysql_query($query) or die(mysql_error());
  12.  
  13.           }
  14.     }
  15. }

ahora quisiera validar que si ya existen los datos para ese id_posada, se haga un update (por si el usuario quiere seleccionar fechas en otro momento) y que si no existen haga el insert.

El problema es que como es un arreglo de checkbox no se como plantearlo.


????
__________________
Caminando con el corazón partío
  #16 (permalink)  
Antiguo 01/08/2012, 18:11
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

Sencillo...

Código PHP:
Ver original
  1. $id_posada = $_POST['id_posada'];
  2.  
  3. $meses = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');
  4.  
  5. foreach($meses as $mes) {
  6.     if(isset($_POST[$mes])) {
  7.           foreach($_POST[$mes] as $checkbox) {
  8.                //le decimos a MySQL que cuente todos los registros que id_posada sea igual al valor de $checkbox
  9.                $query1= mysql_query('SELECT COUNT(*) FROM detalle_temp_alta WHERE id_posada = "'.$id_posada.'"') or die(mysql_error());
  10.                //verificamos cuantos registros retorno MySQL
  11.                if (mysql_result($query1,0) == 0) {
  12.                     //Si es 0, quiere decir que no hay registro, entonces insertamos
  13.                     // Aquí haces lo que necesites con cada checkbox
  14.                     $query = "INSERT INTO detalle_temp_alta (id_posada, fecha_temp_alta) " .
  15.                      "VALUES ('$id_posada', '$checkbox')";
  16.                }else {
  17.                     //si es diferente actualizamos...
  18.                     $query = 'UPDATE detalle_temp_alta SET fecha_temp_alta = "'.$checkbox.'" WHERE id_posada = "'.$id_posada.'"';
  19.                }
  20.                mysql_query($query) or die(mysql_error());
  21.           }
  22.     }
  23. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #17 (permalink)  
Antiguo 01/08/2012, 18:42
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Gracias Nemutagk, pero esto servirá para evitar que me repita los valores que ya guarde incialmente.

Por ejemplo si ya guardé 01-01, le hará update o volverá a crear otro 01-01???
__________________
Caminando con el corazón partío
  #18 (permalink)  
Antiguo 01/08/2012, 18:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Guardar varios arrays de checkbox

Si tienes índices con id de posada y fecha, entonces podrías usar REPLACE en lugar de INSERT o UPDATE: http://dev.mysql.com/doc/refman/5.0/es/replace.html
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 01/08/2012, 20:41
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

Cita:
Iniciado por kimmy Ver Mensaje
Gracias Nemutagk, pero esto servirá para evitar que me repita los valores que ya guarde incialmente.

Por ejemplo si ya guardé 01-01, le hará update o volverá a crear otro 01-01???
o.O tal cual dice los comentarios que agregue al código, primero verificamos si los datos ya existen (si ya existe un registro con el id_posada), si existe se actualiza (update), si no existe se inserta un registro nuevo (insert), te invito a que leas los comentarios del script que publique >.<

Nota: para que sea mas facil entender, en tu ejemplo si ya existe el registo 01,a, al tratar de insertar 01,b actualiza la letra "a" a "b", quedando 01,b
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #20 (permalink)  
Antiguo 02/08/2012, 07:07
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Mil Gracias Nemutagk ya entendi y funciona. Gracias Triby estuve leyendo lo de Replace, no lo conocía.

Ahora tengo un código en el que debo modificar lo que guardé pero me repite el ultimo registro que introduzco. Este es mi código:

Código PHP:
Ver original
  1. $id_posada = $_POST['id_posada'];
  2. $fecha_temp_alta = $_POST['fecha_temp_alta'];
  3.  
  4. $numRows = count($fecha_temp_alta);
  5.  
  6.     for($i=0; $i<$numRows; $i++) {
  7.         /*echo $fecha_temp_alta[$i];*/
  8.         $query = "UPDATE detalle_temp_alta SET fecha_temp_alta='".$fecha_temp_alta[$i]."' WHERE id_posada='".$id_posada."'";
  9.         $result=mysql_query($query);
  10.     }

cuando verifico con echo $fecha_temp_alta[$i]; los datos vienen bien pero no se que es lo que pasa que cuando hago el update me repite en todas las filas de la tabla mysql, el último registro.

Por qué hace eso?
__________________
Caminando con el corazón partío
  #21 (permalink)  
Antiguo 02/08/2012, 07:20
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

lo mejor seria que hagas un:

Código PHP:
Ver original
  1. echo '<pre>';
  2. var_dump($_POST['fecha_temp_alta']);
  3. echo '</pre>';

Para ver bien los items que se guardaron en el array $_POST, y comparar los items, me es difícil pensar que se dupliquen items si no fueron duplicados desde el formulario =/
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #22 (permalink)  
Antiguo 02/08/2012, 07:26
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Hola, Nemutagk al hacer el var_dump me arroja lo siguiente:

array(2) {
[0]=>
string(1) "4"
[1]=>
string(1) "7"
}
__________________
Caminando con el corazón partío
  #23 (permalink)  
Antiguo 02/08/2012, 07:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Guardar varios arrays de checkbox

Bueno, revisando mas de cerca tu SQL, es obvio que se va a actualizar todos los registros con el ultimo item, y no es que se dupliquen, el problema es como esta generado el SQL, basicamente tu SQL dice:

Actualizar todos los registros de detalle_temp_alta con el id_posada = $id_posada

Que quiere decir esto? bueno pues que todos los que tengan id_posada por ejemplo 1, todos esos se van a actualizar primero a 4 y luego de nuevo actualizarás todos a 7, es por eso que cuando vez de nuevo los registros parece que de duplican los items del array $_POST['fecha_temp_alta'], lo que debes hacer es o hacer un where al id de cada item (el cual debe ser unico):

Código PHP:
Ver original
  1. //algo así, no se como este generada tu tabla detalle_temp_alta
  2. $sql = "UPDATE detalle_temp_alta SET fecha_temp_alta='".$fecha_temp_alta[$i]."' WHERE id ='".$id_registro."'";

o buscar la forma de diferenciar cada registro de los demás, ya que como lo estas haciendo si tienes 5 registros con el id_posada = 1 los 5 registros quedarán con fecha_temp_alta = 7---
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #24 (permalink)  
Antiguo 02/08/2012, 07:39
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Guardar varios arrays de checkbox

Que buena explicación, yo no veía el porque. Lo que se me ocurre es utilizar el id_temporada (que es único para cada registro), pero no se como meterlo en el for. Es que siempre me enredo al utilizar estos ciclos.

Voy a intentar a ver si me sale.

Gracias.
__________________
Caminando con el corazón partío

Etiquetas: arrays, checkbox, formulario, mysql, tabla
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 15:41.