Foros del Web » Programando para Internet » PHP »

Problema con una Función en PHP

Estas en el tema de Problema con una Función en PHP en el foro de PHP en Foros del Web. Saludos a todos, tengo la siguiente funcion que imprime una lista de temas ( Aquí el ejemplo ), como verán el resultado es sólo texto ...
  #1 (permalink)  
Antiguo 23/03/2011, 07:28
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 3 meses
Puntos: 3
Pregunta Problema con una Función en PHP

Saludos a todos, tengo la siguiente funcion que imprime una lista de temas (Aquí el ejemplo), como verán el resultado es sólo texto sin formato HTML, lo que quiero es que me aparezca como lista :

Código HTML:
Ver original
  1. <ul>Algo
  2.    <li>ss</li>
  3.    <li>ss</li>
  4.       <ul>Algo 2
  5.          <li>ss</li>
  6.          <li>ss</li>
  7.       </ul>
  8.    <li>ss</li>
  9. </ul>

La función es esta:

Código PHP:
Ver original
  1. function Faq($seccion, &$array, $nivel) {
  2.     global $context, $txt, $modSettings, $scripturl, $user_info, $smcFunc, $db_prefix; 
  3.        
  4.     $str = '';
  5.     for ( $i=0; $i < $nivel; $i++ )
  6.       $str .= '&nbsp; &nbsp; &nbsp; &nbsp; ';        
  7.    
  8.     //hacemos la consulta del FAQ dependiendo del lenguaje
  9.     $request = $smcFunc['db_query']('', '
  10.         SELECT *           
  11.         FROM {db_prefix}faqs AS f
  12.         WHERE f.id_rel = "'.$seccion.'" AND estado = 1 ORDER BY f.istitle, f.id_rel, f.titulo',
  13.         array(
  14.         )
  15.     );
  16.        
  17.     while ( $row = $smcFunc['db_fetch_assoc']($request) ) {      
  18.       $row['level'] = $str;    
  19.       $array[] = $row;
  20.       Faq($row['id'], $array, $nivel+1 );
  21.     }
  22.     $smcFunc['db_free_result']($request);      
  23. }
  24.  
  25. function printFAQ( $aSection, $all ) {
  26.     global $context, $txt, $settings, $modSettings, $scripturl, $user_info, $smcFunc, $db_prefix;  
  27.    
  28.     echo '<a name="top"></a><p>&nbsp;</p>
  29.    '."\n";
  30.    
  31.     // impresión del Título de las F.A.Q. y motor de búsqueda
  32.     $request = $smcFunc['db_query']('', '
  33.         SELECT *           
  34.         FROM {db_prefix}faqs AS f
  35.         WHERE f.id = "'.$aSection.'"',
  36.         array(
  37.         )
  38.     );
  39.     $row = $smcFunc['db_fetch_assoc']($request);
  40.     $title = '<strong>'.$row['titulo'].'</strong>';
  41.     $stitle = '';
  42.     $id_base = $row['id'];
  43.    
  44.     if ( $row['id_rel'] != 0 ) {
  45.       $id_rel = $aSection;
  46.       do {
  47.         $request = $smcFunc['db_query']('', '
  48.         SELECT *           
  49.         FROM {db_prefix}faqs AS f
  50.         WHERE f.id = "'.$id_rel.'"',
  51.         array(
  52.         )
  53.     );
  54.         $fila = $smcFunc['db_fetch_assoc']($request);
  55.         $id_rel = $fila['id_rel'];
  56.       } while ( $id_rel != 0 );
  57.       $title = '<strong>'.$fila['titulo'].'</strong>';
  58.       $stitle = '<p><h2><strong>'.$row['titulo'].'</strong></h2></p>';
  59.       $id_base = $fila['id'];
  60.     }
  61.     echo '
  62.        <table width="100%" cellpadding="0" cellspacing="0">
  63.          <tr>
  64.            <td class="largetext">'.$title.'</td>            
  65.          </tr>
  66.        </table>
  67.        '.$stitle.'
  68.          '."\n";   
  69.    
  70.     // obtenemos array con las FAQs
  71.     $array = array();
  72.     if ( $all == 1 )
  73.     Faq( 141, $array, 0 );
  74.     Faq( $aSection, $array, 0 );
  75.     $actualId = $aSection;
  76.    
  77.     // mostramos navegador o calculamos y mostramos estadísticas según convenga
  78.     if ( $row['id_rel'] != 0 )  // mostramos navegador
  79.       echo '
  80.        <p><hr><a href="',$scripturl,'?action=faq&id='.$aSection.'">Sumario</a><hr></p>
  81.           '."\n";
  82.     else {  // calculamos y mostramos estadísticas
  83.       $faqs = 0;
  84.       $categos = 0;
  85.       foreach( $array as $row )
  86.         if ( $row['istitle'] == 1 ) $categos++;
  87.         else $faqs++;
  88.      
  89.       echo '
  90.        <hr><p align="center">N&uacute;mero de F.A.Q.s: '.$faqs.'<br>
  91.        N&uacute;mero de categor&iacute;as: '.$categos."</p><hr>\n";
  92.     }
  93.    
  94.         if ( in_array(1, $user_info['groups']) || in_array(2, $user_info['groups']) || in_array(13, $user_info['groups'])) {
  95.         echo '
  96.        <table width="100%" cellpadding="0" cellspacing="0">
  97.          <tr>
  98.            <td><a href="', $scripturl,'?action=faqadd;sec='.$aSection.'">[ Agregar nuevo FAQ ]</a></td>            
  99.          </tr>
  100.           <tr>
  101.             <td><hr /></td>
  102.          </tr>
  103.        </table>'
  104.         ."\n";
  105.     }
  106.    
  107.     echo '<br />
  108.           <br />';
  109.    
  110.     // imprimimos menú
  111.     foreach( $array as $row ) {
  112.       switch ( $row['estado'] ) {
  113.         case 0: $visibilidad = '&nbsp; &nbsp; &nbsp; &nbsp;<span class="textError">-- borrador --</span>'; break;
  114.         case 1: $visibilidad = '&nbsp;'; break;
  115.         case 2: $visibilidad = '&nbsp; &nbsp; &nbsp; &nbsp;<span class="textError">-- S&oacute;lo Moderadores --</span>'; break;
  116.         case 3: $visibilidad = '&nbsp; &nbsp; &nbsp; &nbsp;<span class="textError">-- S&oacute;lo administradores --</span>'; break;
  117.         case 4: $visibilidad = '&nbsp; &nbsp; &nbsp; &nbsp;<span class="textError">-- Pendiente Aprobaci&oacute;n --</span>'; break;
  118.         case 5: $visibilidad = '&nbsp; &nbsp; &nbsp; &nbsp;<span class="textError">-- S&oacute;lo Redactores FAQs --</span>'; break;
  119.       }
  120.  
  121.       if ( ( $actualId != $row['id'] ) && ( $row['istitle'] == 1 ) ) $actualId = $row['id'];
  122.       if ( $row['istitle'] == 1 ) echo ''.$row['level'].'<a href="'.$scripturl.'?action=faqcontent&p='.$aSection.';all=0;fs='.$actualId.'"><strong>';
  123.       elseif ( $actualId == $aSection ) echo ''.$row['level'].'<a href="#'.$row['id'].'">';
  124.       else echo ''.$row['level'].'<a href="'.$scripturl.'?action=faqcontent&p='.$aSection.';all=0;fs='.$actualId.'#'.$row['id'].'">';
  125.       $estado = '';
  126.      
  127.         switch ( $row['accion'] ) {
  128.           case 1:
  129.             if ( ( $row['istitle'] != 1 ) && ( strtotime ("-1 month") < strtotime($row['fecha']) ) )
  130.               $estado = '<img src="'.$settings['default_theme_url'].'/themes/images/new.gif" alt="nuevo"> ';
  131.             break;
  132.           case 2:
  133.             if ( ( $row['istitle'] != 1 ) && ( strtotime ("-1 month") < strtotime($row['fecham']) ) ) {
  134.               if ( $row['ismodified'] == 1 )
  135.                 $estado = '<img src="'.$settings['default_theme_url'].'/themes/images/update.gif" alt="modificado"> ';
  136.               elseif ( strtotime ("-1 month") < strtotime($row['fecha']) )
  137.                 $estado = '<img src="'.$settings['default_theme_url'].'/themes/images/new.gif" alt="nuevo"> ';
  138.             }
  139.             break;
  140.         }
  141.        
  142.       echo $estado.parse_bbc( $row['titulo'] );
  143.       if ( $row['istitle'] == 1 ) echo '</strong>';
  144.       else echo $visibilidad;
  145.       echo "</a><br>\n";
  146.     }
  147.    
  148.     echo "<p>&nbsp;</p>\n";
  149.    
  150.     // imprimimos las FAQs
  151.     foreach( $array as $fila ) {
  152.       switch ( $fila['estado'] ) {
  153.         case 0: $estado = '<span class="textError">borrador</span>'; break;
  154.         case 1: $estado = '&nbsp;'; break;
  155.         case 2: $estado = '<span class="textError">Sólo Moderadores</span>'; break;
  156.         case 3: $estado = '<span class="textError">Sólo administradores</span>'; break;
  157.         case 4: $estado = '<span class="textError">Pendiente aprobación</span>'; break;
  158.         case 5: $estado = '<span class="textError">Sólo Redactores FAQs</span>'; break;
  159.       }
  160.       if ( ( $row['id_rel'] == $aSection ) && ( $row['istitle'] != 1 ) ) {
  161.         echo '
  162.          <a name="'.$row['id'].'"></a>
  163.          <table style="border: 1px solid #696969;padding: 1px;background-color: #ECEDF3;" width="100%" align="center" cellpadding="1" cellspacing="0">
  164.            <tr>
  165.              <td>
  166.                <table style="border: 1px solid #000000; margin: 1px auto 1px auto;" width="100%" align="center" cellpadding="2" cellspacing="0">
  167.                  <tr>
  168.                    <td class="titleBox1">'.parse_bbc( $row['titulo'] ).'</td>
  169.                    <td class="titleBox1">'.$estado.'</td>
  170.                    <td class="titleBox2" width="80">'.date( 'd/m/Y', strtotime($row['fecha']) ).'</td>
  171.                    <td class="titleBox2" width="30"><a href="#top">Top</a></td>
  172.                  </tr>
  173.                </table>
  174.              </td>
  175.            </tr>
  176.             '."\n";
  177.         if ( $row['autor'] != '' ) {
  178.           $str = $row['autor'];
  179.           if ( $row['mailautor'] != '' ) $str = '<a href="mailto:'.$row['mailautor'].'">'.$row['autor'].'</a>';
  180.           if ( $row['webautor'] != '' ) $str .= ' &nbsp; - &nbsp; <strong>Web del autor</strong>: <a href="http://'.$row['webautor'].'" target="_blank">'.$row['webautor'].'</a>';
  181.           echo '
  182.            <tr>
  183.              <td>
  184.                <table style="border: 1px solid #000000; margin: 1px auto 1px auto;" width="100%" align="center" cellpadding="2" cellspacing="0">
  185.                  <tr><td class="backBody1"><strong>Autor</strong>: '.$str.'</td></tr>
  186.                </table>
  187.              </td>
  188.            </tr>'."\n";
  189.         }
  190.         echo '
  191.            <tr>
  192.              <td>
  193.                <table style="border: 1px solid #000000; margin: 1px auto 1px auto;" width="100%" align="center" cellpadding="2" cellspacing="0">
  194.                  <tr><td class="backBody1"><p align="justify"><br>'.parse_bbc( $row['texto'] ).'<br></p></td></tr>
  195.                </table>
  196.              </td>
  197.            </tr>'."\n";
  198.         if ( $row['urls'] != '' )
  199.           echo '
  200.            <tr>
  201.              <td>
  202.                <table style="border: 1px solid #000000; margin: 1px auto 1px auto;" width="100%" align="center" cellpadding="2" cellspacing="0">
  203.                  <tr><td class="backBody1"><p><strong>Enlaces relacionados</strong><br><ul>'.parse_bbc( $row['urls'] ).'</ul></p></td></tr>
  204.                </table>
  205.              </td>
  206.            </tr>'."\n";
  207.         if ( $context['allow_admin'] )
  208.           echo '
  209.          <tr>
  210.            <td>
  211.              <table style="border: 1px solid #000000; margin: 1px auto 1px auto;" width="100%" align="center" cellpadding="2" cellspacing="0">
  212.                <tr><td class="backBody1"><strong>Administraci&oacute;n</strong>: <a href="'.$scripturl.'/index.php?p=44&id='.$row['id'].'&f='.$row['id_sec'].'"><img src="'.$settings['default_theme_url'].'/themes/images/btn_modify.gif" alt="modificar"></a></td></tr>
  213.              </table>
  214.            </td>
  215.          </tr>'."\n";
  216.         echo '
  217.        </table>
  218.        '."\n";    
  219.       }
  220.     }
  221.   }

Fleon XD
  #2 (permalink)  
Antiguo 23/03/2011, 10:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Problema con una Función en PHP

tienes que dar mas datos, no esperarás que tengamos que entender toda la función o ¿si?, di donde tienes el problema, si te marca error ¿cual es?, acércanos mas a entender como funciona esto.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 23/03/2011, 11:13
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Problema con una Función en PHP

Cita:
Iniciado por eits Ver Mensaje
tienes que dar mas datos, no esperarás que tengamos que entender toda la función o ¿si?, di donde tienes el problema, si te marca error ¿cual es?, acércanos mas a entender como funciona esto.

saludos.
Perdón amigo eits, en el code, desde la línea 121 hasta la 124 es donde se imprime el contenido, no sé si llegaste ver el link que coloqué que es el resultado de esa impresión, el caso es que, el autor de ese código colega de nuestro foro indicado en el link anterior no está disponible hace tiempo y no hemos tenido forma de contactarlo, por ende andamos necesitando hacer esa modificación, ya que no tiene formato, sólo texto, o sea, el espaciado izquierdo se hace con puros espacios, lo que necesitamos es mostrarlo dentro de una lista (<ul> <li></li> </ul>) que luego daremos estilo a través de CSS.

Fleon XD
  #4 (permalink)  
Antiguo 18/04/2011, 07:27
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Problema con una Función en PHP

Bueno, he simplificado la funcion quedando asi:

Código PHP:
Ver original
  1. function ObtenerNodosHijos($parent, $lang, $level = 1)
  2. {
  3.     global $context, $txt, $modSettings, $scripturl, $smcFunc, $sourcedir, $db_prefix;
  4.    
  5.     //Obtenemos los faqs
  6.     $request = $smcFunc['db_query']('', "
  7.         SELECT *           
  8.         FROM faqs AS f         
  9.         WHERE f.id_rel = '".$parent."' AND f.lng_id = '".$lang."' AND f.status = 1
  10.         ORDER BY f.is_title, f.id_rel,f.chapter,f.schapter,f.sschapter,f.ssschapter,f.titulo"
  11.     );
  12.    
  13.     while ($row = $smcFunc['db_fetch_assoc']($request))
  14.     {
  15.                 //Primer Nivel
  16.         if (($row['id_rel'] == 0) && !empty($row['chapter']) && empty($row['schapter']) && ($row['is_title'] == 1))
  17.             echo '<li>'.$row['chapter'].'. '.$row['titulo'];
  18.                 //Segundo Nivel    
  19.         elseif (($row['id_rel'] != 0) && !empty($row['chapter']) && !empty($row['schapter']) && ($row['is_title'] == 1))
  20.             echo '<li>'.$row['chapter'].'.'.$row['schapter'].'. '.$row['titulo'];      
  21.                //Tercer Nivel
  22.         elseif (($row['id_rel'] != 0) && !empty($row['chapter']) && !empty($row['schapter']) && !empty($row['sschapter']) && ($row['is_title'] == 1))
  23.             echo '<li>'.$row['chapter'].'.'.$row['schapter'].'.'.$row['sschapter'].'. '.$row['titulo'];
  24.                 //Cuarto NIvel     
  25.         elseif (($row['id_rel'] != 0) && !empty($row['chapter']) && !empty($row['schapter']) && !empty($row['sschapter']) && !empty($row['ssschapter']) && ($row['is_title'] == 1))
  26.             echo '<li>'.$row['chapter'].'.'.$row['schapter'].'.'.$row['sschapter'].'.'.$row['ssschapter'].'. '.$row['titulo'];     
  27.                 //Detalle de cada Nivel
  28.         elseif ($row['is_title'] == 0)
  29.             echo '<li>'.$row['titulo'];
  30.        
  31.         ObtenerNodosHijos($row['id'],$lang,$level+1);
  32.     }
  33.    
  34.     $smcFunc['db_free_result']($request);
  35. }

El resultado es el siguiente :

Cita:
<div><ul id="tree"><li>1. Generalidades<li>1.1. Instalaci�n y informaci�n<li>�D�nde encontrar componentes para Delphi?<li>�D�nde encontrar cursos y tutoriales en espa�ol para Delphi?<li>�Se pueden instalar m�s de una versi�n de Delphi en la misma m�quina?<li>1.2. Utilizaci�n del IDE<li>C�mo buscar ayuda dentro de Delphi<li>C�mo buscar ayuda en el API de Windows<li>C�mo desactivar el salto de las excepciones dentro de Delphi<li>C�mo formatear bien el c�digo<li>Crear nuestros propios modelos de c�digo<li>Grabar macros<li>Teclas de acceso r�pido<li>1.3. Depurando el c�digo (debug)<li>Evitar trazar el c�digo de una unidad<li>1.4. Varios<li>C�mo convertir c�digo C en c�digo Delphi<li>2. El Lenguaje<li>C�mo acceder a la variable privada de una clase<li>C�mo acceder a m�todos protegidos (protected) de una clase<li>Qu� es el t�rmino Self y c�mo usarlo<li>2.1. Algoritmos<li>Calcular el d�gito de control de un EAN13<li>Calcular el d�gito de control de una cuenta bancaria<li>Calcular la letra del NIF seg�n el DNI<li>Calcular pesos moleculares<li>Generar palabras aleatorias<li>Validar c�digos ISBN<li>Validar el n�mero de CUIT (Argentina)<li>Validar un CIF<li>Validar un n�mero de la Seguridad Social<li>2.2. Tipos de datos<li>C�mo usar las excepciones<li>IF inmediatos<li>�C�mo obtener la direcci�n de un objeto?<li>2.2. Num�ricos<li>A�adir separador de millares a un n�mero<li>C�mo cambiar el separador decimal por defecto<li>C�mo convertir un n�mero en hexadecimal<li>C�mo transformar un real a un entero<li>Comparaci�n entre reales<li>Convertir un n�mero en letras<li>Elevar un real X a la potencia Y<li>�C�mo redondear un real?<li>2.2. Cadenas de car�cteres<li>Ap�strofes (o comilla simple) en una cadena<li>C�mo acceder aun car�cter de una cadena conociendo su posici�n<li>C�mo conocer la longitud y altura en pixels de un texto<li>C�mo encontrar una cadena dentro de otra<li>C�mo reemplazar una cadena dentro de otra<li>C�mo saber la longitud de una cadena<li>C�mo transformar una cadena de un car�cter en una variable de tipo Char<li>Convertir los car�cteres especiales de HTML<li>Hacer un Case con un string<li>Transformar una medida inform�tica en string<li>2.3. Compilaci�n<li>C�mo resolver el problema de las referencias circulares<li>Comprobar la versi�n de Delphi con las directivas de compilaci�n<li>Crear una ventana a trav�s de su nombre de clase<li>La compilaci�n condicional<li>Tipolog�a de los c�digos de error internos de Delphi<li>�Por qu� Delphi pide un .pas y yo s�lo tengo un .dcu?<li>2.4. Varios<li>�Qu� es la VMT?<li>3. Interficie<li>3.1. Aplicaci�n<li>3.1. Gesti�n de la ejecuci�n<li>C�mo evitar dos ejecuciones simult�neas de una aplicaci�n<li>C�mo evitar que se "congele" una aplicaci�n en un proceso largo<li>C�mo hacer una pausa en la aplicaci�n<li>C�mo pasar a primer plano una aplicaci�n instanciada por segunda vez<li>C�mo realizar un Splah Screen<li>C�mo realizar un Splah Screen transparente<li>C�mo recuperar los par�metros pasados a la aplicaci�n<li>Enviar un trozo de texto al depurador<li>3.1. La propia aplicaci�n<li>Agilizar la carga de tu aplicaci�n<li>A�adir un ejecutable dentro de otro<li>Cambiar la prioridad de la aplicaci�n<li>Capturar nuestras propias hotkeys<li>C�mo modificar el aspecto de los controles seg�n un estado<li>C�mo no mostrar el icono de un formulario en la barra de herramientas<li>C�mo personalizar la forma de un formulario<li>C�mo recuperar el n�mero de versi�n de la aplicaci�n<li>Compartir datos entre dos aplicaciones propias<li>Comprimir el ejecutable<li>Evitar el cierre de la pantalla con ALT+F4 o Close<li>Tener una sola instancia de una ventana hija en una aplicaci�n<li>3.1. Aplicaciones externas<li>Cerrar una aplicaci�n externa<li>Cerrar una aplicaci�n externa sabiendo el nombre de su ejecutable<li>C�mo ejecutar una aplicaci�n des de la nuestra<li>Lanzar y controlar una aplicaci�n exterior<li>Recuperar el texto mostrado en la barra de t�tulo de cualquier ventana<li>Saber si una aplicaci�n est� en ejecuci�n<li>3.1. La aplicaci�n y Windows<li>Ejecutar una aplicaci�n al arrancar Windows<li>Ejecutar una aplicaci�n en otro contexto de seguridad<li>Impedir la suspensi�n del equipo<li>Modificar el t�tulo mostrado en la barra de herramientas<li>Mostrar tantos botones en la barra de tareas como forms abra la aplicaci�n<li>Ocultar la aplicaci�n de la barra de tareas<li>Poner un icono en el SysTray<li>3.1. Aplicaci�n c�nsola<li>A�adir la informaci�n de la versi�n a una aplicaci�n c�nsola<li>Asociar un handle a un programa c�nsola<li>Colores en una aplicaci�n c�nsola<li>Determinar si la salida est�ndar est� redirigida<li>Esconder la ventana de una aplicaci�n c�nsola<li>Hacer un "clear screen" en una aplicaci�n c�nsola<li>Interceptar el final de un programa c�nsola<li>Pedir al usuario la pulsaci�n de una tecla<li>Usar las redirecciones dentro de una aplicaci�n c�nsola<li>�Qu� es una aplicaci�n c�nsola?<li>3.2. Componentes<li>3.2. Generalidades e instalaci�n<li>C�mo instalar un ActiveX<li>C�mo instalar un componente<li>Distribuir y instalar un control ActiveX para mi aplicaci�n<li>�Qu� es la CLX?<li>�Qu� es la VCL?<li>3.2. Varios<li>Adjuntar ficheros PDF en una aplicaci�n Delphi<li>Alinear a la derecha el contenido de un TControl (TEdit,...)<li>C�mo hacer un salto de linea<li>Dar el foco a un componente<li>Error de dsgnintf en Delphi 6 o Delphi 7<li>Modificar una propiedad por su nombre<li>Poner un CheckBox en un cuadro de di�logo<li>3.2. Creaci�n din�mica y b�squeda<li>A�adir un evento a un componente creado din�micamente<li>Crear din�micamente un componente visual<li>El par�metro Sender<li>Encontrar un componente sabiendo su nombre<li>Recorrer todos los componentes de un formulario<li>3.2. Componentes de la VCL est�ndar<li>3.2. El componente TComboBox y TListBox<li>A�adir barra de desplazamiento horizontal a un TListBox<li>A�adir columnas a un ListBox<li>Cambiar el ancho del desplegable<li>Desplegar un ComboBox por c�digo<li>Items de diferentes colores en un ComboBox<li>Items de diferentes colores en un ListBox<li>Ordenar un ListBox mediante Drag&Drop<li>Poner im�genes en los Items<li>Posicionarse en un ListBox por c�digo<li>3.2. El componente TStringGrid<li>Alineaci�n de texto en las celdas<li>Borrar una l�nea o culumna de un TStringGrid<li>Centrar el texto en las celdas<li>Dibujar im�genes en las celdas de un StringGrid<li>Exportar un StringGrid a Excel<li>Exportar un StringGrid a un fichero<li>Imagen de fondo en un StringGrid<li>Impedir la edici�n de una celda de un TStringGrid<li>Pintado de l�neas en un StringGrid<li>Selecci�n de texto en una celda de un TStringGrid<li>Tener retornos de carro en una celda de un TStringGrid...</ul>
Mi intencion es crear un "TreeView" de 4 niveles con la funcion recursiva colocada en este mismo post en formato "Lista" o sea <ul><li></li></ul> como coloco en le primer post, no logro cerrar las etiquetas (</li> y </ul>) o abrir cuando se trata de una categoria (<ul>) etc etc. Les dejo la Tabla:
Código MySQL:
Ver original
  1. CREATE TABLE `faqs` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `lng_id` int(11) NOT NULL,
  4.   `id_rel` int(11) default '0', //Relacion
  5.   `is_title` tinyint(3) unsigned default '0', // si es titulo o no o mas bien categoria o no
  6.   `chapter` tinyint(4) NOT NULL, // No. Capitulo
  7.   `schapter` tinyint(4) default NULL, //No. Sub-capitulo
  8.   `sschapter` tinyint(4) default NULL, // No. Sub-Sub-Capitulo
  9.   `ssschapter` tinyint(4) default NULL, //No. Sub-Sub-Sub-capitulo
  10.   `titulo` varchar(150) character set utf8 NOT NULL,
  11.   `body` text character set utf8,
  12.   `autor` varchar(15) character set utf8 NOT NULL,
  13.   `autor_id` int(11) NOT NULL,
  14.   `autor_web` varchar(100) character set utf8 default NULL,
  15.   `creado` date default NULL,
  16.   `last_edition` date default NULL,
  17.   `last_editor` varchar(15) character set utf8 default NULL,
  18.   `last_editor_id` int(11) default NULL,
  19.   `edited_times` int(11) default '0',
  20.   `visitas` int(11) default '0',
  21.   `status` int(11) NOT NULL,
  22.   PRIMARY KEY  (`id`),
  23.   KEY `seccion` (`lng_id`),
  24.   KEY `relacion` (`id_rel`)
  25. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=259 ;

Espero me hayan entendido mejor.

Fleon XD
  #5 (permalink)  
Antiguo 18/04/2011, 09:25
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Problema con una Función en PHP

De nuevo yo, el asunto era mas sencillo de lo que pense, estaba re-inventando la rueda innecesariamente, el codigo queda asi:

Código PHP:
Ver original
  1. function ObtenerNodosHijos($parent, $lang)
  2. {
  3.     global $context, $txt, $modSettings, $scripturl, $smcFunc, $sourcedir, $db_prefix;
  4.    
  5.     //Obtenemos los faqs
  6.     $request = $smcFunc['db_query']('', "
  7.         SELECT *           
  8.         FROM faqs AS f         
  9.         WHERE f.id_rel = '".$parent."' AND f.lng_id = '".$lang."' AND f.status = 1
  10.         ORDER BY f.is_title, f.id_rel,f.chapter,f.schapter,f.sschapter,f.ssschapter,f.titulo"
  11.     );
  12.    
  13.     $row = $smcFunc['db_fetch_assoc']($request);
  14.     $total_rows = $smcFunc['db_num_rows']($request);
  15.    
  16.     //Comprobamos que no esta vacia
  17.     if ($total_rows > 0)
  18.     {
  19.         echo '<ul>';
  20.        
  21.         //mostramos los faqs
  22.         do
  23.         {
  24.             echo '<li>'.$row['chapter'] .'.'.$row['schapter'].'. '.$row['titulo'];
  25.            
  26.             //llamamos la funcion a si misma
  27.             ObtenerNodosHijos($row['id'],$lang);
  28.            
  29.             echo '</li>';
  30.         }
  31.    
  32.         while ($row = $smcFunc['db_fetch_assoc']($request));
  33.    
  34.         echo '</ul>';
  35.    
  36.     }
  37.    
  38.     $smcFunc['db_free_result']($request);
  39. }

y ya tengo un hermoso treeview, espero le sea util a alguien mas.

Fleon XD

Etiquetas: Ninguno
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 17:29.