Ver Mensaje Individual
  #17 (permalink)  
Antiguo 09/04/2005, 02:31
NaughtyFer
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Como veis la estructura de las tablas es muy simple, y con muy poquitos campos. Por cierto, el ID_Int (Identificador de la intervencion, es un entero autoincrementable, OK?)

Y ahí os van las famosas dos funciones, y las primeras líneas del programa principal. A ver si veis algo raro!

function ConstruirArbol($bd, $NombreTema)
{
$sql = "SELECT ID_Int, Titulo_intervencion FROM INICIAL NATURAL JOIN INTERVENCION_EN_FORO WHERE Titulo_tema = :NombreTema";
ora_parse($bd, $sql, 0);
ora_bind($bd, "NombreTema", ":NombreTema", 128, 1);
ora_exec($bd);
if (ora_fetch($bd))
{
$ID = trim(ora_getcolumn($bd, 0));
$TituloIntPadre = trim(ora_getcolumn($bd, 1));
if ($TituloIntPadre != NULL)
{
print("<A HREF=Pag_3C-Dcho-Abajo.php?TituloIntervencionPadre=".urlencode($Tit uloIntPadre)."&ID_Int_Padre=$ID Target=Marco3C-DchoInf>$TituloIntPadre</A>");
$prefijo = "&nbsp;&nbsp;|---";
PintarHijos($bd, $ID, $prefijo);
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
function PintarHijos(&$bd, $ID_Intervencion, $pref)
{
global $ID;
$ID = $ID_Intervencion;
$sql2 = "SELECT ID_Int, Titulo_Intervencion FROM REPLICA WHERE (ID_Int_precede = :ID)";
ora_parse($bd, $sql2, 0);
ora_bind($bd, "ID", ":ID", 10, 1);
ora_exec($bd);
ora_fetch($bd);
if (ora_numrows($bd) != 0)
{
$ID_Int_Replica = trim(ora_getcolumn($bd, 0));
$Titulo_Int_Replica = trim(ora_getcolumn($bd, 1));
print("<BR>".$pref."<A HREF=Pag_3C-Dcho-Abajo.php?TituloIntervencionPadre=".urlencode($Tit ulo_Int_Replica)."&ID_Int_Padre=$ID_Int_Replica Target=Marco3C-DchoInf> $Titulo_Int_Replica </A>");
PintarHijos($bd, $ID_Int_Replica, $pref."&nbsp;&nbsp;|---");
}
}
///////////////////////////////////////////////////////////////////////////////////////////////

Y el script comienza así:
<?php
if (isset($_GET['NombreTema']))
{
$NombreTema = $_GET['NombreTema'];
print("<BR><p ALIGN=CENTER><b><u><i><font size=5 color=#FFCC66>Tema del Foro : $NombreTema</font></i></u> </b></p>");
require("Conectar_a_BD.php");
if ($conexion)
{
$bd = ora_open($conexion);
$num_interv = ConstruirArbol($bd, $NombreTema);
...........
...........
}
?>

A tener en cuenta:
- Al pinchar sobre el título de la intervención, que es un hipervínculo, se muestra en un marco inferior (en la misma página) el texto asociado a esa intervención.
- Ora_numrows, NO devuelve el número total de filas recuperadas, sino el identificador de cada fila (el rownum).
- Declaré $ID como global porque de no hacerlo así, me daba problemas el comando ora_exec.
- Cuando escribo: require("Conectar_a_BD.php"); en realidad estoy llamando a dos líneas de código que hacen: $conexion = ora_logon(User, PW);

Siento que sea tanto código. Por esto era tan reacio a escribirlo todo, e intentaba explicaroslo con palabras o pseudocódigo.

Bueno, pues si veis alguna burrada que yo no haya visto, comentádmelo por favor.

Muchísimas gracias! Hasta el próximo!!