Foros del Web » Programando para Internet » PHP »

No mosotrar imagen luego del último registro

Estas en el tema de No mosotrar imagen luego del último registro en el foro de PHP en Foros del Web. Gente: no sé cómo resolver lo siguiente: quiero que me muestre tres los tres últimos registros de la db, y que separe entre uno y ...
  #1 (permalink)  
Antiguo 21/01/2009, 08:37
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
No mosotrar imagen luego del último registro

Gente: no sé cómo resolver lo siguiente: quiero que me muestre tres los tres últimos registros de la db, y que separe entre uno y otro con una imagen (puntitos.jpg), pero que cuando muestre el último, es decir, el tercero, no ponga esta línea. Es decir:
$sql2 = "SELECT * FROM sitios where 1 ORDER BY fecha DESC LIMIT 3";
$result2 = mysql_query($sql2, $link);

if ($row = mysql_fetch_array($result2)){
mysql_field_seek($result2,0);
do {

echo"
<span class=\"titulo\">".$row['nombre'].":</span>
".$row['rsmn'].". <a class=\"vermas\" href='".$row['url']."' target='_blank'>Visitar Web</a>
<img src=\"elementos/puntitos.jpg\" />
";
}
while ($row = mysql_fetch_array($result2));
}

Tengo esa consulta, que lo que hace es mostrar el separador luego de cada registro, pero el último también me queda con un separador, y no quisiera que esté ahí.

¿Alguna idea?

Gracias.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 21/01/2009, 08:54
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: No mosotrar imagen luego del último registro

Hola arielcasanova,

Mira el problema es que tu do while hace todo lo que tienes dentro de el hasta que termine todos los registros, que quiere decir esto, bueno pues que si tienes 3 registros te imprimira la imagen 3 veces, lo que tal vez puedes hacer es poner un if con el total de registros -1 en la imagen para que como en el ejemplo que te mencione te imprima solo dos veces la imagen, puede ser algo como esto:

Código:
...

$total_reg = mysql_num_rows($sql2);
$i=1;


do {

echo"
<span class=\"titulo\">".$row['nombre'].":</span> 
".$row['rsmn'].". <a class=\"vermas\" href='".$row['url']."' target='_blank'>Visitar Web</a>";
if($i==($total_reg-1)){
    echo "<img src=\"elementos/puntitos.jpg\" /> ";
}

}
while ($row = mysql_fetch_array($result2));
Saludos!!!
__________________
"Eres grande por que caminas entre gigantes"
  #3 (permalink)  
Antiguo 21/01/2009, 09:43
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: No mosotrar imagen luego del último registro

Excelente, muchas gracias.
Entiendo la idea, pero mysql_num_rows($sql2); no me funciona (not valid no sé qué).
pero busco en el manual php y pruebo, porque debe ser algo sencillo.
muchas gracias de nuevo.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 21/01/2009, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: No mosotrar imagen luego del último registro

Tienes que usar la función mysql_num_rows, sobre el resultado de tu consulta, ferbux te lo dejo de ejemplo pero viendo tu código la variable es $result2, pruebalo y adaptalo a tu código, no solamente hagas copy / paste.

Saludos
  #5 (permalink)  
Antiguo 22/01/2009, 05:10
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Claro Gator! No soy taaaaaan poco conocedor del lenguaje. Eso lo hice, pero el error me lo da igual (si te fijas, en la respuesta puse $sql2, como en mi script). Aún no lo pude analizar, pero en breve vengo con la respuesta

Me da el siguiente error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home2/emporio/public_html/pruebas/emporia/index.php on line 119

y la línea 119 dice: $total_reg = mysql_num_rows($sql2);

es por eso que... miré bien todo y gator, tienes razón,y sí, soy bastante improvisado (en realidad, apurado, jeje) Lo que entendí que me decías era que le ponía el sql sin el 2 que es como numeré a mi sentencia, cuando realidad, debería haber pedido el num_rows del resultado de la ejecución de esa sentencia.
cambié la línea por $total_reg = mysql_num_rows($result2); y ya no me da error.
Pero tampoco imprime la imagen.
Se me ocurre que: i=1; le estamos diciendo que si el num_rows - 1 es igual a i, debe imprimri... creo que habría que decirle que lo imprima si es mayor o igual, y no si es menor... ¿no? ahora pruebo y les cuento.

Le puse que imprima el total reg luego de cada registro, y siempre da 3, tanto después del primero, como del segundo, como del tercero... es decir, da el total de registros que va a imprimir, por lo tanto, total_reg-1 siempre va a dar 2, o sea, nunca va a ser igual ni menor que i (que está definida como 1) y por tanto, el if para imprimir la imagen no funciona...
¿alguna pista?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Última edición por GatorV; 22/01/2009 a las 10:29
  #6 (permalink)  
Antiguo 22/01/2009, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: No mosotrar imagen luego del último registro

Lo que pasa es que te falta incrementar el $i en cada vuelta de tu do/while para que el número vaya incrementando así al llegar a 3 ya no se va a cumplir y no va a imprimir lo que quieres.

Saludos
  #7 (permalink)  
Antiguo 23/01/2009, 05:35
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: No mosotrar imagen luego del último registro

algo así como $i=$i+1?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #8 (permalink)  
Antiguo 23/01/2009, 05:42
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: No mosotrar imagen luego del último registro

eh! funcionó
gracias gatorv, ferbux

me quedó así

Código PHP:
         $sql2 "SELECT * FROM sitios ORDER BY fecha DESC LIMIT 3"
                         
$result2 mysql_query($sql2$link); 
    
                     if (
$row mysql_fetch_array($result2)){ 
                         
mysql_field_seek($result2,0); 
                    
$total_reg mysql_num_rows($result2);
$i=1;

     do { 

$i=$i+1;                         echo"
                        <span class=\"titulo\">"
.$row['nombre'].":</span>  
                        "
.$row['rsmn'].". <a class=\"vermas\" href='".$row['url']."' target='_blank'>Visitar Web</a>
                            "
;    if($i==($total_reg-1)){
    echo 
"<img src=\"elementos/puntitos.jpg\" /> ";
}

                         }
                         while (
$row mysql_fetch_array($result2));                          
                         } 
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
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 13:29.