Problemas de tu codigo:
1- Estabas haciendo 3 consultas, pudiendo hacer solo 1
2- Despues de cada consulta hacias 1 fetch_assoc innecesario
3- El orden de tus bucles estaba incorrecto
Aqui te dejo algo mas o menos corregido, por favor revisa todos los comentarios, hay cosas que tendras que modificar o no funcionara y, por favor, trata de entender como funciona (o como debiera funcionar
![Riendo](http://static.forosdelweb.com/fdwtheme/images/smilies/risa.png)
), espero que funcione (valga la rebuznancia).
Código php:
Ver original<?php
require_once('Connections/cersol.php');
include('connect.php');
// Si vas a usar mucho esta funcion mejor ubicala en otro archivo; ejemplo: include 'rutinas_comunes.php';
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") {
if($theValue == '') {
if($theType == 'defined')
return $theNotDefinedValue;
return "NULL";
}
switch ($theType) {
case "date":
case "text":
$theValue = "'$theValue'";
break;
case "long":
case "int":
$theValue = intval($theValue); break;
case "double":
$theValue = "'" . doubleval($theValue) . "'"; break;
case "defined":
$theValue = $theDefinedValue;
break;
}
return $theValue;
}
}
$colname_Recordset2 = "1";
if (isset($_GET['tipe']))
// Leemos las dos tablas en una sola consulta, uniendo por id de marca
$query_Recordset2 = "SELECT i.*, m.* FROM imp_cd i, marca_cd m WHERE i.tipo = $colname_Recordset2 AND m.id = i.id_marca ORDER BY i.id_marca";
if ($totalRows_Recordset2=="")
echo "No hay datos para mostrar";
else {
// Variables de Configuración -----------------------------------
// Define el numero de Filas
$n_filas=2;
$vert=ceil($tottal/$n_filas); // Redondeo hacia arriba siempre ceil(2.1) resulta en 3
$a=0;// Colocando el contador horizontal en 0
$i=1;// Colocando el contador vertical en 0 // No se usa
$w=0;//Colocando un contador para el mensaje de "No hay articulos en esta acategoria" // No se usa
// Usamos fetch_row porque tienes nombres de campo iguales en ambas tablas
$imps = $row; //Aqui estan las impresoras con las marcas
?>
<table width="356" border="0" cellspacing="0" cellpadding="0">
<tr>
<td scope="col">
<?php
$marca_actual = ''; // Solo para iniciar el proceso
foreach($imps as $imp) {
// OJO: Asigna los campos en el orden que los tengas en cada tabla, primero los de imp_cd y despues los de marca_cd
list($imp_id, $imp_nombre, $imp_foto, $imp_mascampos, $marca_id, $marca_nombre, $marca_logo, $marca_mascampos) = $imp; if($marca_actual != $imp['nombre']) { // Solo se imprimiran encabezados al cambiar de marca
$marca_actual = $imp['nombre'];
?>
<table width="480" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="182" rowspan="2" align="left" valign="top"><table width="157" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="left"><img src="logo/<?php echo $marca_logo; ?>" /></div></td>
</tr>
</table></td>
<td width="298" class="tituloMarca"><div align="left">
<?php echo strtoupper($marca_nombre); ?></div></td>
</tr>
<tr>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<?php
} // endif encabezado de marca
$w++; // $w = $w + 1; // es lo mismo
if ($a==0)
echo '<tr>';
$a=$a+1;
?>
<td width="180" height="15" border="0">
<p align="left" class="marronlink"><a href="ficha_camioneta.php?id="<?php echo $imp_id; ?>"><?php echo $imp_nombre; ?></a></p>
</td>
<?php
$r=$a;// contador remanente para listar imagenes sin exceso // WHAT???
if ($a >= $n_filas) {
$a=0;// reiniciando el contador horizontal
$i=$i+1;// aumentando el contador vertical // No se usa
echo '</tr>';
}
} // Fin de foreach $imps
if($a < $n_filas) // Se quedo abierto un <tr> y aqui se cierra
echo '</tr>';
?>
</table></td>
</tr>
<!-- Estos espacios para que? un div con height es mas efectivo y mas limpio -->
<tr>
<td colspan="2" align="center" valign="top"> </td>
</tr>
<tr>
<td colspan="2" align="center" valign="top"> </td>
</tr>
<!-- Estos espacios para que? un div con height es mas efectivo y mas limpio -->
</table></td>
</tr>
</table>
<p class="tituloQUIENES">Algun texto aqui</p>
<?php
// La siguiente linea te da error si no hubo resultados en la consulta
// --> mysql_free_result($Recordset1);
}
// Mejor cierra la conexion al finalizar el script:
?>