Buenas a todos. He estado debugeando un problema las últimas quizás 3 - 4hrs y no le encuentro la salida a esto. Quizás sea algo muy obvio o algo que no estoy viendo, pero me estoy desesperando. El problema es el siguiente:
Tengo un formulario (delete_img.php) que lleva información a process_delete.php para eliminar una entrada a la base de datos. Funciona, perfectamente. El chiste es que después de que se hace el proceso muestro el resultado en la misma página del formulario. Para hacerlo más gráficamente, tengo el siguiente código:
Código PHP:
<?php
include ("includes/connect.php");
$img = $_GET[img];
$sql_select = "SELECT * FROM images WHERE img = '$img'";
$sql_query = mysql_query($sql_select, $sql_connect);
$sql_result = mysql_num_rows($sql_query);
if ($sql_result === 0)
{
$exists = FALSE;
header ("Location: delete_img.php?exists=$exists");
}
else
{
$sql_delete = "DELETE FROM images WHERE img = '$img'";
$sql_query = mysql_query($sql_delete, $sql_connect);
if ($sql_query === FALSE)
{
$success = FALSE;
header ("Location: delete_img.php?success=$success");
}
else
{
$success = TRUE;
header ("Location: delete_img.php?success=$success");
}
}
?>
Ese es el archivo donde se procesa la información para borrar la data de la BD. Sencillo pero efectivo. El problema reside en lo siguiente.
Código PHP:
<?php
if (isset($_GET[success]) and $_GET[success] === TRUE)
{
$deleted = TRUE;
$deletedMsg = "<p class=\"center\">Imágen eliminada satisfactoriamente.</p>";
}
if (isset($_GET[success]) and $_GET[success] === FALSE)
{
$deleted = FALSE;
$errorMsg = "<p class=\"center\">No se pudo eliminar la imágen.</p>";
}
if (isset($_GET[exists]) and $_GET[exists] === FALSE)
{
$deleted = FALSE;
$errorMsg = "<p class=\"center\">La imágen no existe.</p>";
}
var_dump($_GET[success]);
var_dump($_GET[exists]);
// ...y aquí abajo tooooodo el código...
?>
Cuando termina de procesarse esa información, tengo un comportamiento extrañísimo.
Haciendo var_dump()'s, me muestra que el resultado de $succes es int(0). Cuando pasa a delete_img.php Pasa como string. Si lo convierto a booleano, pasa como false pero en ?exists no sale ningun resultado. Lo peor de todo es que solo pasa en con el if $sql_result... mas no en ningun otro lugar. Si no lo convierto, me sale como String pero sin valor. Si pongo un string de verdad, sale el string y todo funciona correctamente, y si lo pongo como entero (sin definir que es booleano) y pongo 0, no pasa nada, y aparece como string!
NO ENTIENDO!