Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/08/2011, 04:30
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Update 30 entradas simultaneas

Buenas, para empezar, te sobra un ; en la sentencia del if en el que añades el checked. No se pone ; al final de una estructura if, tu tienes esto:
Código PHP:
Ver original
  1. if($row['estado']=='1'){echo'checked="checked"';};

El último sobra. Esto pasa por no hacer el código bien formateado.

Por otro lado, creo que no podemos fiarnos del mensaje de error que te da, ya que no sabemos de donde están viniendo los errores:
Código PHP:
Ver original
  1. $result=mysql_query("select * from cursos order by id")or die("La base de datos no existe");
Código PHP:
Ver original
  1. mysql_query("UPDATE cursos SET estado='1' WHERE id='$i2'") or die($error);
Código PHP:
Ver original
  1. mysql_query("UPDATE cursos SET estado='0' WHERE id='$i2'") or die($error);

En la primera sentencia es muy optimista pensar que eso falla porque no existe la base de datos, puede fallar por mil cosas diferentes. En las otras dos, no sé de dónde viene $error, pero si está declarado antes de hacer las query, seguramente tampoco sea el correcto. Cambia estos mensajes por mysql_error() y tendremos un mensaje seguro de qué falla.

De todas formas, dudo mucho que esos sean los causantes del problema de tu aplicación. Es probable que lo que ocurra es que estés enviando un update a un id que no existe. En tu aplicación se puden eliminar cursos? Te lo digo porque estás utilizando una variable $i2 (que aumenta de uno en uno) para los ids de los cursos. Si tú no modificas la tabla, puede que funcione, pero si borras el registro 4, por ejemplo, la variable sigue pasando por 4. No es que sea muy correcto (ni seguro). Creo que la mejor solución sería la que sigue:
- En el name pones cursos[], así PHP lo pasará por POST como un array de valores. Luego recorres este array con un for o un foreach. Esto también te solventa que tu bucle while está hecho para 30 cursos, pero puedes aumentar la base de datos, por lo que dejaría de funcionar. Con el array te aseguras de que se recorran todos.
- En el value pones el id del curso, que lo tienes en $row['id']. A la hora de comprobar sólo tienes que comprobar que el value esté relleno.

Espero que te quede claro, si no, avisa. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?