Foros del Web » Programando para Internet » PHP »

mostrar todos los registros de una tabla mysql y al último ponerle un estilo distinto

Estas en el tema de mostrar todos los registros de una tabla mysql y al último ponerle un estilo distinto en el foro de PHP en Foros del Web. Hola chicos!! Tengo una duda que no sé muy bien si se puede hacer. Quiero que al hacer un select a una tabla mysql me ...
  #1 (permalink)  
Antiguo 28/12/2012, 10:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 11
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta mostrar todos los registros de una tabla mysql y al último ponerle un estilo distinto

Hola chicos!!
Tengo una duda que no sé muy bien si se puede hacer.

Quiero que al hacer un select a una tabla mysql me liste en un listado todos los registros, pero cuando llegue al último registro quiero añadir un estilo distinto al marcado, por ejemplo:

<ul>
<li>registro 1</li>
<li>registro 2</li>
<li class="clase"> utlimo registro </li>

como hago un bucle while y se repiten los registros en el marcado claro, no tengo manera de poder saber cuando es el último registro para poder cambiarle la clase.
Sabeis de alguna forma? o es totalmente imposible lo que estoy pidiendo??

Muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 28/12/2012, 10:37
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Lo único que se me ocurre en este momento es crear un contador que aumente con cada iteración del bucle... y dentro del bucle crear una condición que verifique si el contador es igual a mysql_num_rows, cuando la condición se cumple cambiar el atributo class de la etiqueta li
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 28/12/2012, 10:38
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 21 años, 5 meses
Puntos: 6
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

pues asi, sin aplicar otras consultas yo desconozco si es posible

pero tienes otras formas sencillas de hacerlo, usando una consulta mas.

si antes de hacer tu SELECT, metes otra SELECT igual pero para hacer un conteo de resultados, ya tienes el numero exacto de resultados y simplemente usando un

Código:
<li <?php if ($resultado==3){echo 'class="clase"';}?>> utlimo registro </li>
no olvides que $resultado=$resultado+1;
que si no vamos mal :)

otra opcion si no quieres hacer un select para contar resultados, es hacer un select para ver el ID del ULTIMO resultado. (sencillo ¿no?)

luego el php es mas simple
Código:
<li <?php if ($id==XXX){echo 'class="clase"';}?>> utlimo registro </li>
y te ahorras de ir sumando 1 buscando el ultimo
  #4 (permalink)  
Antiguo 28/12/2012, 12:31
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

muy de acuerdo con jotaincubus

Salu2
__________________
No hay mail que por internet no venga
  #5 (permalink)  
Antiguo 28/12/2012, 14:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 11
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Eii! muchas gracias!
Bueno, me vais a decir que soy tonta del culo pero no tengo ni idea de como plantear lo que me decis.
Mi código es este:

$rs=mysql_query("SELECT * FROM $tabla_promo WHERE visible='1' ORDER BY orden ASC") or die(mysql_error());
$cant = mysql_num_rows($rs);

if ($cant <= 0) echo "No hay promociones para mostrar";

else {
$ii=-1;

while (($ii+1) < $cant) {
$ii++;
$item_url = mysql_result($rs,$ii,"url");
$item_titulo = mysql_result($rs,$ii,"titulo");
$item_descripcion = mysql_result($rs,$ii,"descripcion");
$item_enlace = mysql_result($rs,$ii,"enlace");
$item_imagen1 = mysql_result($rs,$ii,"imagen1");
$item_imagenm1 = $promo_upload . mysql_result($rs,$ii,"imagen1");
$item_imagen2 = mysql_result($rs,$ii,"imagen2");
$item_imagenm2 = $promo_upload . mysql_result($rs,$ii,"imagen2");

tengo que hacer un SELECT COUNT(*) como dice jotaincubus, me hablas de un contador, te refieres a esto?
o te refieres a hacer un bucle for como esto por ejemplo??
for ($i=0;$i<count($fcategoria_url);$i++)

No sé muy bien como implementarlo en mi código.
Me podeis echar una mano? si no es mucho pedir claro!
O si teneis alguna cosilla hecha o donde pueda mirarlo, es que si no lo veo no lo entiendo..

Última edición por beutxita; 28/12/2012 a las 14:40
  #6 (permalink)  
Antiguo 28/12/2012, 14:57
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Lo hice a las carreras a modo de ejemplo, mírelo y estúdielo linea por linea y adaptelo al código suyo...

Código PHP:
Ver original
  1. <?php
  2. $sql = ('SELECT * FROM una_tabla');
  3. $ejecutar_sql = mysql_query($sql);
  4. $numero_registros = mysql_num_rows($ejecutar_sql);
  5.  
  6. if($numero_registros == 0)
  7. {
  8.     echo 'No existen resultados en la base de datos...!';
  9. }
  10. else
  11. {
  12.     $contador = 0;
  13.     while($resultado = mysql_fetch_array($ejecutar_sql))
  14.     {
  15.         ++$contador;
  16.         if($contador != $$numero_registros)
  17.         {
  18.             $color = 'style="color:black"';
  19.         }
  20.         else
  21.         {
  22.             $color = 'style="color:red"';
  23.         }
  24.         echo '<li'.$color.'>'.$resultado['campo'].'</li>';
  25.     }  
  26. }
  27. ?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 29/12/2012, 07:18
 
Fecha de Ingreso: septiembre-2009
Mensajes: 11
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Ok!
Muchisimas gracias!! lo voy a adaptar y te cuento!
Gracias de nuevo!!
  #8 (permalink)  
Antiguo 29/12/2012, 07:56
 
Fecha de Ingreso: diciembre-2012
Mensajes: 223
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Tu cuentas todos los registros que tienes y que dira por ejemplo tienes 100 pues al tu haces

$variable = $numero;

La variable $numero cuenta todos los registros que hay (La cantidas) y pones un if

if($variable = mysqli_fetch_array($numero)){
// Los demas registros
}
if($variable = $numero);
// Ultimo registro
}
  #9 (permalink)  
Antiguo 30/12/2012, 07:14
 
Fecha de Ingreso: septiembre-2009
Mensajes: 11
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Bueno chicos!
he probado el codigo y aunque lo he modificado bastante para que me funcione como yo quiero, me lo hace bien, pero el último registro no me lo saca, lo tiene en cuenta pero no lo muestra.
Lo quería adaptar a un script de imagenes, que en realidad lo que queria era quitar una coma en el último registro porque sino el script no funciona en IE7 ni IE8 os dejo el código para que veais lo que he hecho y me comenteis que estoy haciendo mal.
Millones de gracias a todos de verdad!

<?php


$rs=mysql_query("SELECT * FROM $tabla_promo WHERE visible='1' ORDER BY orden ASC") or die(mysql_error());
$cant = mysql_num_rows($rs);

if ($cant == 0) echo "No hay promociones para mostrar";

else {
$contador = 0;

while ($contador < $cant) {
++$contador;

$item_url = mysql_result($rs,$contador,"url");
$item_titulo = mysql_result($rs,$contador,"titulo");
$item_descripcion = mysql_result($rs,$contador,"descripcion");
$item_enlace = mysql_result($rs,$contador,"enlace");
$item_imagen1 = mysql_result($rs,$contador,"imagen1");
$item_imagenm1 = $promo_upload . mysql_result($rs,$contador,"imagen1");
$item_imagen2 = mysql_result($rs,$contador,"imagen2");
$item_imagenm2 = $promo_upload . mysql_result($rs,$contador,"imagen2");

if($contador != $cant)
{
$coma= ',';
}
else
{
$coma= '';
}

?>
{image : '<?=$item_imagenm1;?>', title : '<h2><?=$item_titulo;?></h2><?=$item_descripcion;?><div class="sticker" style="background-image:url(<?=$item_imagenm2;?>)"></div>', url : '<?=$item_enlace;?>'}<? echo $coma; ?>


<? } } ?>
  #10 (permalink)  
Antiguo 30/12/2012, 08:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 11
Antigüedad: 14 años, 6 meses
Puntos: 0
Mensaje Respuesta: mostrar todos los registros de una tabla mysql y al último ponerle un esti

Ei!!

ya lo he arreglado!!
Madre mia que tonta! era un fallo muuuu tonto, os lo dejo aqui por si le sirve a alguien:

<?php


$rs=mysql_query("SELECT * FROM $tabla_promo WHERE visible='1' ORDER BY orden ASC") or die(mysql_error());
$cant = mysql_num_rows($rs);

if ($cant == 0) echo "No hay promociones para mostrar";

else {
$contador = -1;

while (($contador+1) < $cant) {

$contador++;

$item_url = mysql_result($rs,$contador,"url");
$item_titulo = mysql_result($rs,$contador,"titulo");
$item_descripcion = mysql_result($rs,$contador,"descripcion");
$item_enlace = mysql_result($rs,$contador,"enlace");
$item_imagen1 = mysql_result($rs,$contador,"imagen1");
$item_imagenm1 = $promo_upload . mysql_result($rs,$contador,"imagen1");
$item_imagen2 = mysql_result($rs,$contador,"imagen2");
$item_imagenm2 = $promo_upload . mysql_result($rs,$contador,"imagen2");

if(($contador+1) != $cant)
{
$coma = ',';
}
else
{
$coma = '';
}



?>



{image : '<?=$item_imagenm1;?>', title : '<h2><?=$item_titulo;?></h2><?=$item_descripcion;?><div class="sticker" style="background-image:url(<?=$item_imagenm2;?>)"></div>', url : '<?=$item_enlace;?>'}<? echo $coma; ?>


<? } } ?>


Muchisimas gracias a todos!!
sin vosotros no podría haberlo conseguido!!
Si os puedo ayudar en algo no dudeis en contactar conmigo!!

Saludos,

Etiquetas: distinto, estilo, mysql, registros, 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 08:30.