Foros del Web » Programando para Internet » PHP »

recorrido de arbol

Estas en el tema de recorrido de arbol en el foro de PHP en Foros del Web. buenos días amigos el foro. amigos tengo una estructura en forma de árbol en mi base de datos, necesito hacer una búsqueda e ir contando ...
  #1 (permalink)  
Antiguo 08/11/2013, 09:24
Avatar de andyvedder  
Fecha de Ingreso: julio-2013
Ubicación: Todas Partes
Mensajes: 27
Antigüedad: 11 años, 4 meses
Puntos: 1
Pregunta recorrido de arbol

buenos días amigos el foro. amigos tengo una estructura en forma de árbol en mi base de datos, necesito hacer una búsqueda e ir contando los hijos de cada nodo raíz, esto lo tengo que hacer para cinco niveles es decir cada nodo padre debo contar sus hijo, nietos, bisnietos hasta llegar a la 5ta generación. l lo hace perfecto hasta el 2 nivel pero los nietos se entrelazan como puedo diferenciar el conteo e identificar cada hijo con su padre. para ponerlo de otro modo, en el 2 nivel los nietos tienen 2 padres. he aquí mi código espero puedan ayudarme. aquí mi codigo:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Consultores</title>
<link rel="stylesheet" href="../css/styletable2.css" />
</head>
<body>
<div id="content">
<h1>Consutores Asociados a su Código</h1>

<?php
include("../Data_Base/conectar_bd.php");
conectar_bd();

session_start();

$CodPad= $_SESSION['$CodPad'];


$sql="select nivel from cliente where codigo='$CodPad'";

$ejsql=pg_query($sql);
if($row = pg_fetch_array($ejsql))
{
//Guardo los datos de la BD en las variables de $cantAcum
$cantAcum = $row["nivel"];
$Nivel1 = $cantAcum+1;
$Nivel2 = $cantAcum+2;
$Nivel3 = $cantAcum+3;
$Nivel4 = $cantAcum+4;
$Nivel5 = $cantAcum+5;
$var2 = $cantAcum+5;
}

echo '<table cellpadding="0" cellspacing="0" width="100%">';
echo '<thead><tr><td>Nivel 1</td><td>Nivel 2</td><td>Nivel 3</td><td>Nivel 4</td><td>Nivel 5</td></thead>';


$sql = "SELECT nivel FROM cliente Where nivel='$Nivel1' AND codigo_padre_p='$CodPad'"; // sentencia sql
$result = pg_query($sql);
$numero1 = pg_num_rows($result);
echo '<tr><td>'.$numero1.'</td>';


$sql = "SELECT nivel FROM cliente Where nivel='$Nivel2'"; // sentencia sql
$result = pg_query($sql);
$numero2 = pg_num_rows($result);
echo '<td>'.$numero2.'</td>';

$sql = "SELECT nivel FROM cliente Where nivel='$Nivel3'"; // sentencia sql
$result = pg_query($sql);
$numero3 = pg_num_rows($result);
echo '<td>'.$numero3.'</td>';

$sql = "SELECT nivel FROM cliente Where nivel='$Nivel4'"; // sentencia sql
$result = pg_query($sql);
$numero4 = pg_num_rows($result);
echo '<td>'.$numero4.'</td>';

$sql = "SELECT nivel FROM cliente Where nivel='$Nivel5'"; // sentencia sql
$result = pg_query($sql);
$numero5 = pg_num_rows($result);
echo '<td>'.$numero5.'</td>';
echo "</table>";

?>

</div>
</body>
</html>
  #2 (permalink)  
Antiguo 08/11/2013, 13:52
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: recorrido de arbol

<saludos>
Pues yo creo que solo te funciona solo el primer query, porque?
Porque solo en el primero haces uso del segmento

Código SQL:
Ver original
  1. AND codigo_padre_p='$CodPad'

Para los otros querys, no estás usando un codigo en especifico
sino que traes todos los de cierto nivel, y por eso es que no logras
traer los especificos de un código

Revisa eso y nos cuentas, suerte con eso!!!
P.D: En vez de hacer varios querys, creo que podrías unir todos los querys
en uno solo con UNION SELECT o con subconsultas, a menos que necesites hacerlo de ese modo, solo digo para que
no tengas tanto query!

</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 09/11/2013, 09:17
Avatar de andyvedder  
Fecha de Ingreso: julio-2013
Ubicación: Todas Partes
Mensajes: 27
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: recorrido de arbol

Gracias amigo yo lo intente usando el $CoigoPad en cada uno de los query pero no funciona como seria la sintaxis que me dices y disculpa la molestia:
  #4 (permalink)  
Antiguo 09/11/2013, 10:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: recorrido de arbol

Cita:
Iniciado por andyvedder Ver Mensaje
Gracias amigo yo lo intente usando el $CoigoPad en cada uno de los query pero no funciona como seria la sintaxis que me dices y disculpa la molestia:
<saludos>
Pues si lo hiciste con $CoigoPad no te va a funcionar pues es $CodPad,
y la sintaxis ya la tienes en el primer query, yo usaría el mismo query
inicial y lo replicaría a los demas, solo cambiando la variable del nivel
y listo
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 11/11/2013, 11:20
Avatar de andyvedder  
Fecha de Ingreso: julio-2013
Ubicación: Todas Partes
Mensajes: 27
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: recorrido de arbol

buenos días amigo. ya la variable nivel esta diferente para cada nivel.
  #6 (permalink)  
Antiguo 13/11/2013, 08:57
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: recorrido de arbol

Cita:
Iniciado por andyvedder Ver Mensaje
buenos días amigo. ya la variable nivel esta diferente para cada nivel.
<saludos>
Ehm... y el resto?
1. Arreglar el nombre de la variable
2. Agregar el AND a todos los demás querys

Si la respuesta a los 2 puntos es true en ambos casos,
y persiste el tema, te invito a que nos regales scripts
de creación de la tabla y algunos inserts de prueba
para tener con que probar
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: html, select, sql, variable
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 12:16.