Sólo una pregunta, en tu código:
Código PHP:
<?php
//persona
$query4= "SELECT distinct * FROM datos WHERE ( id = $id )";
$persona = mysql_query( $query4 ) or die ( mysql_error() );
//conyugue
$query = "SELECT * FROM datos d INNER JOIN matrimonios m on (d.id=m.id) WHERE m.mrin IN(SELECT mrin FROM matrimonios WHERE id=$id AND mrin<>0) AND d.id<>$id";
$conyugue = mysql_query( $query ) or die ( mysql_error() );
//hijos
$query2 = "SELECT distinct * FROM datos d INNER JOIN matrimonios m ON d.id=m.id WHERE mrinpadres IN(SELECT mrin FROM matrimonios WHERE id=$id AND mrin<>0) AND d.id<>$id";
$hijos = mysql_query( $query2 ) or die ( mysql_error() );
echo "<table class=\"tabla\">";
echo "<tr><td bgcolor=\"#d1d0df\">";
if ( mysql_num_rows ( $persona ) > 0 )
{
echo "<font class=\"Estilo1\">Persona seleccionada: </font>";
$row = mysql_fetch_array( $persona );
// datos generales de la persona
$name = $row['apellido']; // nombre de la persona
$fena = $row['fena']; // fecha de nacimiento
$luna = $row['luna']; // lugar de nacimiento
$femu = $row['femu']; // fecha de muerte
$lumu = $row['lumu']; // lugar de muerte
if ( empty( $name ) )
{
echo "<font class=\"Estilo1\">".$name."</br></font>";
}
if ( empty( $fena ) )
{
echo "<font class=\"Estilo2\">Nacido el ".$fena." en ".$luna."</br></font>";
}
if ( empty( $femu ) )
{
echo "<font class=\"Estilo2\">Fallecido el ".$femu." en ".$lumu."</br></font>";
}
}
else
{
echo "<font class=\"Estilo1\">No se encontró información de esta persona.</font><p>";
exit; // no mostramos la tabla de sus conyugues e hijos
}
echo "</td></tr>";
echo "</br>";
//fin persona
//comienzo tabla conyugues
echo "<table class=\"tabla\">";
echo "<tr><td bgcolor=\"#D7D6E0\">";
if ( mysql_num_rows( $conyugue ) > 0 )
{
if ( mysql_num_rows( $conyugue ) == 1 ) //un solo matrimonio
{
// datos generales de conyugue
$id = $row['id']; // id de conyugue
$apellido = $row['apellido']; // apellido de conyugue
$fena = $row['fena']; // fecha de nacimiento de conyugue
$luna = $row['luna']; // lugar de nacimiento de conyugue
$femu = $row['femu']; // fecha de muerte de conyugue
$lumu = $row['lumu']; // lugar de muerte de conyugue
echo "<font class=\"Estilo1\">Casado con: </font>";
echo "<a class=\"links\" href=\"detalle.php?id=".$id."\">".$apellido."</a></br>";
if ( empty( $fena ) )
{
echo "<font class=\"Estilo2\">Nacido el ".$fena." en ".$luna."</br></font>";
}
if ( empty( $femu ) )
{
echo "<font class=\"Estilo2\">Fallecido el ".$femu." en ".$lumu."</br></font>";
}
if ( mysql_num_rows( $hijos ) > 0 ) // hijos del matrimonio
{
echo "<font class=\"Estilo1\">Hijos: </font><p>";
while ( $row = mysql_fetch_array ( $hijos ) )
{
$id = $row['id']; // id hijo
$apellido = $row['apellido']; // apellidos hijo
$fena = $row['fena']; // fecha de nacimiento hijo
$luna = $row['luna']; // lugar de nacimiento hijo
$femu = $row['femu']; // fecha de muerte hijo
$lumu = $row['lumu']; // lugar de muerte hijo
echo "<a class=\"links\" href=\"detalle.php?id=".$id."\">".$apellido."</a></br>";
if ( empty( $fena ) )
{
echo "<font class=\"Estilo2\">Nacido el: ".$fena." en ".$luna."</br></font>";
}
if ( empty( $femu ) )
{
echo "<font class=\"Estilo2\">Fallecido el: ".$femu." en ".$lumu."</br></font>";
}
}
}
else
{
echo "No se encontraron hijos para esta matrimonio";
}
}
else
{
$numero = count( $conyugue ); // MUCHOS MATRIMONIOS
$i = "1"; // contador de matrimonio
echo "<font class=\"Estilo1\">Casado con: </font><p>";
while ( $row = mysql_fetch_array ( $conyugue ) )
{
$id = $row['id']; // id de conyugue
$apellido = $row['apellido']; // apellido de conyugue
$fena = $row['fena']; // fecha de nacimiento de conyugue
$luna = $row['luna']; // lugar de nacimiento de conyugue
$femu = $row['femu']; // fecha de muerte de conyugue
$lumu = $row['lumu']; // lugar de muerte de conyugue
echo "<font class=\"Estilo1\">Matrimonio número ".$i.": </br></font>";
echo "<a class=\"links\" href=\"detalle.php?id=".$id."\">".$apellido."</a></br>";
if ( empty( $fena ) )
{
echo "<font class=\"Estilo2\">Nacido el ".$fena." en ".$luna."</br></font>";
}
if ( empty( $femu ) )
{
echo "<font class=\"Estilo2\">Fallecido el ".$femu." en ".$lumu."</br></font><p>";
}
$i++;
echo "<p>";
if ( mysql_num_rows( $hijos ) > 0 ) //hijos de cada matrimonio
{
echo "<font class=Estilo1>Hijos: </font><p>";
while ( $row2 = mysql_fetch_array( $hijos ) )
{
$id2 = $row['id']; // id hijo
$apellido2 = $row['apellido']; // apellidos hijo
$fena2 = $row['fena']; // fecha de nacimiento hijo
$luna2 = $row['luna']; // lugar de nacimiento hijo
$femu2 = $row['femu']; // fecha de muerte hijo
$lumu2 = $row['lumu']; // lugar de muerte hijo
echo "<a class=\"links\" href=\"detalle.php?id=".$id."\">".$apellido2."</a></br>";
if ( empty( $fena ) )
{
echo "<font class=\"Estilo2\">Nacido el: ".$fena2." en ".$luna2."</br></font>";
}
if ( empty( $femu ) )
{
echo "<font class=\"Estilo2\">Fallecido el: ".$femu2." en ".$lumu2."</br></font>";
}
}
echo "<p>";
}
}
}
}
else
{
echo "<font class=\"Estilo1\">No se encontró cónyugue de esta persona.</font><p>";
}
echo "</td></tr><p></table></br>";
echo "<font class=\"Estilo1\">Para buscar otro apellido cliqueá aquí</font></br><a class=\"links\" href=\"buscar.php\">Nueva búsqueda</a></br>";
?>
¿Donde estas colocando la comparacion del padre con el hijo?, es decir, antes de hacer el bucle:
while ( $row = mysql_fetch_array( $hijos ) )
deverías de poner un condicional donde le digas que imprima los hijos que correspondan con el apellido paterno del conyugue que estas imprimiendo. Algo parecido a esto:
Código PHP:
// suponiendo que los apellidos solo tienen dos palabras
$apellidos_conyugue = explode ( " ", $apellido );
$apellidos_hijos = exoplode ( " ", $apellido2 );
if ( $apellidos_conyugue[0] == $apellidos_hijos[0] )
{
// aquí adentro pones todo el código del while
}
Te puse entre comentarios que esto te funciona siempre y cuando el conyugue tenga los apellidos separados por un sólo espacio, ejemplo:
Torres Zavala // el apellido paterno a comparar será Torres
Pero si el apellido contiene más espacios no te va a funcionar, mira el sig. ejemplo:
De la Torre Gutierres
El apellido paterno contiene varios espacios (De la Torre) y en el if va intentar comparar sólo (De). Así que lo que te recomendaría para no tener estos problemas es que guardes los apellidos en campos separados algo así como apellidopaterno, apellidomaterno.
Bueno espero haberme dado a entender y esto te sirva por lo menos para darte una idea. Suerte