Foros del Web » Programando para Internet » PHP »

mostrar registros que dependan de dos condiciones

Estas en el tema de mostrar registros que dependan de dos condiciones en el foro de PHP en Foros del Web. hola gentes, aqui les traigo otra de las mias tengo una tabla donde guardo las entradas (noticias) de mi sitio, con un campo estado (0=no ...
  #1 (permalink)  
Antiguo 16/10/2007, 10:09
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
mostrar registros que dependan de dos condiciones

hola gentes, aqui les traigo otra de las mias
tengo una tabla donde guardo las entradas (noticias) de mi sitio, con un campo estado (0=no publicado, 1=publicado), todo bien.
lo que quiero lograr es una especie de paginado, que ya me funciona, pero si en algun caso una entrada tiene estado 0, es donde me pierdo, algo de codigo:
Código PHP:
<?php
// recogemos los valores a mostrar
    
$siguiente =  $row_entrada['entrada_ID'] + 1;
    
$anterior $row_entrada['entrada_ID'] - 1;

    
// las consultas
    
$entrada_siguiente "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID LIKE '$siguiente'";
    
$query_siguiente mysql_query($entrada_siguiente$db_link) or die (mysql_error());
    
$siguienteID mysql_fetch_assoc($query_siguiente);
    
    
$entrada_anterior "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID LIKE '$anterior'";
    
$query_anterior mysql_query($entrada_anterior$db_link) or die (mysql_error());
    
$anteriorID mysql_fetch_assoc($query_anterior);

// mostramos los resultados
    
if(!empty($siguienteID['entrada_ID']) && ($siguienteID['estado'] == 1)) {
            echo 
"<strong>Entrada siguiente &gt;&gt;</strong> <a href='?mod=entrada&amp;entrada_ID=$siguienteID[entrada_ID]'>$siguienteID[titulo]</a>";
        }
        
        if(!empty(
$anteriorID['entrada_ID']) && ($anteriorID['estado'] == 1)){
            echo 
"<a href='?mod=entrada&amp;entrada_ID=$anteriorID[entrada_ID]'>$anteriorID[titulo]</a> <strong>&lt;&lt; Entrada anterior</strong>";
        }
?>
donde me pierdo es, como hacer, para que cuando una entrada que existe pero tiene estado 0, me busque la siguiente entrada que tiene ambas condiciones, que existe y que tiene estado 1?

espero como siempre contar con la ayuda de ustedes

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #2 (permalink)  
Antiguo 16/10/2007, 12:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: mostrar registros que dependan de dos condiciones

Tienes varias formas... Aquí te dejo dos:

UNO: Cambiar tu consulta:

Código PHP:
// recogemos los valores a mostrar
$entradaid =  $row_entrada['entrada_ID'];
 
// las consultas
$entrada_siguiente "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID > '$entradaid' AND estado = 1 SORT BY entrada_ID ASC LIMIT 0,1";
$query_siguiente mysql_query($entrada_siguiente$db_link) or die (mysql_error());
$siguienteID mysql_fetch_assoc($query_siguiente);
 
$entrada_anterior "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID < '$entradaid' AND estado = 1 SORT BY entrada_ID DESC LIMIT 0,1";
$query_anterior mysql_query($entrada_anterior$db_link) or die (mysql_error());
$anteriorID mysql_fetch_assoc($query_anterior); 
DOS: Usa do...while:

Código PHP:
// recogemos los valores a mostrar
$entradaid =  $row_entrada['entrada_ID'];
 
// las consultas
 
$i $entradaid;
do{
    
$i++;
    
$entrada_siguiente "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID = $i";
    
$query_siguiente mysql_query($entrada_siguiente$db_link) or die (mysql_error());
    
$siguienteID mysql_fetch_assoc($query_siguiente);
} while(
$siguienteID['estado'] !== 1);
 
$i $entradaid;
do{
    
$i--;
    
$entrada_anterior "SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID = $i";
    
$query_anterior mysql_query($entrada_anterior$db_link) or die (mysql_error());
    
$anteriorID mysql_fetch_assoc($query_anterior);
} while(
$anteriorID['estado'] !== 1); 
Cuál te recomiendo??? obviamente la primera. Tu servidor te lo agradecerá

Un saludo,
  #3 (permalink)  
Antiguo 18/10/2007, 06:53
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: mostrar registros que dependan de dos condiciones

hi man, te cuento que estube mirando,pero nada, use la primera de las opciones que me das, a mi tambien me parece mejor, pero me da un error de sintaxis:
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SORT BY entrada_ID ASC LIMIT 0,1' at line 1
y busque, pero no di pien con bola con el SORT

gracias mil de todos modos , seguiremos informando
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 18/10/2007, 07:36
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: mostrar registros que dependan de dos condiciones

Que tal rogertm, cambia el Sort por Order, eso seria todo. Espero te sirva... Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #5 (permalink)  
Antiguo 18/10/2007, 07:55
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: mostrar registros que dependan de dos condiciones

Cita:
Iniciado por jmqc Ver Mensaje
Que tal rogertm, cambia el Sort por Order, eso seria todo. Espero te sirva... Saludos
YESSSSSSSSS gracias jmqc y gracias okram
nos vemos en el entronque

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 18/10/2007, 08:00
GPS
 
Fecha de Ingreso: diciembre-2003
Ubicación: Montevideo, Uruguay
Mensajes: 110
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: mostrar registros que dependan de dos condiciones

Proba mas simple solo agregando la condición de que esté publicado

Código:
SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID LIKE '$siguiente' AND estado = 1
Saludos!
  #7 (permalink)  
Antiguo 18/10/2007, 15:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: mostrar registros que dependan de dos condiciones

Cita:
Iniciado por GPS Ver Mensaje
Proba mas simple solo agregando la condición de que esté publicado

Código:
SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID LIKE '$siguiente' AND estado = 1
Saludos!
NO es posible hacerlod e esa manera. Si el id actual es 10, el anterior tendria que ser 9. Imagina que el id 9 tenga estado = 0, entonces la consulta no devolverá ningun resultado, cuando lo que se espera es obtener el id 8...

Un saludo,
  #8 (permalink)  
Antiguo 19/10/2007, 06:28
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: mostrar registros que dependan de dos condiciones

buenos dias por la mañana, y bueno, al final lo remate asi:
Código PHP:
<?php
$entradaid 
=  $row_entrada['entrada_ID'];
 
$entrada_siguiente mysql_query("SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID > '$entradaid' AND estado = 1 ORDER BY entrada_ID ASC LIMIT 0,1"$db_link) or die (mysql_error());
 
$entrada_anterior mysql_query("SELECT entrada_ID, estado, titulo FROM entradas WHERE entrada_ID < '$entradaid' AND estado = 1 ORDER BY entrada_ID DESC LIMIT 0,1"$db_link) or die (mysql_error()); 

while(
$siguienteID mysql_fetch_assoc($entrada_siguiente)){
    echo 
"<strong>Entrada siguiente &gt;&gt;</strong> <a href='?mod=entrada&amp;entrada_ID=$siguienteID[entrada_ID]'>$siguienteID[titulo]</a>";
}

while(
$anteriorID mysql_fetch_assoc($entrada_anterior)){
    echo 
"<a href='?mod=entrada&amp;entrada_ID=$anteriorID[entrada_ID]'>$anteriorID[titulo]</a> <strong>&lt;&lt; Entrada anterior</strong>";
}
?>
le hice el while{} por que si no, en la primera y la ultima entrada me mostraba los cartelitos de entrada siguiente y entrada anterior respectivamente

gracias nuevamente y saludos a todos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #9 (permalink)  
Antiguo 19/10/2007, 20:25
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: mostrar registros que dependan de dos condiciones

Cita:
Iniciado por rogertm Ver Mensaje
[...]
le hice el while{} por que si no, en la primera y la ultima entrada me mostraba los cartelitos de entrada siguiente y entrada anterior respectivamente
[...]
No es necesario crear un bucle con while, pues únicamente se ejecutará el código contenido en él una sóla vez. Puedes usar un if():

Código PHP:
if($siguienteID mysql_fetch_assoc($entrada_siguiente))
    echo 
"<strong>Entrada siguiente &gt;&gt;</strong> <a href='?mod=entrada&amp;entrada_ID=$siguienteID[entrada_ID]'>$siguienteID[titulo]</a>";
 
if(
$anteriorID mysql_fetch_assoc($entrada_anterior))
    echo 
"<a href='?mod=entrada&amp;entrada_ID=$anteriorID[entrada_ID]'>$anteriorID[titulo]</a> <strong>&lt;&lt; Entrada anterior</strong>"
Tu servidor te lo agradecerá

Un saludo,
  #10 (permalink)  
Antiguo 22/10/2007, 06:21
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: mostrar registros que dependan de dos condiciones

OKa...! copio y pego

saludos y gracias mil
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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 16:03.