Foros del Web » Programando para Internet » PHP »

Llenar array con id de la BD y comprobar si se repite

Estas en el tema de Llenar array con id de la BD y comprobar si se repite en el foro de PHP en Foros del Web. Hola amigos como estan, Vereis, estoy recorriendo un bucle que pinta los resultados de una consulta, la cosa es que estos resultados en ocasiones se ...
  #1 (permalink)  
Antiguo 11/07/2013, 14:25
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Llenar array con id de la BD y comprobar si se repite

Hola amigos como estan,

Vereis, estoy recorriendo un bucle que pinta los resultados de una consulta, la cosa es que estos resultados en ocasiones se repiten entonces ahora mismo tengo un control que funciona si solo encuentra un resultado, pero cuando hay por ejemplo 10 resultados no funciona puesto que solo almacena el ultimo id, este es el codigo:

Código PHP:
    while ($ultimo_fila mysql_fetch_array($resultado_fila)){

    if(
$ultimo_fila['id_direccion'] != $comprobacion){

    
$consulta_localidad "select p.id, p.descripcion, m.id, id_provincias, m.descripcion as localidad FROM provincias p Inner join municipios m On p.id = m.id_provincias where m.id = ".$ultimo_fila['id_municipios'];
    
    
$resultado_localidad mysql_query($consulta_localidad);  
    
$ultimo_localidad mysql_fetch_array($resultado_localidad);
    
        echo 
'<div style=" border-bottom:solid 1px #0094d6; border-top:solid 1px #a6d3e7; padding:20px 20px 20px 30px; background: -webkit-linear-gradient(#FFFFFF, #EFEFEF); background: -moz-linear-gradient(#FFFFFF, #EFEFEF); background: -o-linear-gradient(#FFFFFF, #EFEFEF); background: linear-gradient(#FFFFFF, #EFEFEF); ">';

        echo 
'<img src="logo_negocios/'.$ultimo_fila['id'].'/'.$ultimo_fila['logo'].'" style="max-width:150px;">';

        echo 
'<p style="font-size:14pt; line-height:10px; color:#00aef4;">'.utf8_encode($ultimo_fila['nombre_direccion']).'</p><span style="font-size:8pt; line-height:17pt; color:#000000;">'.utf8_encode($ultimo_fila['direccion']).'<br>'.$ultimo_fila['cp'].' '.utf8_encode($ultimo_localidad['localidad']).' - '.$ultimo_fila['telefono'].'<br></span>'.$ultimo_fila['email_direccion'].' - '.$ultimo_fila['web'];

        echo 
'</div>';
    
$comprobacion $ultimo_fila['id_direccion'];
    }
    } 
En donde
Código PHP:
    if($ultimo_fila['id_direccion'] != $comprobacion){ 
Es la comprobacion, habia pesando hacer con un array conforme va pintando guarde el id en un array y a la vuelta siguiente compruebe si esta pues no entra en el if, la cosa es que he intentado varias veces y no sale, a ver si pueden orientarme un poquito acerca de esto.

Por cierto un añadir un DISTINCT en la consulta no puede ser.

Un saludo !!
  #2 (permalink)  
Antiguo 11/07/2013, 15:02
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Llenar array con id de la BD y comprobar si se repite

Holas, franjgg.

Sólo debes modificar levemente tu código para que funcione como quieres:

Código PHP:
while ($ultimo_fila mysql_fetch_array($resultado_fila)){

    if(
$ultimo_fila['id_direccion'] != $comprobacion){

    
$consulta_localidad "select p.id, p.descripcion, m.id, id_provincias, m.descripcion as localidad FROM provincias p Inner join municipios m On p.id = m.id_provincias where m.id = ".$ultimo_fila['id_municipios'];
    
    
$resultado_localidad mysql_query($consulta_localidad);  
    
$ultimo_localidad mysql_fetch_array($resultado_localidad);
    
        echo 
'<div style=" border-bottom:solid 1px #0094d6; border-top:solid 1px #a6d3e7; padding:20px 20px 20px 30px; background: -webkit-linear-gradient(#FFFFFF, #EFEFEF); background: -moz-linear-gradient(#FFFFFF, #EFEFEF); background: -o-linear-gradient(#FFFFFF, #EFEFEF); background: linear-gradient(#FFFFFF, #EFEFEF); ">';

        echo 
'<img src="logo_negocios/'.$ultimo_fila['id'].'/'.$ultimo_fila['logo'].'" style="max-width:150px;">';

        echo 
'<p style="font-size:14pt; line-height:10px; color:#00aef4;">'.utf8_encode($ultimo_fila['nombre_direccion']).'</p><span style="font-size:8pt; line-height:17pt; color:#000000;">'.utf8_encode($ultimo_fila['direccion']).'<br>'.$ultimo_fila['cp'].' '.utf8_encode($ultimo_localidad['localidad']).' - '.$ultimo_fila['telefono'].'<br></span>'.$ultimo_fila['email_direccion'].' - '.$ultimo_fila['web'];

        echo 
'</div>';
      }
    
// esto debe ir fuera del IF, ya que siempre tiene que guardar el último ID
    
$comprobacion $ultimo_fila['id_direccion'];
    } 
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 11/07/2013, 15:18
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Llenar array con id de la BD y comprobar si se repite

usa un GROUP BY en la consulta
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 11/07/2013, 15:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Llenar array con id de la BD y comprobar si se repite

Hola amigos, les comento,

Esta consulta esta asu vez dentro de un bucle de hay que se repitan los resultados, entonces lo que necesito esque si estos resultados de una vuelta del bucle se repiten en la segunda vuelta o tercera no los pinte.

Se podria hacer almacenando los id's en un array y comprobar despues si son los mismos??

Un saludo y gracias amigos!!
  #5 (permalink)  
Antiguo 11/07/2013, 16:37
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Llenar array con id de la BD y comprobar si se repite

Sí, de hecho puedes hacerlo así, sería más fácil luego ir preguntando con un simple in_array() en vez de pisando una misma variable con el último valor.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #6 (permalink)  
Antiguo 11/07/2013, 17:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Llenar array con id de la BD y comprobar si se repite

Hola quinqui que tal,

Ahora mismo y con tu ayuda lo tengo asi:

Código PHP:
Ver original
  1. while ($ultimo_fila = mysql_fetch_array($resultado_fila)){
  2.  
  3.  
  4.  
  5. $os = $ultimo_fila[0] ;
  6. if (!in_array($ultimo_fila['id_direccion'], $os)) {
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.     $consulta_localidad = "select p.id, p.descripcion, m.id, id_provincias, m.descripcion as localidad FROM provincias p Inner join municipios m On p.id = m.id_provincias where m.id = ".$ultimo_fila['id_municipios'];
  15.    
  16.     $resultado_localidad = mysql_query($consulta_localidad);  
  17.     $ultimo_localidad = mysql_fetch_array($resultado_localidad);
  18.    
  19.         echo '<div style=" border-bottom:solid 1px #0094d6; border-top:solid 1px #a6d3e7; padding:20px 20px 20px 30px; background: -webkit-linear-gradient(#FFFFFF, #EFEFEF); background: -moz-linear-gradient(#FFFFFF, #EFEFEF); background: -o-linear-gradient(#FFFFFF, #EFEFEF); background: linear-gradient(#FFFFFF, #EFEFEF); ">';
  20.  
  21.         echo '<img src="logo_negocios/'.$ultimo_fila['id'].'/'.$ultimo_fila['logo'].'" style="max-width:150px;">';
  22.  
  23.         echo '<p style="font-size:14pt; line-height:10px; color:#00aef4;">'.utf8_encode($ultimo_fila['nombre_direccion']).'</p><span style="font-size:8pt; line-height:17pt; color:#000000;">'.utf8_encode($ultimo_fila['direccion']).'<br>'.$ultimo_fila['cp'].' '.utf8_encode($ultimo_localidad['localidad']).' - '.$ultimo_fila['telefono'].'<br></span>'.$ultimo_fila['email_direccion'].' - '.$ultimo_fila['web'];
  24.  
  25.         echo '</div>';
  26.    
  27.     }
  28.     }

La cosa es que sigue sin funcionar, estoy usando bien el in_array() ?

Un saludo amigo y muchas gracias por tu atencion

Última edición por franjgg; 11/07/2013 a las 17:10
  #7 (permalink)  
Antiguo 11/07/2013, 17:44
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Llenar array con id de la BD y comprobar si se repite

Se me figura que aquí el problema es mas de implementación que de código.

Preguntas:

1.- Cuantos queries en realidad debes de hacer ?
2.- Tu query que haces, que es lo que tiene que devolver (pon un ejemplo).

También por lo que veo estas haciendo un muy buen spaghetti con tu código, los estilos que tienes inline mejor ponlos en una clase y nada mas le pones la clase a tu div. Entre mas limpio este tu código mas fácil va a ser de mantener y de depurar.


Saludos
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #8 (permalink)  
Antiguo 11/07/2013, 18:58
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Llenar array con id de la BD y comprobar si se repite

Estás realizando una nueva consulta dentro del bucle, pero no veo el bucle correspondiente para que puedas recorrer ese segundo array.
  #9 (permalink)  
Antiguo 11/07/2013, 19:28
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 2 meses
Puntos: 36
Respuesta: Llenar array con id de la BD y comprobar si se repite

Cita:
Iniciado por metacortex Ver Mensaje
Estás realizando una nueva consulta dentro del bucle, pero no veo el bucle correspondiente para que puedas recorrer ese segundo array.
No esta haciendo el bucle por que solo esta obteniendo un registro.
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #10 (permalink)  
Antiguo 12/07/2013, 07:51
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Llenar array con id de la BD y comprobar si se repite

Para que lo que has escrito funcione, debe ser usado así:
Código PHP:
$os = array();
while (
$ultimo_fila mysql_fetch_array($resultado_fila))
{
 
$os[] = $ultimo_fila['id_direccion'] ;
 if (!
in_array($ultimo_fila['id_direccion'], $os)) 
 {
 ... 
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Etiquetas: bd, mysql, repite, select
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 01:21.