Autor Tema: [Tutorial] Buscador de Usuarios por letra.  (Leído 2449 veces)

Desconectado HiddenHlF

  • PHPero Avanzado
  • ****
  • Mensajes: 285
  • Karma: 7
  • Sexo: Masculino
  • The Hidden
    • Ver Perfil
[Tutorial] Buscador de Usuarios por letra.
« en: 23 de Mayo de 2010, 15:25:14 pm »
Hola pues bueno aquí dejo un sistema para buscar usuarios en funcion de la letra por la que empieza su nombre. Es bastante fácil de hacer pero al fin y al cabo es un aporte mas por si alguien no sabe mucho de PHP aun y le sirve o si anda vago y no le apetece mucho ponerse a pensar xP.

Bueno aqui dejo el codigo explicado ;) :

<? 
include("Aqui tu archivo de Conectar"); // Incluimos el archivo donde tengamos los datos de nuestra Base de Datos.
$abecedario "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"// Definimos la variable abecedario que contendra todas las letras del abecedario.
for($n_letra=0;$n_letra<=26;$n_letra++){ if($n_letra<=25){ // hacemos un for con todas las letras del abecedario y le ponemos separador para todas menos la ultima mediante el if.
echo "<a href=&#39;(Direccion de la pagina donde pondrás el codigo)?letra=".$abecedario{$n_letra}."&#39;>".$abecedario{$n_letra}."</a> - ";
	
	

} else {echo 
"<a href=&#39;(Direccion de la pagina donde pondrás el codigo)?letra=".$abecedario{$n_letra}."&#39;>".$abecedario{$n_letra}."</a></br></br>";}}
$letra=$_GET[&#39;letra&#39;]; //Recogemos el valor del Get con la letra a buscar y lo almacenamos en la variable letra.
$letra2=strtolower($letra); // Transformamos la variable en minusculas para que recoga los nombres que empiecen con la letra en mayúscula y minúscula.
if($letra!=""){ // hacemos un if para comprobar si no hemos marcado ninguna letra para buscar aún
$query=mysql_query("SELECT * FROM (aqui el nombre de la talba donde quieras buscar los usuarios) WHERE (campo en el que buscar) LIKE &#39;$letra%&#39;"); // Hacemos una consulta y buscamos los nombres que empiecen por la letra en Mayúscula y los mostramos con el bucle while.
while($seleccionar=mysql_fetch_array($query)){
echo
"• ".$seleccionar[&#39;nombre&#39;]."</br>";
}
$query_m=mysql_query("SELECT * FROM (aqui el nombre de la talba donde quieras buscar los usuarios) WHERE (campo en el que buscar) LIKE &#39;$letra2%&#39;"); // Hacemos lo mismo que en la anterior pero buscando los nombres que empiecen por la letra en Minúscula.
while($seleccionar_m=mysql_fetch_array($query_m)){
echo
"• ".$seleccionar_m[&#39;nombre&#39;]."</br>";
}
if(
mysql_num_rows($query)==and mysql_num_rows($query_m)==0){echo"No hay ningun usuario registrado cuyo nombre empiece por la letra: ".$letra;} // Comprobamos si hay nombres con esta letra y en caso de que no halla mostramos en pantalla que no hay usuarios cuyo nombre empiece por esta letra.
} else { // si no hemos marcado ninguna letra nos aparecerá este fragmento de codigo.
echo"Selecciona una letra para buscar los nombres que comiencen por esta.";
}
?> 



Podeis probarlo aquí:

http://www.onewhabbo.es/pruebas.php

Pd: no me he complicado mucho la vida xP porque no me iba a poner a hacer tablas nuevas etc asique he usado la del Dreamchat xP asi que si alguno quiere registrar su nombre y buscarlo que lo haga aquí:

http://www.onewhabbo.es/Dreamchat/registro.php

pues eso ahí queda para el que quiera ;) .

Saludos

Comunidad PHPeros

[Tutorial] Buscador de Usuarios por letra.
« en: 23 de Mayo de 2010, 15:25:14 pm »

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #1 en: 23 de Mayo de 2010, 16:05:55 pm »

La mitad del código es mio jum.

Buen tuto :P

#Fdo. Physlet

Desconectado HiddenHlF

  • PHPero Avanzado
  • ****
  • Mensajes: 285
  • Karma: 7
  • Sexo: Masculino
  • The Hidden
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #2 en: 23 de Mayo de 2010, 16:24:56 pm »
si claro la mitad jum 5/6 xDDD es broma pro si k es verdad que el array fue idea tuya ;P y thanks

Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #3 en: 23 de Mayo de 2010, 17:02:44 pm »
Me gusta el código, es buena idea, sin embargo veo un pequeño prolema.

La estructura. Está todo desordenado y no te enteras mucho, aquí te lo ordeno

Citar

<?php

// Incluimos el archivo donde tengamos los datos de nuestra Base de Datos.
include("Aqui tu archivo de Conectar");

// Definimos la variable abecedario que contendra todas las letras del abecedario.
$abecedario "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";

// hacemos un for con todas las letras del abecedario y le ponemos separador para todas menos la ultima mediante el if.
for($n_letra=0;$n_letra<=26;$n_letra++) { 
 if(
$n_letra<=25) echo "<a href=&#39;(Direccion de la pagina donde pondrás el   codigo)?letra=".$abecedario{$n_letra}."&#39;>".$abecedario{$n_letra}."</a> - ";
 else echo 
"<a href=&#39;(Direccion de la pagina donde pondrás el codigo)?letra=".$abecedario{$n_letra}."&#39;>".$abecedario{$n_letra}."</a></br></br>";
}

//Recogemos el valor del Get con la letra a buscar y lo almacenamos en la variable letra.
$letra=$_GET[&#39;letra&#39;];

// Transformamos la variable en minusculas para que recoga los nombres que empiecen con la letra en mayúscula y minúscula.
$letra2=strtolower($letra);

// hacemos un if para comprobar si no hemos marcado ninguna letra para buscar aún
if($letra!="") {
 
// Hacemos una consulta y buscamos los nombres que empiecen por la letra en Mayúscula y los mostramos con el bucle while.
 
$query=mysql_query("SELECT * FROM (aqui el nombre de la talba donde quieras buscar los usuarios) WHERE (campo en el que buscar) LIKE &#39;$letra%&#39;");
 while(
$seleccionar=mysql_fetch_array($query)) echo"• ".$seleccionar[&#39;nombre&#39;]."</br>";

 // Hacemos lo mismo que en la anterior pero buscando los nombres que empiecen por la letra en Minúscula.
 
$query_m=mysql_query("SELECT * FROM (aqui el nombre de la talba donde quieras buscar los usuarios) WHERE (campo en el que buscar) LIKE &#39;$letra2%&#39;");
 while(
$seleccionar_m=mysql_fetch_array($query_m)) echo"• ".$seleccionar_m[&#39;nombre&#39;]."</br>";

 // Comprobamos si hay nombres con esta letra y en caso de que no halla mostramos en pantalla que no hay usuarios cuyo nombre empiece por esta letra.
 
if(mysql_num_rows($query)==and mysql_num_rows($query_m)==0) echo "No hay ningun usuario registrado cuyo nombre empiece por la letra: ".$letra;

 
// si no hemos marcado ninguna letra nos aparecerá este fragmento de codigo.
 
else echo"Selecciona una letra para buscar los nombres que comiencen por esta.";
?> 
(espero no haberme equivocado xD)

Solo lo he estructurado un poco (es a mi manera, tu puedes usar otra). Ya que asi aligera un poco la vista y además es mas facil modificarlo.

Ahora te tocaría intentar comprimir un poco el código, como por ejemplo quitar algunas variables, o minimizar alguna consulta.


Saludos!

Desconectado HiddenHlF

  • PHPero Avanzado
  • ****
  • Mensajes: 285
  • Karma: 7
  • Sexo: Masculino
  • The Hidden
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #4 en: 23 de Mayo de 2010, 17:13:32 pm »
Ok Rodri la verdad es que quería simplificar cosas como poner 1 solo while pero si pongo en la query '$letra%' or '$letra2%' solo me toma el primer valor en este caso letra% así que :L eso de momento no lo simplifico u.U y luego respecto a ordenar los códigos la verdad es un aspecto que tengo que mejorar porque me fijo en que funcionen pero no en eso y en los largos luego si que es verdad que es difícil buscar variables etc y editarlo Así que gracias por ordenarlo xP.

Saludos

PD: sabes como se podria solucionar eso del query? :L

PD2: acabo de descubrir los karmas :L! XD y os he dao 1 sin querer xPP jasjas bueno os lo merecéis xDD x ordenar el código y Siqui por la idea del array xP
« Última modificación: 23 de Mayo de 2010, 17:15:21 pm por HiddenHlF »

Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #5 en: 23 de Mayo de 2010, 18:48:42 pm »
Lo de la query es sencillo, usas regexp y ya esta.

He cambiado tu codigo y he creado la funcion buscar_letra();


<?php
include("conectar.php"); #Archivo que tiene la conexion de la DB

$letras "ABCDEFGHIJKLMNOPQRSTUVWXYZ"#Puedes poner las letras que quieras
$parte str_split($letras);
$enlace preg_replace("#(.*)#""<a href=\"{$_SERVER[&#39;PHP_SELF&#39;]}?letra=\\1\">\\1</a>", $parte, 1);
echo $enlaces implode(" - "$enlace)."</br>";

$tabla "usuarios"#Nombre de la tabla en tu DB
$campo "nombre"#Nombre del campo a buscar
$pag "perfil.php?usuario="#Pagina a la que redigira con los resultados

if(in_array($_GET[&#39;letra&#39;], $parte)) {
 
if(($dato buscar_letra($_GET[&#39;letra&#39;], $tabla, $campo, $msgerror))==0) echo $msgerror; 
 
else {
  
$resultado preg_replace("#(.*)#""- <a href=\"{$pag}\\1\">\\1</a>"$dato1);
  echo 
$resultados implode("</br>\n"$resultado);
 }
}
 else echo "Selecciona una letra para buscar usuarios que empiecen por esta";

function buscar_letra(
$_letra$_tabla$_campo, &$_error) {
 
$consulta = mysql_query("select from `{$_tabla}` where `{$_campo}` regexp &#39;^(".strtoupper($_letra)."|".strtolower($_letra).")(.*)$&#39;");
 
if(!mysql_num_rows($consulta)) {
  
$_error "No hay registros que empiecen por {$_letra} en {$_tabla}.{$_campo}";
  return 
false;
 } else {
  while(
$leer mysql_fetch_array($consulta)) $ret[] = $leer[$_campo];
  return 
$ret;
 }
}
?>


Gracias por el karma!

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #6 en: 12 de Junio de 2010, 14:43:18 pm »

if($letra!=""){ // hacemos un if para comprobar si no hemos marcado ninguna letra para buscar aún


...
Sin comentarios u.u
Como se nota que mas de la mitad que código es de siquillote por que no supiste poner el comentario bien ...
No sera mas bien... Hacemos un if para determinar si la letra es diferente de un valor nulo o simplemente NULL ?

Y... No llenes un código de tantos comentarios que eso lo hace ver mal e incluso peor.
Saludos
Twitter: @JoakoM010



Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Buscador de Usuarios por letra.
« Respuesta #7 en: 12 de Junio de 2010, 15:24:29 pm »

if($letra!=""){ // hacemos un if para comprobar si no hemos marcado ninguna letra para buscar aún


...
Sin comentarios u.u
Como se nota que mas de la mitad que código es de siquillote por que no supiste poner el comentario bien ...
No sera mas bien... Hacemos un if para determinar si la letra es diferente de un valor nulo o simplemente NULL ?

Y... No llenes un código de tantos comentarios que eso lo hace ver mal e incluso peor.
Saludos

En realidad, se explica bien. Con el comentario quiere decir que buscar que la variable GET no este vacia, es decir, que sea una letra y no vacia

#Fdo. Physlet