Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/02/2004, 14:09
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, asi de cabeza se me ocurre:
Código PHP:
echo "A<br>";  // cabecera para A
$letra_actual=65;
while(
$row=mysql_fetch_Array($result)) {
  
$reg_actual=strtoupper(substr($row["nombre"],0,1));  // letra del registro actual

  
if ($reg_actual!=$letra_actual) {
    for (
$i=$letra_actual+1;$i<=$reg_actual;$i++) {
      echo 
$i.'<br>';  // las distintas cabeceras
    
}
    
$letra_actual=$reg_actual;
  }

  echo 
$row['nombre'];  // y el resto de campos del registro.
}
if (
90!=$letra_actual) {
// para mostrar hasta la Z
  
for ($i=$letra_actual;$i<=90;$i++) {
    echo 
$i.'<br>';  // las distintas cabeceras
  
}

No lo he probado, asi que puede fallar por todos sitios.

La teoria es almacenar 2 "punteros", uno con la letra mostrada en el titulo (A-Z) que se ha mostrado el ultimo, y otro con la letra del registro actual. Si no coinciden, se muestran los titulos desde la siguiente a la ultimo titulo mostrado, hasta el actual del registro. Y se iguala los dos valores. Asi el siguiente registro coincide con el ultimo titulo y no se muestran mas titulos. Y al final se muestran los titulos que van despues del ultimo registro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.