Ver Mensaje Individual
  #12 (permalink)  
Antiguo 25/01/2013, 10:43
nedyer
 
Fecha de Ingreso: enero-2011
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Actualizar Múltiples Registros Php y Mysql

Si pero como te dije tienes un error en tu tabla, ya lo suponía al ver el código PHP ¿Donde esta la clave única de la tabla?, ¿Donde esta el id auto increment.?


tu tabla

Curso
Nombre
N1
N2
N3
Prom


esa tabla debería de quedar así

id
curso
nombre
n1
n2
n3
fecha_registro



Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `curso` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `curso` INT(2) NOT NULL,
  4.   `nombre` VARCHAR(30) NOT NULL,
  5.   `n1` INT(2) NOT NULL,
  6.   `n2` INT(2) NOT NULL,
  7.   `n3` INT(2) NOT NULL,
  8.   `fecha_registro` DATE NOT NULL,
  9.   PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


Tienes problemas con el foreach por que no tienes clave primaria en la tabla, ya te lo había dicho, si no tienes clave primaria no se va a ejecutar bien el foreach.




El foreach va actualizar cada registro donde esta la clave primaria

ejemplo

Por ejemplo si tuviera esto, se va a actualizar todos los campos del id 1 y del id 4 no tienes por que colocar 2 foreach con uno sobra, y si colocas 2 estaría mal. Acuérdate que le estas pasando un array al foreach ese es el id, el foreach va a recorrer todo el array según las diferentes claves que le estés pasando.

id | curso | nombre | n1 | n2 | n3

1 | 4 | hola | 15 | 10 | 12

4 | 6 | bye | 20 | 02 | 14


Código ejemplo

Código PHP:
Ver original
  1. foreach($_POST['id'] as $key =>$value) {
  2.  
  3. $updateSQL = sprintf("UPDATE edicion SET curso=%s, nombre=%s, n1=%s, n2=%s, n3=%s WHERE id=$value",
  4. GetSQLValueString($_POST['curso'][$key], "int"),
  5. GetSQLValueString($_POST['nombre'][$key], "text"),
  6. GetSQLValueString($_POST['n1'][$key], "int"),
  7. GetSQLValueString($_POST['n2'][$key], "int"),
  8. GetSQLValueString($_POST['n3'][$key], "int"),
  9.  
  10. mysql_select_db($database_cNotas, $cNotas);
  11. $Result1 = mysql_query($updateSQL, $cNotas) or die(mysql_error());
  12. }
  13.  
  14. }

Última edición por nedyer; 25/01/2013 a las 11:06