Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/11/2008, 19:51
AeroCross
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema con GET y Tipos de Datos... Desesperante.

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&aacute;gen eliminada satisfactoriamente.</p>";
}
if (isset(
$_GET[success]) and $_GET[success] === FALSE)
{
    
$deleted FALSE;
    
$errorMsg "<p class=\"center\">No se pudo eliminar la im&aacute;gen.</p>";
}
if (isset(
$_GET[exists]) and $_GET[exists] === FALSE)
{
    
$deleted FALSE;
    
$errorMsg "<p class=\"center\">La im&aacute;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!