Foros del Web » Programando para Internet » PHP »

Busqueda con conteo de palabras y caracteres

Estas en el tema de Busqueda con conteo de palabras y caracteres en el foro de PHP en Foros del Web. Hola a todos en Foros del Web, escribo este tema, por lo siguiente estoy haciendo una busqueda. En la cual el usuario desde un mismo ...
  #1 (permalink)  
Antiguo 11/01/2014, 23:40
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Busqueda Busqueda con conteo de palabras y caracteres

Hola a todos en Foros del Web, escribo este tema, por lo siguiente estoy haciendo una busqueda. En la cual el usuario desde un mismo campo de texto ingrese ya sea el numero de registro completo o el nombre completo a buscar.

Necesito algo así :
  • Si no hay caracteres en el campo entonces no se ingreso nada.
  • Si el dato que ingreso el usuario no tiene espacios en blanco entonces es un Nombre Incompleto.
  • Si el dato ingresado no tiene espacios en blanco y tiene menos de 13 caracteres entonces es un Numero de Registro Incompleto.
  • Si el dato ingresado tiene menos de 3 espacios en blanco entonces es un Nombre Incompleto.

Hasta el momento tengo el sig. codigo funcionando necesito su valiosa recomendacion para hacer que evalue si el dato es un Numero de Registro valido de 13 caracteres.


Código PHP:
Ver original
  1. $id = mysql_real_escape_string($_POST['query']);
  2.  
  3. if(strlen(trim($id)) == " "){
  4. echo "<h2>Busqueda sin datos; escriba el nombre completo</h2> <br><a href='search.php'>Volver</a>";
  5. die();
  6. }
  7.  
  8. elseif(str_word_count(trim($id)) == 1) {
  9. echo "<h2>Nombre incompleto; escriba el nombre completo </h2> <br><a href='search.php'>Volver</a>";
  10. die();
  11. }
  12.  
  13.  
  14. elseif(str_word_count(trim($id)) < 3){
  15. echo "<h2>Escriba un nombre completo </h2> <br><a href='search.php'>Volver</a>";
  16. die();
  17. }
  18.  
  19.  
  20. $sql = "SELECT * FROM customersforcourses
  21. WHERE name LIKE '$id%' ";
  22.  
  23. $query = mysql_query($sql);
  24.  
  25. ...............................
  26. ......................
  27. ...........

Agradezco su tiempo para leer esta duda, Cualquier sugerencia o mejoramiento del codigo sera bienvenido.

Última edición por Triby; 11/01/2014 a las 23:45 Razón: Eliminar formatos de texto innecesarios
  #2 (permalink)  
Antiguo 12/01/2014, 01:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda con conteo de palabras y caracteres

Para validar que el número de registro ingresado contenga 13 dígitos (asumo que se trata de dígitos porque dices que es un número de registro), puedes utilizar expresiones regulares.

Código PHP:
Ver original
  1. $numero = "4352345234544";
  2. $patron = "/^[\d]{13}$/";
  3. echo preg_match($patron, $numero) ? "Correcto" : "Incorrecto";

Lo de arriba imprimirá "Correcto", pues el número contiene 13 dígitos, ni más dígitos, ni menos dígitos ni otros caracteres en lugar de dígitos.

Una observación:

En la línea if (strlen(trim($id)) == " "), utilizas la función strlen, con la cual obtienes la cantidad de caracteres de la cadena, por lo tanto, no puedes comparar un número con un espacio en blanco. Probablemente hayas querido hacer algo así:

Código PHP:
Ver original
  1. if (trim($id) == " ")

Pero aún así, estás evaluando que la cadena sea igual a un espacio en blanco, cuando lo correcto sería (para el caso de comprobar si no hay un contenido) que lo compares con dos comillas dobles sin espacios en medio, pero como utilizas strlen, o bien lo comparas con cero (esto debido a que la función cuenta la cantidad de caracteres), o evalúas si es false, anteponiéndole un signo de admiración.

Código PHP:
Ver original
  1. if (strlen(trim($id)) === 0) //Forma 1
  2. if (!strlen(trim($id))) //Forma 2 (Recomendada)

Utilizo el operador de igualdad estricta (tres signos de igualdad), ya que el cero también equivale al valor booleano false, pero con el operador de igualdad estricta, compruebo su valor y tipo de dato, el cual es númerico, aunque en este caso, hubiera dado lo mismo, ya que si la evaluación de la cantidad de caracteres de la cadena arrojara false como resultado, querría decir que la cadena no contiene caracteres, o lo que lo mismo decir que no tiene un contenido.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 13/01/2014, 00:37
 
Fecha de Ingreso: enero-2014
Mensajes: 4
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Busqueda con conteo de palabras y caracteres

Gracias Alexis88 por tus aportes pero aun sigo sin poder lograr que funcione tal como lo que busco .

Seguire intentando realizarlo.
  #4 (permalink)  
Antiguo 13/01/2014, 09:35
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Busqueda con conteo de palabras y caracteres

Si colocaras el bloque de código que has modificado, podríamos ayudarte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: busqueda, caracteres, conteo, mysql, palabras, registro, select, sql
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 22:03.