Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Obtener el primer parent ID

Estas en el tema de Obtener el primer parent ID en el foro de PHP en Foros del Web. Hola que tal! tengo un pequeño problema. quiero obtener el parentid principal de una consulta: id|parent| 1 | 0 | 2 | 0 | 3 ...
  #1 (permalink)  
Antiguo 22/02/2013, 13:12
Avatar de ajalex  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 18 años, 10 meses
Puntos: 0
Exclamación Obtener el primer parent ID

Hola que tal!

tengo un pequeño problema.

quiero obtener el parentid principal de una consulta:

id|parent|
1 | 0 |
2 | 0 |
3 | 0 |
4 | 1 |
5 | 4 |
6 | 5 |

ya tengo una función que encontré y funciona a la perfección:
Código PHP:
$arr = array(
    array(
'id' => 1'parent' => 0),
    array(
'id' => 2'parent' => 0),
    array(
'id' => 3'parent' => 0),
    array(
'id' => 4'parent' => 1),
    array(
'id' => 5'parent' => 4),
    array(
'id' => 6'parent' => 5));

function 
get_key($arr$id)
{
    foreach (
$arr as $key => $val) {
        if (
$val['id'] === $id) {
            return 
$key;
        }
    }
    return 
null;
}

function 
get_parent($arr$id)
{
    
$key get_key($arr$id);
    if (
$arr[$key]['parent'] == 0)
    {
        return 
$id;
    }
    else 
    {
        return 
get_parent($arr$arr[$key]['parent']);
    }

y se imprime así:
Código PHP:
get_parent($arr6); // me retorna el id 1 
el problema es que quiero utilizarlo en mi consulta de MySQL y al pasar la consulta al array no trabaja la funcion y me imprime el mismo numero que puse 6

Código PHP:
$result=mysql_query("select id,parent from menu"); 
$var1 = array();
while(
$valor=mysql_fetch_array($result)) {  
$var1[] = array('id' => $valor['id'],'parent' => $valor['parent']);     

alguien que me pueda ayudar?

se los agradeceria!!! gracias!!!
  #2 (permalink)  
Antiguo 22/02/2013, 13:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 14 años, 1 mes
Puntos: 528
Respuesta: Obtener el primer parent ID

Habría que ver lo que tienes un tu BD, ya que a simple vista, así debería funcionar
  #3 (permalink)  
Antiguo 22/02/2013, 13:22
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 11 años, 1 mes
Puntos: 76
Respuesta: Obtener el primer parent ID

hola

hazle un var_dump a la variable $var1 para ver si te esta retornando el arreglo como es
  #4 (permalink)  
Antiguo 22/02/2013, 13:22
Avatar de ajalex  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Obtener el primer parent ID

Esta e sla tabla:

Código:
CREATE TABLE IF NOT EXISTS `menu` (
  `id` int(11) NOT NULL auto_increment,
  `label` varchar(200) NOT NULL,
  `link` varchar(200) NOT NULL,
  `parent` int(11) NOT NULL,
  `sort` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Dumping data for table `menu`
--

INSERT INTO `menu` (`id`, `label`, `link`, `parent`, `sort`) VALUES
(1, 'Uno', '', 0, 2),
(2, 'Dos', '', 0, 1),
(3, 'Tres', '', 0, 3),
(4, 'Cuatro', '', 1, 4),
(5, 'Uno punto 1', '', 4, 5),
(6, 'Otro', '', 5, 6);
  #5 (permalink)  
Antiguo 22/02/2013, 13:26
Avatar de ajalex  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Obtener el primer parent ID

con el var_dump me retorna como string el valor

Código:
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["parent"]=>
    string(1) "0"
  }
ya quedo, gracias ya pase a int el string ese era el problema!!!
  #6 (permalink)  
Antiguo 22/02/2013, 13:29
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 14 años, 1 mes
Puntos: 528
Respuesta: Obtener el primer parent ID

Pues es que a la función get_parent le debes pasar el arreglo y el id a buscar, si le das el id 6 no lo va a encontrar, ya que todos tus id don cadenas de texto.
  #7 (permalink)  
Antiguo 22/02/2013, 13:33
Avatar de ajalex  
Fecha de Ingreso: agosto-2003
Mensajes: 122
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Obtener el primer parent ID

El problema era que en la consulta me retornaba un string y no int, solo modifique la consulta y funciono, ya me retorna el id 1 que seria el parent root del id 6


Código PHP:
$result=mysql_query("select id,parent from menu"); 
$var1 = array();
while(
$valor=mysql_fetch_assoc($result)) {  
$var1[] = array('id' => (int)$valor['id'],'parent' => (int)$valor['parent']);     


Etiquetas: mysql, parent, primer, 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 03:12.