Foros del Web » Programando para Internet » PHP »

xque ??

Estas en el tema de xque ?? en el foro de PHP en Foros del Web. Tengo este codigo para mostrar las noticias existentes en mi BD. Código PHP:   <?             conectaserver ( "10.7.3.25" , "root" , "" , "marxismo" , ...
  #1 (permalink)  
Antiguo 28/02/2004, 20:17
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
xque ??

Tengo este codigo para mostrar las noticias existentes en mi BD.
Código PHP:
 <?
            conectaserver
("10.7.3.25","root","","marxismo","mysql");
            
$consulta mysql_query("SELECT * FROM noticias GROUP BY categoria ORDER BY idnoticia LIMIT 3");
            
$resultado mysql_fetch_array($consulta);
            switch (
$resultado['categoria']){
                case 
"1":
                 echo 
"<table width=100%  border=0 cellspacing=0 cellpadding=0>
                     <tr>
                    <td colspan=2><img src=img/nacionales.gif border=0 alt='Nacionales'></td>
                     </tr>"
;
                break;
                case 
"2":
                 echo 
"<table width=100%  border=0 cellspacing=0 cellpadding=0>
                     <tr>
                    <td colspan=2><img src=img/internacionales.gif border=0 alt='Internacionales'></td>
                     </tr>"
;
                break;
                case 
"3":
                 echo 
"<table width=100%  border=0 cellspacing=0 cellpadding=0>
                     <tr>
                    <td colspan=2><img src=img/asign.gif border=0 alt='De la asignatura'></td>
                     </tr>"
;
                break;
                case 
"4":
                 echo 
"<table width=100%  border=0 cellspacing=0 cellpadding=0>
                     <tr>
                    <td colspan=2><img src=img/escolares.gif border=0 alt='De la escuela'></td>
                     </tr>"
;
                break;
                default:
                  echo 
"<table width=100%  border=0 cellspacing=0 cellpadding=0>
                     <tr>
                    <td colspan=2>No hay categorías en la BD</td>
                     </tr>"
;
                break;
            }    
           while (
$result mysql_fetch_array($consulta)){
                      
$idlectura $result['idnoticia'];
                       echo 
"<tr>
                            <td rowspan=3><div align=center><img src=img/"
.$result['imagen']." alt='".$result['altimage']."' border=0 width=204 height=154></div></td>
                            <td valign=bottom><span class=newstitle>"
.$result['titulo']."</td>
                             </tr>
                             <tr>
                            <td valign=top><span class=txt>"
.$result['resumen']."</td>
                             </tr>
                             <tr>
                            <td valign=top><span class=txt><a href=noticias.php?accion=mostrar&cat="
.$categoria."&idnoticia=".$idlectura.">Ver más[+]</a></td>
                             </tr>"
;
            }
           echo 
"</table>";
          
?>
y solo me saca una noticia con categoria igual a 3 cuando tengo 4 noticias en la BD. Saben que es lo que pasa. ??
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 29/02/2004, 01:20
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
El problema que tienes es el GROUP BY, ya que esa funcion te reduce el resultado a UNA fila por cada categoria encontrada.



Si lo que quieres es hacer grupos VISUALES en tu tabla, deberás ORDER BY categoria y hacer que tu script se encargue de poner la estructura correcta en la tabla.
__________________
Manoloweb
  #3 (permalink)  
Antiguo 29/02/2004, 12:48
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Me podrías explicar como

Me podrías explicar un poco mejor, pos lo del GROUP BY lo entendí pero no entiendo lo que me mandas a hacer.
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 29/02/2004, 13:36
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Bueno, la verdad es que no entiendo muy bien tu codigo, o mas bien lo que quieres hacer... pero asumo que quieres tener tus noticias organizadas por categoría.

La forma en la que tienes el código hará algo muy extraño:

1.- Tomará la categoría de la primera fila de resultados y en base a ello construirá UN solo encabezado de categoría. Por ejemplo, si la primera es nacional, TODOS tus registros caerán dentro de ese encabezado, aun que tengas varias categorías en el resultado.

2.- Despues de haber creado el encabezado construye un loop que agrega filas, pero ya no ven que categoría tiene cada noticia.


Si lo que quieres lograr es que las noticias se agrupen por categorías, deberas meterle un poco más al script, sobre todo considerando que tienes imagenes diferentes para mostrar en el encabezado de cada una...

Código PHP:
<?php
//Primero haces un array con las imagenes de cada categoria
$img_cat=array (
1=>"img/nacionales.gif",
2=>"img/internacionales.gif",
3=>"img/asig.gif");

// Y los nombres de las mismas
$nom_cat=array (
1=>"Nacionales",
2=>"Internacionales",
3=>"De Asignatura");

// Luego corres tu query
conectaserver("10.7.3.25","root","","marxismo","mysql");
$consulta mysql_query("SELECT * FROM noticias  ORDER BY categoria , idnoticia");
// Inicias tu tabla
echo "<table width=100%  border=0 cellspacing=0 cellpadding=0>";

//Construyes la lista de noticias

$catshow=0;
while (
$resultado mysql_fetch_array($consulta)) {
// Aqui hacemos la particion de categorías
if ($catshow!=$resultado["categoria"]) {
$catshow=$resultado["categoria"];
echo 
"<tr>\n<td colspan=3><img src=\"".$img_cat[$resultado["categoria"]]."\" border=0 alt=\"".$nom_cat[$resultado["categoria"]]."\"></td>\n</tr>";
}

// Ahora si, sacas las lineas con las noticias...
    
echo "<tr>
    <td rowspan=3><div align=center><img src=img/"
.$result['imagen']." alt='".$result['altimage']."' border=0 width=204 height=154></div></td>
    <td valign=bottom><span class=newstitle>"
.$result['titulo']."</td>
     </tr>
     <tr>
    <td valign=top><span class=txt>"
.$result['resumen']."</td>
     </tr>
     <tr>
    <td valign=top><span class=txt><a href=noticias.php?accion=mostrar&cat="
.$categoria."&idnoticia=".$idlectura.">Ver más[+]</a></td>
     </tr>"
;
}

// Y cierras la tabla...
echo "</table>";
Esto debería funcionar, pero si no, ya solo le faltaría uno que otro ajustillo...

__________________
Manoloweb

Última edición por Manoloweb; 29/02/2004 a las 13:37
  #5 (permalink)  
Antiguo 29/02/2004, 13:45
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Gracias

Gracias manolo esa es la idea lo que no sabía como lo iba a hacer. Ahora mismo lo pruebo y veo que pasa pero me imagino que si lo hicistes tu esdo no falle.

Salu2

Cita:
A otra cosa tienes Yahoo Messenger me sería de gran utilidad tenerte entre mis contactos.
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 29/02/2004, 13:51
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Je! gracias por el cumplido

Por cierto, ahora que veo la forma de desplegar cada noticia me doy cuenta que probablemente te de algun error en el layout de la tabla, solo ajustalo a la forma en la que quieres mostrarlo... cuando lo hice pense que tenias algo así...

CATEGORIA
IMG|Resumen|Otra Cosa
IMG|Resumen|Otra Cosa
IMG|Resumen|Otra Cosa

CATEGORIA2
IMG|Resumen|Otra Cosa
IMG|Resumen|Otra Cosa


Pero ahora veo que tienes por ahi un rowspan y otras chucherías, asi que bastará con que le des el Colspan correcto al encabezado de las categorías...

Por otro lado, NO tengo YMS, pero tengo MSN, [email protected]

__________________
Manoloweb
  #7 (permalink)  
Antiguo 29/02/2004, 13:56
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Bueno lo que ..

Lo que me pasaba es que tengo una imagen para diferenciar las noticias, es decir, nacionales tiene como imagen superior la imagen de la noticia y encima de ella una que dice "Categoria Nacionales" y lo que me pasaba es que me la repetia por cada noticia nacional que tenia en la BD. Ahora pienso arregralo. En cuanto a lo del MSN creo que me será algo imposible pues vivo en Cuba y creo que acá eso está bloqueado porque se conecta a veces y además estoy saliendo por detrás del proxy de mi escuela y hace rato que no me conecto. De todas formas mi direccion de correo es [email protected] ahi puedes enviar lo que desees
__________________
Ing. Reynier Pérez Mira
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:56.