Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/06/2009, 18:54
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 4 meses
Puntos: 2658
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Perfecto, pero hay al menos dos problemas:
1. No pongas código de programación aquí porque contradice las reglas del foro (ter párrafo de Función de la sección Base de Datos). Es muy posible que tu puedas leerlo, pero muchos de nosotros trabajamos con SQL, ya que es SQL lo que se usa en las bases de datos, y el código de programación resulta "sucio" de leer.
2. Referente a tu problema, si veo que está parcialmente administrado el proceso de crear la cadena de búsqueda, pero no está bien hecho, ya que los apóstrofes deben encerrar no sólo la cadena, sino también al signo %. Si te fijas con cuidado, las variables contienen cosas tales como "'palabracontneida'", pero deberían contener "'%palabracontenida%'", por lo cual el valor buscado es erróneo.
3. Además veo un problema adicional por cuanto (si entiendo bien el sentido de las sentencias) están poniendo una carga condicional de las variables tal que si no entra nada, entonces le ponga NULL... lo que es realmente absurdo en el contexto de SQL.
Me explico: En las operaciones de consulta NULL no es equivalente a vacío. NULL genera una respuesta nula en la operación, y en este contexto:
Código sql:
Ver original
  1. SELECT *
  2. FROM erasmus
  3. WHERE Num_Tes_ESN LIKE NULL AND Nome LIKE %s AND Cognome LIKE %s  ORDER BY Cognome ASC;
hace que no devuelva nada. No importa si los demás valores son válidos. La comparación de un campo con NULL no se realiza con LIKE sino con IS NULL.
4. Finalmente: Si existe la posibilidad de que unos de los valores a usar en la búsqueda no ingresa, no puedes poner ni NULL ni vacío con LIKE, ya que en el primer caso no te devolverá nada, y en el otro te devolverá un error. En todo caso lo que debe hacerse es que lo que se agregue sea todo el bloque LIKE '%palabra%' , con lo que tendrás que administrar la entrada de los AND que deben ir...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)