Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Comparar dos arrays de dos funciones

Estas en el tema de Comparar dos arrays de dos funciones en el foro de PHP en Foros del Web. Tengo 3 funciones una que busca un lugares en la BD otro busca bares y me gustaría comprar en la tercera función las dos arrays ...
  #1 (permalink)  
Antiguo 03/04/2014, 04:22
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Comparar dos arrays de dos funciones

Tengo 3 funciones una que busca un lugares en la BD otro busca bares y me gustaría comprar en la tercera función las dos arrays de las funciones anteriores para solo sacar los comunes.

Todo el código en una sola función me funciona.

Código PHP:
   function getLugar($slug){
            
$db = new connexio();
            
$lloc $db->query("SELECT * FROM wp_terms WHERE slug ='$slug'");
            
$fila $lloc->fetch_array(MYSQLI_ASSOC);    
            
$lloc $fila['term_id'];
            
$tid $db->query("SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id='$lloc'"); // torna 50 de term_taxonomy_id que es de bares
            
$fila2 $tid->fetch_array(MYSQLI_ASSOC);            
            
$tid $fila2['term_taxonomy_id'];
            
$tots $db->query("SELECT * FROM wp_term_relationships WHERE term_taxonomy_id = '$tid'");
            
$j 0;
            while (
$fila3 $tots->fetch_array(MYSQLI_ASSOC)){
                
$array1[$j] = $fila3['object_id'];
                
$j++;   
            }  
            
            return 
$array1;
            
$db->close();
        }
        
        function 
getBares($slug2){
            
$db = new connexio();
            
$bares $db->query("SELECT * FROM wp_terms WHERE slug ='$slug'");
            
$fila $bares->fetch_array(MYSQLI_ASSOC);    
            
$bares $fila['term_id'];
            
$tid $db->query("SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id='$bares'"); // torna 50 de term_taxonomy_id que es de bares
            
$fila2 $tid->fetch_array(MYSQLI_ASSOC);            
            
$tid $fila2['term_taxonomy_id'];
            
$tots $db->query("SELECT * FROM wp_term_relationships WHERE term_taxonomy_id = '$tid'");
            
$i 0;
            while (
$fila3 $tots->fetch_array(MYSQLI_ASSOC)){
                
$array[$i] = $fila3['object_id'];
                
$i++;   
            }           
            return 
$array;
            
$db->close();
        }
        
        function 
getComparar($slug$slug2){
            
$carray $this->getLugar($slug);
            
$carray2 $this->getBares($slug2);
            
            
$result array_intersect($carray$carray2);
            
            
$result implode(", "$result); 

            
$resultat $db->query("SELECT post_title FROM wp_posts WHERE id IN (SELECT object_id FROM wp_term_relationships WHERE object_id IN ($result))"); //mostra el titol del bar
            
while ($fila4 $resultat->fetch_array(MYSQLI_ASSOC)){
                
print_r($fila4['post_title']);  
                echo 
'<br/>';
            }            
            
        } 
  #2 (permalink)  
Antiguo 03/04/2014, 04:29
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Comparar dos arrays de dos funciones

Cita:
Todo el código en una sola función me funciona.
No podemos imaginar que es lo que te esta pasando describelo.

A pesar de ello veo lo siguiente:

1.- En las dos primeras funciones haces la conexión a bbdd al principio y la cierras al final. En la tercera no, y tambien haces una consulta a la bbdd.
2.- Usas $this-> en un entorno que no sabemos si es o no de objetos, solo se puede usar si las funciones forman parte de una clase. El hecho que hagas la conexión en cada función me hace pensar que no estas en un entorno de objetos.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/04/2014 a las 04:36
  #3 (permalink)  
Antiguo 03/04/2014, 04:35
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Comparar dos arrays de dos funciones

Si ya lo vi lo de la conexión y lo acabo de rectificar... todas estas funciones están dentro de una clase

El problema es que no da ningún error ni imprime nada

Última edición por manelmanel8; 03/04/2014 a las 04:53
  #4 (permalink)  
Antiguo 03/04/2014, 07:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Comparar dos arrays de dos funciones

Cita:
...object_id IN ($result)...
Segun esto $result debe ser una lista de id separados por comas.

Es lo que obtienes? al hacer

has intentado

Código PHP:
Ver original
  1. echo $result;

Despues del implode

Por otro lado si

Cita:
todas estas funciones están dentro de una clase
deberías establecer la coexión al construir el objeto y usar siempre la misma.... o incluso tener un objeto con la conexión guardado en la session y usar este en los otros objetos.... nunca conectar y desconectar en cada función.


Tambien podrias cambiar
Código PHP:
Ver original
  1. print_r($fila4['post_title']);  
  2.                 echo '<br/>';

por

Código PHP:
Ver original
  1. echo $fila4['post_title'].'<br />';

La antigua <br> es <br /> no <br/>.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/04/2014 a las 08:29
  #5 (permalink)  
Antiguo 11/04/2014, 04:48
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Respuesta: Comparar dos arrays de dos funciones

Ya lo solucione al final

Gracias por la ayuda dejo el código de la solución

Código PHP:
        function getLugar($slug){
            
$db = new connexio();
            
$lugar $db->query("SELECT * FROM wp_terms WHERE slug ='$slug'");
            
$fila $lugar->fetch_array(MYSQLI_ASSOC);    
            
$lugar $fila['term_id'];
            
$tid $db->query("SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id='$lugar'"); // torna 50 de term_taxonomy_id que es de bares
            
$fila2 $tid->fetch_array(MYSQLI_ASSOC);            
            
$tid $fila2['term_taxonomy_id'];
            
$tots $db->query("SELECT * FROM wp_term_relationships WHERE term_taxonomy_id = '$tid'");
            
$i 0;
            while (
$fila3 $tots->fetch_array(MYSQLI_ASSOC)){
                
$arr[$i] = $fila3['object_id'];
                
$i++;   
            } 
            return 
$arr;
            
$db->close();
        }
        
        function 
getBares($slug2){
            
$db = new connexio();
            
$bares $db->query("SELECT * FROM wp_terms WHERE slug ='$slug2'");
            
$fila $bares->fetch_array(MYSQLI_ASSOC);    
            
$bares $fila['term_id'];
            
$tid $db->query("SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE term_id='$bares'"); // torna 50 de term_taxonomy_id que es de bares
            
$fila2 $tid->fetch_array(MYSQLI_ASSOC);            
            
$tid $fila2['term_taxonomy_id'];
            
$tots $db->query("SELECT * FROM wp_term_relationships WHERE term_taxonomy_id = '$tid'");
            
$i 0;
            while (
$fila3 $tots->fetch_array(MYSQLI_ASSOC)){
                
$arr[$i] = $fila3['object_id'];
                
$i++;   
            } 
            return 
$arr;
            
$db->close();
        }

        function 
getComparar($slug$slug2){
            
$db = new connexio();  
            
$result array_intersect($this->getLugar($slug), $this->getBares($slug2));
            
            
$result implode(", "$result); 

            
$resultat $db->query("SELECT post_title FROM wp_posts WHERE id IN (SELECT object_id FROM wp_term_relationships WHERE object_id IN ($result))"); 
            while (
$fila4 $resultat->fetch_array(MYSQLI_ASSOC)){
                
print_r($fila4['post_title']);  
                echo 
'<br/>';
            }
            
            return 
$result;
            
$db->close();        
        } 

Etiquetas: arrays, funciones, select, sql
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 19:08.