Ayuda con esta función

roberts

Préstamo
Gamma
Programador
Desde
11 Ene 2012
Mensajes
416
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Hola amigos,

Me gustaría saber si me pueden dar una mano en esto:

Estoy creando un árbol genealógico familiar en PHP, lo que necesito es hacer que el hijo pueda ver hasta su tercera generación, ej. Padre, Abuelo, bisabuelo... Hasta ahora solo he podido hacer que pueda ver su padre con esta función:

En este ejemplo se imprimen tres resultados, El email del padre, y su nombre. Si no tiene padre, se imprime "No tiene padre"

PHP:
<?php 
$rs1=mysql_query("select * from users where active=1 and Username='$ref'");
if(mysql_num_rows($rs1)>0) {
$arr1=mysql_fetch_array($rs1);
echo "<a href=mailto:$arr1[7]>$arr1[1] (Username: $arr1[8])</a>";
}
else echo "No tiene padre";
?>

Espero que me puedan ayudar
 

droolo

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
20 Jul 2013
Mensajes
62
La función tal como la planteas no es correcta de entrada. Sin saber la estructura de tu tabla, en todo caso el mensaje de "no tiene padre" correspondería a: no existe el usuario o no está activo.

Doy por hecho que en tu tabla al menos tienes estos campos: User_id, Username, Email, Padre_id

Una forma de conseguir rápida lo que buscas, aunque probablemente no sea la óptima, sería algo así (ojo que no he comprobado errores de sintaxis en el código por lo que podría haber algún pequeño error pues lo he escrito todo aquí directamente):

PHP:
<?

$result = mysql_query("SELECT * FROM users where active = 1 and Username='$ref'");
if(mysql_num_rows($result)>0)
{
    while($fila = mysql_fetch_array($result))
    {
          echo "<a href='mailto:".$fila['Email']."'>Usuario: ".$fila['Username']."</a>";
          $result2 = mysql_query("SELECT * FROM users where active = 1 and User_id= '".$fila['Padre_id']."'");
          if(mysql_num_rows($result2)>0)
          {
               while($fila2 = mysql_fetch_array($result2))
              {
               echo "Padre : <a href='mailto:".$fila2['Email']."'>Usuario: ".$fila2['Username']."</a>";
              }

              // aqui tercera itineracion para abuelo y dentro la cuarta para bisabuelo...



          }
          else
          {
              echo "No tiene padre";
          }


    }


}
else
{
    echo "Usuario no existe o no activo";
}






?>
 
Última edición:

roberts

Préstamo
Gamma
Programador
Desde
11 Ene 2012
Mensajes
416
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Gracias droolo,

Me ha dado un error de syntax Parse error: syntax error, unexpected '{' justo aqui: (En negrita)

while($fila = mysql_fetch_array($result)
{

Lo probare a ver que tal
 

droolo

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
20 Jul 2013
Mensajes
62
Lo había editado antes, de todas formas falta un ) al final de esa primera línea, probablemente haya más fallos de ese tipo en el código.
 

roberts

Préstamo
Gamma
Programador
Desde
11 Ene 2012
Mensajes
416
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Hola droolo, le he hecho algunos arreglo y ha funcionado a la perfección Muchisimas gracias hermano!!!
 

droolo

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
20 Jul 2013
Mensajes
62
Permitirme unos minutos y te preparo la función completa..

---------- Post agregado el 20-ago-2013 hora: 17:53 ----------

Aquí tienes la función completa, espero que te sirva:

PHP:
$ref = "UsernameHijo";
$result = mysql_query("SELECT * FROM users where active = 1 and Username='".$ref."'");
if(mysql_num_rows($result)>0)
{
    while($fila = mysql_fetch_array($result))
    {
		echo "<p>Usuario: <a href='mailto:".$fila['Email']."'>".$fila['Username']."</a></p>";
        $result2 = mysql_query("SELECT * FROM users where active = 1 and ref_by = '".$fila['ID']."'");
        if(mysql_num_rows($result2)>0)
        {
			while($fila2 = mysql_fetch_array($result2))
            {
				echo "<p>Padre : <a href='mailto:".$fila2['Email']."'>".$fila2['Username']."</a></p>";
				$result3 = mysql_query("SELECT * FROM users where active = 1 and ref_by = '".$fila2['ID']."'");
        		if(mysql_num_rows($result3)>0)
        		{
					while($fila3 = mysql_fetch_array($result3))
           			{
						echo "<p>Abuelo : <a href='mailto:".$fila3['Email']."'>".$fila3['Username']."</a></p>";
						
						$result4= mysql_query("SELECT * FROM users where active = 1 and ref_by = '".$fila3['ID']."'");
        				if(mysql_num_rows($result4)>0)
        				{
							while($fila4 = mysql_fetch_array($result4))
           					{
								echo "<p>Bisabuelo : <a href='mailto:".$fila4['Email']."'>".$fila4['Username']."</a></p>";	
							}
						}
						else
						{
							echo "<p>No tiene bisabuelo.</p>";
						}
					}
				}
				else
				{
					echo "<p>No tiene abuelo.</p>";
				}
			}
        }
        else
        {
			echo "<p>No tiene padre.</p>";
		}
    }
}
else
{
    echo "<p>Usuario no existe o no activo.</p>";
}
	
?>
 

roberts

Préstamo
Gamma
Programador
Desde
11 Ene 2012
Mensajes
416
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Gracias man, en unos minutos lo pruebo y te cuento que tal!
 

roberts

Préstamo
Gamma
Programador
Desde
11 Ene 2012
Mensajes
416
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Me ha funcionado! Gracias de nuevo