Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/11/2019, 20:49
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: colspan en tabla

Cita:
Iniciado por Briss Ver Mensaje
Gracias mira hice algunos cambios
Código PHP:
<?php  do { ?>
<?
echo "<th width=30 colspan=$total>";
echo 
htmlentities($row_categorias['nombre']);
echo 
"</th>";  

    
       
for (
$i 1$i 3$i++) {
    print 
"<tr><th>$i</th></tr>";

           
           
    echo 
"<tr>
    <td ><p>CABECERA DOS</p></td>
  </tr>
  <tr>
    <td  ><p>1</p></td>
    <td ><p>2</p></td>

  </tr>"
;
?>
<?php 
      
} while ($row_categoriasmysql_fetch_assoc($categorias));
                        
    
?>

PERO mi imagen sale asi
https://ibb.co/hMY1DfG


Y deberia ser asi
https://ibb.co/VmLxQnp


Los <tr> al sacarlos del do while quedan horizontales no sè que debo mover
La solucion puede que paresca mas complicada pero en realidad es mas Simple de lo que parece, Solo debes entender como funciona el Proceso de PHP

puedes Tener Categorias, 1 a la N, eso hara que cresca Horizontalmente, y tu HTML, tendrias que generar Primero las Cabeceras y su tamaño COLSPAN, y una vez termines las cabeceras IR por los datos, haber te ilustro con este codigo.

se diferencia un poco de tu ejemplo de tabla, pero para obtener el mismo resultado de tu tabla de ejemplo, solo has tus cambios, pero el proceso seria el Mismo
Código PHP:
<?php
$datos_mysql
=array(
    array(
"nombre"=>'Categoria A'),
    array(
"nombre"=>'Categoria B'),
    array(
"nombre"=>'Categoria C'),
);
//Ignora esta funcion es para ilustrarte el WHILE
function simular_mysql_fetch_assoc(&$categorias){
    static 
$pointer=0;
    if(isset(
$GLOBALS['datos_mysql'][$pointer])){
        return 
$GLOBALS['datos_mysql'][$pointer++];
    }
    return  
false;
}
//Esta funcion solo es un ejemplo para obtener los datos que van acompañando la categoria
function devuelve_elemenos_de_X_categoria($categoria_nombre){
    
$n_campos rand(2,5);
    
$datos_array=array();//suponiendo que proviene de una consulta MYSQL
    
for($i=0;$i<$n_campos;$i++){
        
$datos_array[$i] = rand(1,9);
    }
    return 
$datos_array;
}
//Creamos una Variable ARRAY que contendra los Campos debajo de cada Categoria
$campos_de_categorias=array();//Cada elemento del array, sera un TD de la TABLA

echo '<table border="1" cellspacing="0" cellpadding="0">';

//Primero Obtenemos Los 1 a la N campos de cada Categoria y 
//luego solo mostramos el Nombre de la categoria con su Colspan COrrespondiente
echo '  <tr>';//Iniciamos la FILA de las categorias
while($row_categorias simular_mysql_fetch_assoc($categorias)){
    
//Primero obtenemos los elementos de cada categoria para asi tener el COLSPAN
    
$N_COLSPAN 0;
    
$campos_de_categoria devuelve_elemenos_de_X_categoria($row_categorias['nombre']);
    foreach (
$campos_de_categoria as $key => $value) {
        
//llenamos nuestro Contenedor de Categorias $campos_de_categorias
        
$campos_de_categorias[] = $value;
        
$N_COLSPAN $N_COLSPAN +1;//O tambien $N_COLSPAN++;
    
}
    
//$N_COLSPAN = $N_COLSPAN == 0?1:$N_COLSPAN;
    //No puede haber un Colspan 0, por que el hecho de haya una categoria eso es 1 celda si o si
    
if($N_COLSPAN==0){
        
$N_COLSPAN=1;
        
$campos_de_categorias[]='';// un Campo Vacio
    
}
    
    echo 
'    <td width="94" colspan="'.$N_COLSPAN.'" valign="top"><p>'$row_categorias['nombre'] .'</p></td>';    
}
echo 
'  </tr>';
echo 
'  <tr>';//Iniciamos la FILA de los campos de categorias
foreach ($campos_de_categorias as  $td) {
    
//Un td que es dinamico no deberia tener un WIDTH 
    
echo '   <td valign="top"><p>'.$td.'</p></td>';
}
echo 
'  </tr>';


echo 
'  <tr>';
echo 
'    <th width="94" colspan="'.count($campos_de_categorias). '" valign="top"><p> Piesito de tabla</p></th>';
echo 
'  </tr>';
echo 
'</table>';
puedes probar ese codigo en este sitio WEB para que veas el resultado

http://phptester.net
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9