Foros del Web » Programando para Internet » PHP »

Cuando mi $id no existe en mi BD(Mysql te devuelve valor NULL)

Estas en el tema de Cuando mi $id no existe en mi BD(Mysql te devuelve valor NULL) en el foro de PHP en Foros del Web. Hola amigos, nuevamente agradeceros vuestro esfuerzo y tiempo Mi problema es el siguiente: He creado una simple aplicación de noticias con PHP y Mysql. La ...
  #1 (permalink)  
Antiguo 04/11/2005, 08:38
 
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Cuando mi $id no existe en mi BD(Mysql te devuelve valor NULL)

Hola amigos, nuevamente agradeceros vuestro esfuerzo y tiempo

Mi problema es el siguiente:
He creado una simple aplicación de noticias con PHP y Mysql.
La URL que devuelve el $_get la he aplicado la función explode para que sea mas indexable para Google,
Todo el script corre perfectamente, pero cuando mi variable $id sea pr ejemplo 6 y en mi base de datos solo tengo 4 registros(El 6 no existe, cierto)
me devuelve una página en blanco.

Investigando un poco(me he vuelto loco y por eso escribo aqui) si ejecutas ese query en mysql cuando no esiste esa informacion esta te devuelve el valor NULL a t2 los campos(porque no existen)

¿Alquien sabe que condición tendría que usar para en estos casos(no existe esa id en mi BD) para redireccionar a una pagina 404

He probado t2 estas condiciones y no me funcionan
Código PHP:
if(empty($id)){
 
//no existe ID
 
header("Location: 404.html");
}elseif(isset(
$id)){
 
//Si existe ese campo

Código PHP:
if(is_null($id)){
  
//Es NULL
  
header("Location: 404.html");
}else{
  
//Si existe ese campo

Nuevamente gracias con vuestras respuestas
  #2 (permalink)  
Antiguo 04/11/2005, 10:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Aporta más código ...

Supongo que como hablas de una consulta SQL que ejecutas .. lo que necesitarás validar es la situaciónd e que tu consulta SQL no te arroje ningún resultado (pero SI que se ejecutó correctamente) .. Eso lo solventas con el uso de mysql_num_rows() (si es que usas Mysql .. por qué tampoco lo especificas).

Código PHP:
$resultado=mysql_query($sql) or die (mysql_error());
if (
mysql_num_rows($resultado) > 0){
// haces lo que tengas que hacer
} else {
// No hay resultados .. haces lo que tengas que hacer .. 

PD: .. usa exit; despues de tus header("Location: ") por qué la idea de un "Location" (cabecera HTTP para redireccionar) es dejar la ejecución de ese script y llamar a otra página .. así que no te interesa para nada el resto de lo que el script pueda hacer o no .. no esperes a que PHP recorra todo el script .. aborta la ejecución del mismo en ese instante -> así se fuerza el envio de la "salida" (esa cabecera HTTP) directamente y sin más espera a tu cliente (navegador).
  #3 (permalink)  
Antiguo 04/11/2005, 16:46
 
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Gracias Cluster

Muchas gracias por tu respuesta y si perdona por no especificar y no soltar el código.

Voy a probar lo que me dices(muchas gracias de nuevo )

Este es mi código haber si me hechais una manita
Código PHP:
<?
//Función explode
$expl explode("/",$HTTP_SERVER_VARS["REQUEST_URI"]);
    
$id $expl[count($expl)-1];



require_once (
'../../funciones/colorear.php');
include(
'../../db.php');

  
$q mysql_query("SELECT * from $table WHERE id='$id'"
     or die(
"Ha habido un fallo en la conexión con la base de datos . En pronto se solucionará");
         while(
$r=mysql_fetch_array($q)){
             
$titulo $r["titulo"];
             
$noticia $r["noticia"];
             
$noticia highlight_php($noticia);
             
$autor $r["autor"];
             
$link "mailto:".$r["email"];
             
$date $r["date"];
             
$id $r["id"];
             
$contar $r["contar"]+1;
             
//Sumar 1 al contador
             
$update "UPDATE $table SET contar = $contar WHERE id='$id'";
             
$result mysql_query($update);
            
                
$url $r["url"];
                
                 
//Si está vacía la URL no te redirecciona(se supone que son mis noticias buenas)
                  
if(empty($url)) {
                    
//Insertar el titulo en html
                    
include('../../includes/titulo_html.php');
                     echo 
"<table width=\"100%\" cellspacing=\"2\"><tr>
                        <td><b>$titulo
                         </b> posted by <a href=\"$link\">$autor</a> on $date</td></tr>
                         <tr><td>$noticia</td></tr>
                          </table>Posteado el: $date"
;
                   
//Si existe URL Me redirecciona
                    
}elseif(isset($url)){
                      
header("Location: $url");
                      exit;
                    
//Si se pasa de listo al clickear
                    
}
                  }
mysql_close($cnx);
?>
Si veis algo rarito decidmelo pues soy novato en el php

Gracias de nuevo
  #4 (permalink)  
Antiguo 04/11/2005, 16:55
 
Fecha de Ingreso: octubre-2005
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Gracias Cluster esto funciona a la perfección, en serio, muchas gracias.

Eres mi Dios

JEJE de nuevo, gracias
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.
Tema Cerrado




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