Foros del Web » Programando para Internet » PHP »

El Php Es Recursivo???,

Estas en el tema de El Php Es Recursivo???, en el foro de PHP en Foros del Web. necesito dibujar un arbol, mas bien un tipo,de organigrama, y lo puedo hacer on una funcion recursiva, si tienes otra idea, o sabes de alguna ...
  #1 (permalink)  
Antiguo 19/04/2002, 11:48
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
El Php Es Recursivo???,

necesito dibujar un arbol, mas bien un tipo,de organigrama, y lo puedo hacer on una funcion recursiva, si tienes otra idea, o sabes de alguna pagina en que salga algo relacionado, porfavor posteala

gracias
  #2 (permalink)  
Antiguo 19/04/2002, 12:15
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: El Php Es Recursivo???,

Hola, si efectivamente, con PHP puedes programar funciones recursivas. Yo hice algunas pruebas y me funcionó. Ahora si, para dibujar el organigrama, tendras que tener en cuenta, no consumir mucha memoria, ya que se te llenará el stack.

Cuando lo implementes, postea el código!

Saludos!


<font face=Verdana size=2 color=#006699>Nok;)<br>Juan Pablo Winiarczyk<br>Neuquen - Patagonia Argentina[/CODE]
  #3 (permalink)  
Antiguo 19/04/2002, 12:47
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: El Php Es Recursivo???,

okas gracias, ya escribi el algoritmo, el organigrama es super simple , logicamente , es sobre cargos en una empresa, enlazados a un cargo superior mediante la clave de este, la idea es desplegar la estructura , la verdad es que con tablas no se como lo voy a hacer , pero debo tenerlo para hoy si es posible y no flojeo tanto jejeje, y porsupuesto posteare el codigo
  #4 (permalink)  
Antiguo 19/04/2002, 13:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: El Php Es Recursivo???,

Acuerdate de usar:
set_time_limit(0);

Por si tienes problemas con el tiempo de ejecucion de tu script recursivo. Con esta funcion dejas q PHP tarde lo que tarde para realizar dicha operación.

Un saludo,
  #5 (permalink)  
Antiguo 19/04/2002, 13:34
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: El Php Es Recursivo???,

claro, gracias por el dato, voy a probarlo aca localmente y despues les cuento
  #6 (permalink)  
Antiguo 19/04/2002, 16:46
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: El Php Es Recursivo???,

yap , lo hice , lo unico si es que no puedo graficarlo de alguna manera, les posteo la funcion, use de base la funcion clasica para recorrer arboles binarios con dos enlaces, solo que este rea con uno solo.

function PlotCargo($Id){

$select= &quot;SELECT &quot;
.&quot;nuke_ISS_cargos.id, &quot;
.&quot;nuke_ISS_cargos.id_cargosup, &quot;
.&quot;nuke_ISS_cargos.nombre &quot;
.&quot;FROM &quot;
.&quot;nuke_ISS_cargos &quot;
.&quot;WHERE &quot;
.&quot;nuke_ISS_cargos.id_cargosup = '$Id' &quot;
.&quot;ORDER BY nuke_ISS_cargos.id_cargosup &quot;;
$result = mysql_query($select) or die(_DBERROR.$select);
if (mysql_num_rows($result) == 0){
return;
}else{
while(list($idresult,$nombreresult)=mysql_fetch_ro w($result)){
echo &quot;Padre: $Id -&gt; Hijo: $idresult [ $nombreresult ]&quot;;
PlotCargo($idresult);
}
}

}

la prim era vez entra con el valor del nodo maximo, el gran jefe, el cabron
y luego hace su trabajo,

PORFAVOR , SI TIENES ALGUNA IDEA DE COMO GRAFICAR ESTO POSTEALO PORFA, yo estoy tratando de hacerlo con tablas pero se me hace muy dificil


  #7 (permalink)  
Antiguo 19/04/2002, 17:38
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: El Php Es Recursivo???,

lo hiceeeeeeeeeeeeeeeeeeeeeeeeeeee......
lo posteo de inmediato
  #8 (permalink)  
Antiguo 19/04/2002, 19:20
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: El Php Es Recursivo???,

Bueno aca esta el codigo, destaco que esto es parte de un modulo que estoy haciendo para PostNuke 7.1, .ademas solo se puede graficar horizontalmente, esta implementado en base al algoritmo para recorrer arboles n-arios
igual con un poco de formateo se ve mas bonito.

el parametro IdOrg corresponde a la clave de organigrama que estamo desplegando como la empresa es grande, puede tener varios prganigramas, por pais o por oficina o departamente

antes de entrar en la funcion recursiva debe sdarsele como primer parametro la ID del nodo padre. asi la funcion buscara recursivamente los nodos que estan ligados al nodo padre y los deplegara

Código:
echo &quot;&lt;center&gt;&lt;font class=\&quot;pn-pagetitle\&quot;&gt;&quot;._SHOWCARGOS.&quot;&lt;/font&gt;&lt;/center&gt;&lt;br&gt;&quot;;

$select= &quot;SELECT &quot;
					.&quot;nuke_ISS_cargos.id, &quot;
					.&quot;nuke_ISS_cargos.nombre, &quot;
					.&quot;nuke_ISS_empleados.nombres, &quot;
					.&quot;nuke_ISS_empleados.apellidos &quot;
					.&quot;FROM &quot;
					.&quot;nuke_ISS_cargos, &quot;
					.&quot;nuke_ISS_empleados &quot;
					.&quot;WHERE &quot;
					.&quot;nuke_ISS_cargos.id_empleado = nuke_ISS_empleados.id AND &quot;
					.&quot;nuke_ISS_cargos.id_organ = '$IdOrg' AND &quot;
					.&quot;nuke_ISS_cargos.id_cargosup = '-1' &quot;;


	$result= mysql_query($select) or die(_DBERROR.$select);

	if (mysql_num_rows($result) == 0){

		header(&quot;location: admin.php?module=ISSCAR&amp;op=cargos&amp;msg=&quot;._ERR_NOORGANIGRAMAS.&quot;&quot;);

	}else{

		list($id,$cargo,$nombres,$apellidos) = 
mysql_fetch_row($result);

		//Dibujando la tabla...

		echo &quot;&lt;table border=\&quot;0\&quot; bgcolor=\&quot;#EEEEEE\&quot; cellpadding=\&quot;0\&quot; cellspacing=\&quot;5\&quot; width=\&quot;100%\&quot;&gt;&lt;tr&gt;&quot;;

		echo &quot;&lt;td bgcolor=\&quot;#FFFF00\&quot;&gt;&lt;b&gt;$cargo&lt;/b&gt;&lt;br&gt;$nombres $apellidos&lt;br&gt;&lt;/td&gt;&quot;;

		//Funcion recursiva que 
recorre el organigrama y lo dibuja
		PlotCargo($id);

		echo &quot;&lt;/tr&gt;&lt;/table&gt;&quot;;
	}
eso es mas o menos, saludos y buena suerte
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:47.