Foros del Web » Programando para Internet » PHP »

Problema con GET y Tipos de Datos... Desesperante.

Estas en el tema de Problema con GET y Tipos de Datos... Desesperante. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/11/2008, 19:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
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!
  #2 (permalink)  
Antiguo 27/11/2008, 20:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

sabes como puedes ayudarte, configura el php.ini para que te marque los errores...

ya que precisamente no estas escribiendo correctamente... aunque lo parezca!

Recomendaciones:

http://www.forosdelweb.com/f18/forma...hp-ini-589310/

&

http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/11/2008, 20:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

¿Que escribo incorrectamente?
Y mi PHP marca los errores... está activado por default
  #4 (permalink)  
Antiguo 27/11/2008, 20:26
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

Pues interpreta los errores que te arroja no?? o muéstralos al menos

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 27/11/2008, 21:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

Cita:
Iniciado por Carxl Ver Mensaje
Pues interpreta los errores que te arroja no?? o muéstralos al menos

Saludos
No arroja ninguno o_O
Eso es lo mas preocupante o_o

Está en error_reporting = E_ALL y display_errors = on
  #6 (permalink)  
Antiguo 27/11/2008, 21:30
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

Por la URL no puedes pasar valores booleanos. Porque no usas simplemente "0" y "1", o valores textuales "true" y "false"?

  #7 (permalink)  
Antiguo 27/11/2008, 21:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

suena raro, porque al menos... para empezar, esta linea daría error con esa configuración que dices tener ...

Código PHP:
$img $_GET[img]; 
la verdad no entiendo!

Edito: como okram indica

la comparación === es estricta en los tipos ... tal ves sea mejor usar tan solo ==
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 27/11/2008, 21:50
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

¿Por que habría de dar error? Se que la comparación es estricta a tipos con ===, precisamente por eso la utilizé. No sabía que no podía pasar valores booleanos por la URL (Aunque si mal no recuerdo, al tratar de hacerlo me dan 0 o 1, lo cual me parece extraño, pues es precisamente lo que hace en el segundo conjunto de If (en $success).

Trato de ponerlos estrictamente integers o strings, para evitar el muestreo de errores por la URL introducidos por el usuario (para así entrenarme un poco mas), pero entonces lo que parece lógico no es. Por eso uso los var_dump.

Que debería hacer entonces? ¿En un caso así, debería usar integers solamente?
No entiendo este comportamiento tan extraño t_t..
  #9 (permalink)  
Antiguo 27/11/2008, 22:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con GET y Tipos de Datos... Desesperante.

Usar enteros, usar strings. Los valores que sacas de la URL por medio de GET siempre serán strings. Por lo tanto no puedes ni debes hacer comparaciones estrictas. Dale, basta usar 0 y 1, y para recibir y comparar usas el operador flexible ==

Saludos,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:00.