Ik heb beperkt ervaring met PHP/MySQL, maar heb er wel een volledige website mee gebouwd (bpsdg.nl). Ik ben aan het experimenteren hoe ik een bepaalde pagina meer dynamisch kan maken. Onderstaande code is gebaseerd op iets dergelijks wat ik wil bereiken. Dus met name de function "printree" heb ik niet zelf bedacht, maar ergens opgepikt en wat aangepast. Code ziet er misschien nog wat rommelig uit, maar het is ook nog maar een experiment.
De function faalt op de regel "$rstpersonen = mysql_query($query_rstpersonen, $gen_db) or die(mysql_error());".
Als ik exact dezelfde 3 regels na "if ($N < $max) {" bovenaan direct achter "mysql_select_db($database_gen_db, $gen_db);" plaats, dan wordt op dat moment de query wel goed uitgevoerd. Maar het is dus de bedoelng dat de query recursief in de function meerdere keren wordt uitgevoerd. Maar faalt al bij de eerste keer.
Ik ben er al dagen mee bezig en zie gewoon niet wat ik fout doe. Iemand een idee?
<?php
require_once('Connections/gen_db.php');
$colname_rstPersoonGegevens = "51"; //Default
if (isset($_GET['pID'])) {
$colname_rstPersoonGegevens = (get_magic_quotes_gpc()) ? $_GET['pID'] : addslashes($_GET['pID']);
}
mysql_select_db($database_gen_db, $gen_db);
function printTree($id, $name, $N, $max) {
##########################################
# recursive routine to print cells in
# pedigree chart
#
# Parameters
# - id
# - name
# - generation number
# - max previous generations to display
##########################################
if ($name == '') $name = ' ';
// calculate how many rows the cell should span
$rspan = pow(2, $max-$N);
if ($rspan > 1)
echo "\t<td height='40' rowspan='$rspan' >$name</td>\n";
else
echo "\t<td>$name</td>\n";
// check for last cell in row
if ($N == $max) echo "</tr>\n<tr>\n";
// print parent trees, sire then dam
if ($N < $max) {
$query_rstpersonen = "SELECT Vaders.Id as Vader, Moeders.Id as Moeder, Vaders.Voornaam as VaderNaam, Moeders.Voornaam as MoederNaam FROM tblPersonen Inner Join tblPersonen as Vaders ON Vaders.Id = tblPersonen.Vader Inner Join tblPersonen as Moeders ON Moeders.Id = tblPersonen.Moeder WHERE tblPersonen.Id = ".$id;
$rstpersonen = mysql_query($query_rstpersonen, $gen_db) or die(mysql_error());
$row_rstpersonen = mysql_fetch_assoc($rstpersonen);
list($s, $d, $sn, $dn) = $row_rstpersonen;
printTree($s, $sn, $N+1, $max);
printTree($d, $dn, $N+1, $max);
}
}
function pedigree($id, $name) {
$max = 6;
echo "<TABLE border='1'>\n";
echo "<tr>\n";
$i=1;
while($i<($max+1))
{
echo "<th width='160'>".$i."</th>\n";
$i++;
}
echo "</tr>\n<tr>\n";
printTree($id, $name, 0, $max-1);
echo "<td colspan='5'>Produced by Barand</td></tr>\n</TABLE>\n";
}
?>
<HTML>
<head>
<title>Kwartierstaat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
<link href="stijlen.css" rel="stylesheet" type="text/css">
<link href="tootltip.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style12 {font-size: 12px}
-->
</style>
</head>
<BODY>
<?php
pedigree($colname_rstPersoonGegevens,'Melody');
?>
</BODY>
</HTML>