Tengo que eliminar registros desde php-access

Cerrado
Mamen - 15 jun 2010 a las 10:42
 Mamen - 12 jul 2010 a las 18:15
Hola, tengo que eliminar registros desde una página php a access y la verdad es que lo he probado todo y no me sale les agradeceria mucho que me hecharan una mano muchisimas gracias

tengo dos paginas:

eliminarPlantillas.php con este código:

<?

if ($idConexion=odbc_connect ("obdcPlantillas", " ", " ")){

//echo "Conectado correctamente <BR>";

$sql = "SELECT codigoPlantilla, nombrePlantilla FROM PLANTILLAS";

if($res=odbc_exec ($idConexion, $sql)){

//echo "La sentencia se ejecutó correctamente <br>";

while(odbc_fetch_row($res)){

$codigoPlantilla=odbc_result ($res, "codigoPlantilla");

$nombrePlantilla=odbc_result ($res, "nombrePlantilla");

echo "<tr><td><input type='checkbox' name='".$codigoPlantilla."' id='".$codigoPlantilla."'><B>".$codigoPlantilla." ".$nombrePlantilla."";

}

}

else{

echo "Error al ejecutar la sentencia SQL";

}

}

else{

echo "Error en la conexión con la base de datos";
}

?>

y eliminar.php que tiene este codigo:

<?



$idConexion=odbc_connect ("obdcPlantillas", " ", " ") or die ("No se pudo conectar con Plantillas");;

$sql= "SELECT codigoPlantilla FROM PLANTILLAS";

$rs= odbc_exec($idConexion, $sql);

//echo $rs;

$codigoPlantilla=$_POST['codigoPlantilla'];

if($_POST[$codigoPlantilla]=='on'){

while(odbc_fetch_row($rs)){

$sql="DELETE FROM PLANTILLAS WHERE codigoPlantilla=".$codigoPlantilla."";

echo $sql;

$res=odbc_exec($idConexion,$sql);

}

}

if (res==1){

echo "<script> alert('LA PLANTILLA SE HA ELIMINADO CORRECTAMENTE'); </script>";

}

else{
echo "<script> alert('LA PLANTILLA NO SE HA ELIMINADO CORRECTAMENTE'); </script>";

}

odbc_close_all();

?>

gracias por adelantado :D



2 respuestas

Por lo que veo, $codigoPlantilla recoge el valor de un checkbox, pero claro, el valor que tiene por lo visto es el que se asigna por defecto a un control checkbox, es decir:

if($_POST[$codigoPlantilla]=='on'){

En esta linea estas comprobando si el checkbox esta marcado, pero el ID del registro que quieres eliminar no esta disponible.
Dos opciones:

1. O bien al atributo value del checkbox le das el valor del ID de registro a borrar
2. O bien envias un campo tipo hidden con el valor del ID a borrar

En cualquiera de los 2 casos te funcionara, pero en ambos tendras que modificar tu codigo.

Si eliges el primer caso, en lugar de comprobar si el checkbox esta 'on', comprueba simplemente que el campo haya venido por POST, ya que los checkbox no marcados, no viajan por POST, si ha venido, recoge el valor para eliminar el registro.

En el segundo caso, simplemente añade un campo asi:

<input type="hidden" name="IdCodigoPlantilla" value="<?=$codigoPlantilla;?>" />

Entonces en tu segundo script, recoge el valor de $_POST["IdCodigoPlantilla"] y usa este para eliminar el registro.

Saludos
Marcos
1
muchisimas gracias Marcos vere si me sale.

El problema que se me presenta con este código es que a la página donde se envian los datos (eliminar.php) me envia la consulta tantas veces como checkbox tengo.

Por ejemplo si tengo 3 checkbox (pulsados o no) me envia 3 veces la consulta.

Creo que el fallo lo tengo en eliminarPlantillas.php por que de hay viene las consultas haber si lo resuelvo.

saludos Mamen
0
muchas gracias Markos, no se si podre solucionarlo pero lo intentare

cuando tengo ya abierto la pagina y pico sobre uno o mas lo unico que pasa es que me envia la consulta tantas veces como checkbox tenga picados me podrias explicar por que ocurre esto, me seria de mucha utilidad y la verdad es que te lo agradeceria muchisimo.

saludos!! y muchisimas gracias
0