Foros del Web » Programando para Internet » PHP »

Ayuda con display PHP MySQL

Estas en el tema de Ayuda con display PHP MySQL en el foro de PHP en Foros del Web. Hola, estoy sacando datos de dos tablas (categorias / subcategorias) y obtengo algo asii : http://www.box.net/shared/jjvig0ysnk . Pero quisiera obtener el resultado de siguiente manera: ...
  #1 (permalink)  
Antiguo 09/02/2010, 16:44
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Ayuda con display PHP MySQL

Hola, estoy sacando datos de dos tablas (categorias / subcategorias) y obtengo algo asii : http://www.box.net/shared/jjvig0ysnk. Pero quisiera obtener el resultado de siguiente manera: http://www.box.net/shared/oo0u5ha0u8

Cualquier ayuda sera bienvenida
  #2 (permalink)  
Antiguo 09/02/2010, 17:16
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: Ayuda con display PHP MySQL

Puedes hacerlo con tabla, y controla la cantidad de columnas que quieres..

Ejemplo

Código PHP:
    <?php
        $cantidad_columnas 
2;
        
$sql "TU CONSULTA SQL PARA SABER LAS CATEGORIAS Y DEMAS";
        echo 
"<table>";
        echo 
"<tr>";
        
$i=1;
        while (
$row mysql_fetch_assoc($sql))
        {
             echo 
"<td>&nbsp;Link "$row['enlace'] ."</td>"
             
$i++;
             
//Ahora imprimimos nueva fila en caso que ya supere la canttidad de columnas                          
             
if ($i==$cantidad_columnas+1) { echo "</tr><tr>";$i=1;}
        }
        echo 
"</tr></table>";
    
?>
Es un ejemplo rapido, prueba a ver si te resulta
  #3 (permalink)  
Antiguo 09/02/2010, 20:45
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con display PHP MySQL

Funciona bien su coodigo, cuando lo aplico a las categorias o subcategorias:

Computer---------------Electronic --------------------- Services

Pero como puedo obtener:

Computer ----------------------- Electronic
PC------------------------------MP3


Código PHP:
//Sacar las categorias
$cat = mysql_query("SELECT * FROM cat_ad order by $cat_name") or die(mysql_error());
       while($row_parent = mysql_fetch_array($cat)){
           
           
//Sacar las subcategorias
$subcat = mysql_query("SELECT * FROM sub_cat_ad WHERE from_cat_ad = '".$row_parent['idCat_ad']."'") or die(mysql_error());
        

$count = mysql_num_rows($subcat);

//Si no hay una relacion entre cat y sub cat   imprimimos la categoria
 if($count == 0){?>
<h2><a href="#"><?php echo htmlspecialchars($row_parent[$cat_name]);?></a></h2>
            <?php }else{?>

//Sino imprimimos las cat y sus subcat
<h2><?php echo htmlspecialchars($row_parent[$cat_name]);?></h2>   
                <?php while($row_child mysql_fetch_array($subcat)){?>
                       <a href="#"><?php echo htmlspecialchars($row_child[$subcatName])." ,";?></a>
            <?php }}}?>
  #4 (permalink)  
Antiguo 09/02/2010, 20:58
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: Ayuda con display PHP MySQL

Prueba imprimir todo primero la categoria y subcategoria y cuando termina (cambio de categoria)
Primeramente para ello, orderna (ORDER BY id_categoria) en ambas tablas.. asi te aseguras que el ID_categoria = 1 sea el primero en ambas consultas y luego

que haga la parte de

Código PHP:
Ver original
  1. //Ahora imprimimos nueva fila en caso que ya supere la canttidad de columnas                          
  2.              if ($i==$cantidad_columnas+1) { echo "</tr><tr>";$i=1;}

es como tener
Código PHP:
Ver original
  1. while(categoria)
  2. {
  3.     echo 'Categoria'
  4.     while(subcategoria)
  5.     {
  6.            echo 'SubCategoria' //Si es que tiene
  7.     }
  8.     //aqui la comparacion si $i == cantidad de columnas a imprimir..
  9. }

Es una opcion, es cuestion de probar
  #5 (permalink)  
Antiguo 09/02/2010, 22:51
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con display PHP MySQL

Gracias otra vez vicram10. Ese codigo me da el siguiente resultado http://www.box.net/shared/jjvig0ysnk

Código PHP:
//Sacar las categorias
$cat mysql_query("SELECT * FROM cat_ad ORDER  BY $cat_name") or die(mysql_error());

       while(
$row_parent mysql_fetch_array($cat)){
                 
//Sacar las subcategorias
$subcat mysql_query("SELECT * FROM sub_cat_ad WHERE from_cat_ad = '".$row_parent['idCat_ad']."'") or die(mysql_error());
        
$count mysql_num_rows($subcat);

//Si no hay una relacion entre cat y sub cat   imprimimos la categoria
 
if($count == 0){

echo 
"<h2><a href=\"#\">"'.htmlspecialchars($row_parent[$cat_name])."'</a></h2>";

 }else{

//Sino imprimimos las cat y sus subcat
echo "
<h2>"'. htmlspecialchars($row_parent[$cat_name]).'"</h2>";   

 while($row_child = mysql_fetch_array($subcat)){

 echo "
<a href="#\">"'. htmlspecialchars($row_child[$subcatName]).'"</a>";
 } 
//end while subcat
//end if
}//end while cat 
El problema no consigo integrar tu coodigo que daria el siguiente: http://www.box.net/shared/oo0u5ha0u8
  #6 (permalink)  
Antiguo 10/02/2010, 07:52
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: Ayuda con display PHP MySQL

Prueba lo siguiente, no puedo tener una demo, por que no se como esta conformado tus tablas..

Código PHP:
<?php
//Sacar las categorias
$cat mysql_query("SELECT * FROM cat_ad ORDER  BY $cat_name") or die(mysql_error());
echo 
'
<table>
    <tr>'
;
$i 1//Bandera    
$columnas 2;//Cantidad de columnas por fila
while($row_parent mysql_fetch_array($cat)){                
    
//Sacar las subcategorias
    
$subcat mysql_query("SELECT * FROM sub_cat_ad WHERE from_cat_ad = '".$row_parent['idCat_ad']."'") or die(mysql_error());
    
$count mysql_num_rows($subcat);
    
//Si no hay una relacion entre cat y sub cat   imprimimos la categoria
    
if($count == 0)
    {
        echo 
"<td>
                <h2><a href=\"#\">"
.htmlspecialchars($row_parent[$cat_name])."</a></h2>
              </td>"
;    
    }else{
        
//Sino imprimimos las cat y sus subcat
        
echo "<td><h2>"htmlspecialchars($row_parent[$cat_name])."</h2></td>";       
        echo 
'<table>';//Creamos la tabla para la subcategoria
        
while($row_child mysql_fetch_array($subcat))
        {    
            echo 
"<tr><td><a href=\"#\">"htmlspecialchars($row_child[$subcatName])."</a></td></tr>";
        } 
//end while subcat
        //Cerramos la tabla creada
        
echo '</table>';
    } 
//end if
    
$i++;//Aumentamos la Bandera
    //Imprimimos la nueva categoria en otra fila si ya hay mas de 2 columnas
    //Se hace columna + 1 por que de esta forma siempre mantiene 2, sino se le agrega la cantidad de columnas se
    //desconfigura, porque, nose preguntenle a él xDDDDD
    
if ($i==$columnas+1)
    {
        echo 
"</tr><tr>";//Imprimimos la nueva fila cerrando la actual
        
$i=1;//igualamos la bandera a 1 para la siguiente fila
    
}
}
//end while cat  
echo '
    </tr>
</table>'
;

?>
Es de probar a ver si te funciona, como dije, no tengo una demo para saber si funciona o no, pero en teoria deberia de funcionar..

Pd.: debes ver la parte de Comilla simple y doble, por que habia algunos errores en este aspecto en tu codigo..
  #7 (permalink)  
Antiguo 10/02/2010, 10:03
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con display PHP MySQL

Gracias por seguir ayudándome, las tablas de las subcategorías salen, pero las categorías siguen saliendo en una sola columna : http://www.box.net/shared/9d6fb0erq2

La estructura de las tablas: categorías: idCat -- categorias
subcategorías: idSubCat ---- subcategorias --- from_cat
from_cat referencia a idCat.
  #8 (permalink)  
Antiguo 10/02/2010, 11:06
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: Ayuda con display PHP MySQL

Bueno solo fue un error mio...

Prueba con este y verifica los cambios hechos...

Solo cambiale en la parte de consultas y demas por que uso el mini framework que tengo...

Código PHP:
<?php
include("mysql.php");  //podes borrar por que a vos no te sirve este, es solo para mi
$db = new MySQL();  // igual que el anterior
//Sacar las categorias
$cat $db->consulta("SELECT id_cat, categoria FROM categorias ORDER  BY id_cat ASC");
echo 
'
<table align="center" style="border:1px solid" cellspacing="1" cellpadding="5">
    <tr>'
;
$i 1//Bandera    
$columnas 2;//Cantidad de columnas por fila
while($row_parent $db->fetch_array($cat)){                
    
//Sacar las subcategorias
    
$subcat $db->consulta("SELECT id_subcat, subcategoria, id_cat FROM subcategorias WHERE id_cat = ".$row_parent['id_cat']." ORDER BY id_cat ASC");
    
$count $db->num_rows($subcat);
    
//Si no hay una relacion entre cat y sub cat   imprimimos la categoria
    
if(empty($count))
    {
        echo 
"<td style=\"border:1px solid;background:#CCC\">
                <h2><a href=\"#\">"
.htmlspecialchars($row_parent['categoria'])."</a></h2>
              </td>"
;    
              
    }else{
        
//Sino imprimimos las cat y sus subcat
        
echo "<td style=\"border:1px solid;background:#CCC\"><h2>"htmlspecialchars($row_parent['categoria'])."</h2>";       
        echo 
"<ul>";//Creamos la tabla para la subcategoria
        
while($row_child $db->fetch_array($subcat))
        {    
            echo 
"<li><a href=\"#\">"htmlspecialchars($row_child['subcategoria'])."</a></li>";
        } 
//end while subcat
        //Cerramos la tabla creada
        
echo "</ul>";
        
//cerramos la columna
        
echo "</td>";
    } 
//end if
    
$i++;//Aumentamos la Bandera
    //Imprimimos la nueva categoria en otra fila si ya hay mas de 2 columnas
    //Se hace columna + 1 por que de esta forma siempre mantiene 2, sino se le agrega la cantidad de columnas se
    //desconfigura, porque, nose preguntenle a él xDDDDD
    
if ($i==$columnas+1)
    {
        echo 
"</tr><tr>";//Imprimimos la nueva fila cerrando la actual
        
$i=1;//igualamos la bandera a 1 para la siguiente fila
    
}
}
//end while cat  
echo '
    </tr>
</table>'
;

?>
De esta forma ya logramos lo que quieres..

El unico error era que cerraba el </td> y antes de comenzar las subcategorias y por eso creaba error, era poner ese cierre despues de imprimir todo y ya sale..

salu2
  #9 (permalink)  
Antiguo 10/02/2010, 12:44
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Ayuda con display PHP MySQL

Ahora si, funciona a perfección. gracias, muchas gracias hermano
  #10 (permalink)  
Antiguo 10/02/2010, 14:04
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: Ayuda con display PHP MySQL

de nada para eso estamos ;)

salu2

Etiquetas: display, mysql
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 18:10.