Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] colspan en tabla

Estas en el tema de colspan en tabla en el foro de PHP en Foros del Web. Hola a todos, estoy intentando hacer una tabla la cual debe tener esta estructura Código HTML: <table border= "1" cellspacing= "0" cellpadding= "0" > <tr> ...
  #1 (permalink)  
Antiguo 19/11/2019, 10:35
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
colspan en tabla

Hola a todos, estoy intentando hacer una tabla la cual debe tener esta estructura
Código HTML:
<table border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td width="94" colspan="4" valign="top"><p>CABECERA</p></td>
  </tr>
  <tr>
    <td width="18" valign="top"><p>1</p></td>
    <td width="27" valign="top"><p>2</p></td>
    <td width="22" valign="top"><p>3</p></td>
    <td width="27" valign="top"><p>4</p></td>
  </tr>
  <tr>
    <td width="94" colspan="4" valign="top"><p>&nbsp;</p></td>
  </tr>
</table> 

El problema que la cabecera la obtengo de una consulta y los datos pueden variar pueden ser 3 , 4 , 5 campos
Código PHP:
<?php  do { ?>
<? 
echo '<th width="30" colspan="2" >';

echo 
htmlentities($row_categorias['nombre']);
echo 
"</th></tr>";   

?>
<?php 
echo "<tr><td>1</td>";
      echo 
"<td>2</td>";
      echo    
"</tr>";
          } while (
$row_categoriasmysql_fetch_assoc($categorias)); ?>

El detalle es que solo la primera categoría sale con 1 y 2, posteriormente los resultados se ven en posición vertical

Ejemplo
Categoria A
1-------------2
Categoria B
1-------------2
Categoria C
1-------------2

Alguien puede indicarme como puedo tener una sola fila
Categoria A**** Categoria B****Categoria C
1-------------2****1-------------2****1-------------2
  #2 (permalink)  
Antiguo 19/11/2019, 12:59
Avatar de teslas  
Fecha de Ingreso: febrero-2013
Ubicación: Barcelona
Mensajes: 106
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: colspan en tabla

Si quieres utilizar todo en una sola fila sera:

echo "<tr><td>1 2 3 4</td></tr>";


...no se si era esto
  #3 (permalink)  
Antiguo 19/11/2019, 13:32
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: colspan en tabla

Cita:
Iniciado por teslas Ver Mensaje
Si quieres utilizar todo en una sola fila sera:

echo "<tr><td>1 2 3 4</td></tr>";


...no se si era esto
gracias, pero debe quedar asi



https://ibb.co/S7xqqSD
  #4 (permalink)  
Antiguo 19/11/2019, 15:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: colspan en tabla

Como realizas una consulta a la base de datos, solo necesitas obtener el número de registros mediante la función mysql_num_rows (te recomiendo migrar a la extensión MySQLi) y colocarlo como valor del atributo colspan de la celda de la cabecera.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 19/11/2019, 17:52
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: colspan en tabla

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
  #6 (permalink)  
Antiguo 19/11/2019, 20:49
 
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
  #7 (permalink)  
Antiguo 20/11/2019, 12:25
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: colspan en tabla

Cita:
Iniciado por tuadmin Ver Mensaje
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
TE AGRADEZCO MUCHO

Etiquetas: tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:03.