Formulario para actualizar bd

Seguro que ya hechas en falta mi pregunta diaria... ;), estoy realizando la actualización de los pagos para ello he diseñado un formulario con una caja de texto donde ponga el o los id de las personas a dar por pagadas. Lo ejecuto en el servidor y no me da fallos pero tanto me actualiza el id que le pongo en la caja de texto! ¿Podrías mirarme el código y ver que tengo mal?
Mil gracias nuevamente. Saludos.
<HTML>
<body>
<FORM ACTION METHOD=post>
Número de inscrito a dar por pagado:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit NAME=OK VALUE="ACTUALIZAR"><BR>
</FORM></HTML>
<?php
if ($OK == "ACTUALIZAR")
{
// coneccion al servidor de bases de datos
//cambiar los parametros de conexion
$dbh=mysql_connect("mysql6.000webhost.com","a8340965_rutacab","canis lupus");
//selecciono la base de datos
mysql_select_db("a8340965_rutacab");
// preparando la instruccion sql
$q = "UPDATE datos set Pagado='SI' where id=".$CLAVE;
// ejecutando el query
mysql_query($q, $dbh);
// avisando
echo "REGISTRO EDITADO";
};
?>
</body>
</html>

1 Respuesta

Respuesta
1
Esta ya parece un poco más difícil de resolver, prueba a cambiar la query así:
$q = "UPDATE datos set Pagado='SI' where id=".mysql_real_escape_string($_POST['CLAVE']);
Recuerda añadir el control de errores (auquello de mysql_errno y mysql_error).
He modificado el código según me dijiste pero tampoco funciona, no da errores pero no actualiza según el id que le doy en la caja de texto... ahora lo tengo así:
<HTML>
<body>
<FORM ACTION METHOD=post>
Número de inscrito a dar por pagado:<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit NAME=OK VALUE="ACTUALIZAR"><BR>
</FORM></HTML>
<?php
if ($OK == "ACTUALIZAR")
{
// coneccion al servidor de bases de datos
//cambiar los parametros de conexion
$dbh=mysql_connect("mysql6.000webhost.com","a8340965_rutacab","canis lupus");
//selecciono la base de datos
mysql_select_db("a8340965_rutacab");
// preparando la instruccion sql
$q = "UPDATE datos set Pagado='1' where id=".mysql_real_escape_string($_POST['CLAVE']);
// ejecutando el query
mysql_query($q, $dbh);
// avisando
if (mysql_errno() != 0) {
  echo mysql_error();
}
else
{
echo "REGISTRO EDITADO";
}
};
?>
</body>
</html>
Ay!, que no vi otro fallo, donde dice:
if ($OK == "ACTUALIZAR")
prueba a poner
if ($_POST['OK'] == "ACTUALIZAR")
Si con eso no funciona necesitaría que me mandases una muestra de la base de datos: la estructura y al menos un dato de los que no te funcionan.
Pues no rula compañero... la estructura de la bd puedes verla en el siguiente enlace aquí aparecen todos los campos que utilizo:
http://dientesdeperro.comli.com/formulario/consulta_inscritos.php
El campo pagado: 1 sería pagado y 0 por defecto no pagado, la consulta anterior pone SI o NO en función de los valores anteriores.
Lo que quiero es que poniendo el ID en una caja de texto se actulize a 1 el valor de pagado y en la consulta anterior lógicamente salga SI.
Si necesitas algún dato más por favor dime y te paso lo que necesites.
Saludos
Pues lo único que se me ocurre es que el id sea un varchar, entonces habría que añadirle las comillas en el query, así:
echo "UPDATE datos set Pagado='1' where id='".mysql_real_escape_string($_POST['CLAVE'])."'";
¿Podrías ponerme en la web un archivo SQL con la estructura y el contenido de la tabla datos?
Otra idea más, prueba a cambiar la línea "echo "REGISTRO EDITADO";" por esto:
    if (mysql_affected_rows($dbh) == 0) {
        echo "No se encontró el registro o ya estaba pagado";
    }
    else {
        echo "REGISTRO EDITADO";
    }
Gracias por tu interés, de dejo en el siguiente enlace la estructura de la bd y los datos en sql
http://dientesdeperro.comli.com/formulario/bd.sql
Si necesitas algún dato más me dices.
Mil gracias.
Usando tu SQL también me funciona, he dejado el archivo php de edición de registro aquí:
http://consigna.uma.es/index.php?action=download&item=5be2e0f0-df7a-a4da-8d38-a69d5e2c99c9
Recuerda volver a poner los datos de tu servidor MySQL que va con los míos XD
¿Has mirado la tabla en phpmyadmin? Porque si aparecen dos campos como pagados, el 1 y el 9.
He visto que en las consultas a veces establecías Pagado='SI' y otras veces Pagado='1', revisa eso por si es una confusión.
Otra cosa que se me ocurre probar es que incluyas un echo con la consulta SQL que se realiza al marcar alguien como pagado y luego hagas esa consulta a mano en phpmyadmin.
Compañero, no puedo ni ver ni descargar el archivo mediante el enlace que me has dado, me pide usuario y contraseña y no puedo registrarme porque no soy de la Uni de Córdoba... si quieres me lo puedes mandar por e.mail a [email protected]
En cuanto lo tenga lo reviso y comparo con mi fichero y veo que estaba haciendo mal.
Gracias
Uuups, se me olvidó la contraseña: 12345
En teoría, con todo el rollo de la sindicación federada deberías poder loguearte con el usuario de la UCO.
De todas formas, te lo mando al mail, desde [email protected]
Ok, pues ya funciona! Al fin... ya te voy a dejar una temporadita tranquilo... je je
Un millón de gracias, yo soy asesor contable y fiscal, si necesitas algo no dudes en preguntar.
Un saludo pá Málaga!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas