Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/12/2007, 02:26
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Modificar un campo de la base de datos

Siempre que un script acepte variables hay que comprobar que sean correctas. En el caso de que el origen sea un formulario (como es tu caso) puedes validarlos por medio de javascript antes de enviar el formulario, o con PHP después.

Con validar me refiero a comprobar que los campos tenga valores válidos. Si tienes un campo en la base de datos númerico y en el formulario se escriben datos no númericos, al hacer la consulta te puede devolver error. O si el campo está en blancl (como es en tu caso). Esto son sólo un par de ejemplos, también se podría aprovechar para explotar alguna vulnerabilidad (inyectar código SQL, etc...)


Aunque sean muchos campos deberías validarlos todos y comprobar que contienen valores válidos para el tipo de datos que son.

Como he comentado, esto lo puedes hacer antes o después de enviar el formulario. Si es antes, lo harías a través de javascript, con una función que se ejecute cuando le das al botón enviar (esto es sólo un ejemplo, habría mil maneras, como comprobarlo mientras se va escribiendo).

Si decides hacerlo todo mediante PHP, la comprobación la realizacías una vez que has accedido por medio de POST.

Después de validar los datos tendrás que construir la sentencia SQL (que es lo que realmente te interesaba a ti). Entiendo que quieres modificar sólo los datos que se hayan escrito en el formulario. Para ello puedes comprobarías que esas variables no estén en blanco. Puedes tener en una variable la sentencia SQL e ir completandola mientras vas comprobando los datos.

Código PHP:

$query 
"UPDATE table SET "
Luego compruebas, uno por uno, que el campo no esté en blanco, y si no lo está:

Código PHP:
$query .= "campo_que_sea='".$_POST['campo']."' "
Y después de comprobar todos los campos:

Código PHP:

$query 
.= "WHERE table.id=".$_POST['id']; 

Ten cuidado con los espacios en blanco.

De esta forma construyes la consulta sólo con los campos que no estén en blanco.

Supongo que habrá más maneras de hacerlo...