Foros del Web » Programando para Internet » PHP »

Duda abecedario generico

Estas en el tema de Duda abecedario generico en el foro de PHP en Foros del Web. Hola buenos días, llevo un rato intentando encontrar una lógica para un menu que he montado. Código PHP: for ( $i = A ;  $i != ...
  #1 (permalink)  
Antiguo 28/04/2011, 04:08
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Duda abecedario generico

Hola buenos días, llevo un rato intentando encontrar una lógica para un menu que he montado.

Código PHP:
for ($i=A$i!=AA$i++){
                    
                    if(
$letra == $i){
                    
                        
$active 'active';
                                            
                    }else{
                    
                        
$active '';
                    
                    }
                    
                    

                    
                    echo 
'<a class="'.$active.'"  href="llistat?letra='.$i.'">'.$i.'</a>';


                                        
                    
                    } 

Con esto genero el menú, y si pinchan en una letra se queda marcada, todo correcto.

Si cogéis ese código y lo pegáis tal cual, podéis verlo en funcionamiento.

Ahora mi duda es la siguiente, yo estoy obteniendo los resultados de la base de datos, si pinchas en la letra A, salen todos los resultados que empiezen con la letra A

Código PHP:
$sql "SELECT * 
FROM  `tabla` WHERE campo LIKE '{$letra}%' ORDER By campo"

Todo perfecto, ahora quiero que en el menu que he generado, si no existe ningun resultado que empieze con A, esta letra no se pueda pinchar.

Alguna sugerencia ? gracias !
  #2 (permalink)  
Antiguo 28/04/2011, 05:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

Solo es cuestión de que cada vez que generes una letra verifiques antes en la base de datos, si hay algún dato. Algo como
Código PHP:
Ver original
  1. <?php
  2. // conexiones y datos necesarios anteriores...
  3. $letters = array();
  4. foreach(range('a','z') as $v){
  5.     $sql = "SELECT COUNT(*) counter FROM tabla WHERE campo LIKE '{$v}%'";
  6.     $qry = mysql_query($sql) or die(mysql_error());
  7.     $res = mysql_fetch_assoc($qry);
  8.     $letters[$v] = ($res['counter'] > 0 ? 'active' : null);
  9. }
  10. ?>
  11.  
  12. <ul>
  13. <?php foreach($letters as $k => $v): ?>
  14.     <li>
  15.         <?php if(!empty($v)): ?>
  16.             <a href="#" class="<?php echo $v; ?>"><?php echo $k; ?></a>
  17.         <?php else: ?>
  18.             <?php echo $k; ?>
  19.         <?php endif; ?>
  20.     </li>
  21. <?php endforeach; ?>
  22. </ul>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 02/05/2011, 08:59
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

Muchas gracias por contestar, un código impresionante la verdad, muy bien razonado.

Lo he implementado a lo que tengo y da un error "syntax error, unexpected T_STRING" , en lo que seria la linea 4, por mas que lo miro no encuentro donde puede estar el problema, un saludo.
  #4 (permalink)  
Antiguo 02/05/2011, 09:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

¿y que tienes?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 02/05/2011, 09:20
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

Lo he implementado literal, copiado y pegado en un php en blanco, y da error "syntax error, unexpected T_STRING -"
  #6 (permalink)  
Antiguo 02/05/2011, 09:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

Si copiaste y pegaste integramente, te debe salir un error como este
Código PHP:
Ver original
  1. Warning: mysql_query() [function.mysql-query]: Access denied for user ''@'localhost' (using password: NO) in C:\xampp\htdocs\b.php on line 6
  2.  
  3. Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\b.php on line 6
  4. Access denied for user ''@'localhost' (using password: NO)
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 02/05/2011, 09:51
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

Le enchufe la conexión a la base de datos, esta claro.

Y cuando ejecuto el script para que me genere el abecedario, me sigue saliendo "syntax error, unexpected T_STRING"
  #8 (permalink)  
Antiguo 02/05/2011, 10:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

Escribe lo que tengas, porque lo que te copie no da ese error.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 03/05/2011, 10:17
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

Pues me sigue dando el mismo error :/

Parse error: syntax error, unexpected T_STRING in - on line 411
Errors parsing -

la linea 411 es

Código PHP:
* * $sql "SELECT COUNT(*) counter FROM tabla WHERE campo LIKE '{$v}%'"
La anterior

Código PHP:
foreach(range('a','z') as $v){ 
  #10 (permalink)  
Antiguo 03/05/2011, 10:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

No vamos a resolver nada hasta que escribas lo que hayas hecho anteriormente, el problema está a lo que te indiqué. Busca que hayas cerrado la línea usando ; al final y cosas similares.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 03/05/2011, 11:07
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

El codigo entero :

Código PHP:
<?php
$dbhost 
'localhost';
$dbuser '***';
$dbpass '***';

$conn mysql_connect($dbhost$dbuser$dbpass) or die     ('Error connecting to mysql');

$dbname '***';
mysql_select_db($dbname);

// conexiones y datos necesarios anteriores...
$letters = array();
foreach(
range('a','z') as $v){
* * 
$sql "SELECT COUNT(*) counter FROM cc_municipals WHERE pueblo LIKE '{$v}%'";
* * 
$qry mysql_query($sql) or die(mysql_error());
* * 
$res mysql_fetch_assoc($qry);
* * 
$letters[$v] = ($res['counter'] > 'active' null);
}
?>
*
<ul>
<?php foreach($letters as $k => $v): ?>
* * <li>
* * * * <?php if(!empty($v)): ?>
* * * * * * <a href="#" class="<?php echo $v?>"><?php echo $k?></a>
* * * * <?php else: ?>
* * * * * * <?php echo $k?>
* * * * <?php endif; ?>
* * </li>
<?php endforeach; ?>
</ul>

El error es algo del foreach()

Última edición por cloudstudio; 03/05/2011 a las 11:14
  #12 (permalink)  
Antiguo 03/05/2011, 11:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Duda abecedario generico

¿Y esos * antes de cada una de esas líneas para que son?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 03/05/2011, 12:10
 
Fecha de Ingreso: enero-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Duda abecedario generico

Cita:
Iniciado por abimaelrc Ver Mensaje
¿Y esos * antes de cada una de esas líneas para que son?
Eso lo hace forosdelweb cuando pegas el codigo en las etiquetas php, sustituye los espacios por eso, ignoralo.

Si tu cojes el codigo tal cual lo he pegado y lo ejecutas, con una base de datos tuya, no te arroja ningun error ? funciona todo perfecto ?

Etiquetas: abecedario, generico
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:56.