Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Estas en el tema de MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda en el foro de Mysql en Foros del Web. Saludos, Manejo desde mi humildad y encima soy nuevo MySQL + PHP + Dreamweaver, y me encuentro que para hacer una búsqueda en una tabla, ...
  #1 (permalink)  
Antiguo 05/06/2009, 15:57
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Saludos,

Manejo desde mi humildad y encima soy nuevo MySQL + PHP + Dreamweaver,

y me encuentro que para hacer una búsqueda en una tabla, no aparecen listados los registros que tengan alguno de los campos vacío...

esta es mi búsqueda:

SELECT *
FROM erasmus
WHERE Num_Tes_ESN LIKE %col_num_tes_esn% AND Nome LIKE %col_nome% AND Cognome LIKE %col_cognome% AND Altro LIKE %col_altro%
ORDER BY Cognome ASC

Donde los %col_.....% son las variables según las trabaja dreamweaver pero que es el campo del formulario de búsqueda.

Alguien que sabe más que yo puede orientarme?

Muchas gracias

nanel
  #2 (permalink)  
Antiguo 05/06/2009, 16:05
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

hola nanel:

pregunta, ya intentaste con el OR, o acaso es necesario que tenga todos los valores, si no es el caso prueba asi:

SELECT *
FROM erasmus
WHERE Num_Tes_ESN LIKE %col_num_tes_esn% OR Nome LIKE %col_nome% OR Cognome LIKE %col_cognome% OR Altro LIKE %col_altro%
ORDER BY Cognome ASC

me parece que para lo que buscas te puede servir, esta consulta va a buscarte la informacion solo con que hayas llenado un campo de los que tienes.

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

Tienes que poner el contenido de la variable en el string de la consulta:
Código sql:
Ver original
  1. SELECT *
  2. FROM erasmus
  3. WHERE Num_Tes_ESN LIKE '%col_num_tes_esn%'
  4.    AND Nome LIKE '%col_nome%'
  5.    AND Cognome LIKE '%col_cognome%'
  6.    AND Altro LIKE '%col_altro%'
  7. ORDER BY Cognome;
1. Dentro de la cadena de texto (que en MySQL es lo comprendido por los apóstrofes: ''), los "%" funcionan como operadores de suplantación, pero por fuera son operadores de resto de división.
2. Si vas a ordernar por un solo campo en forma ascendente, poner ASC es innecesario porque el ordenamiento es por default ASC.

Asegúrate que el string contenga las cadenas: '%contenido_de_variable%', y luego veremos si la cos ava por allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 06/06/2009, 10:04
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Cita:
Iniciado por Anubis_Slash Ver Mensaje
hola nanel:

pregunta, ya intentaste con el OR, o acaso es necesario que tenga todos los valores,

saludos
Gracias Anubis_Slash,

sí que he probado con el OR y, lo que ocurre es que siempre me saca todos los registros siempre, busque lo que busque y además, igualmente los registros que tienen algún campo vacío... nada de nada.
  #5 (permalink)  
Antiguo 06/06/2009, 10:17
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Tienes que poner el contenido de la variable en el string de la consulta:
Código sql:
Ver original
  1. SELECT *
  2. FROM erasmus
  3. WHERE Num_Tes_ESN LIKE '%col_num_tes_esn%'
  4.    AND Nome LIKE '%col_nome%'
  5.    AND Cognome LIKE '%col_cognome%'
  6.    AND Altro LIKE '%col_altro%'
  7. ORDER BY Cognome;

Asegúrate que el string contenga las cadenas: '%contenido_de_variable%', y luego veremos si la cos ava por allí.
Gracias también gnzsoloyo,

es que el dreamweaver tiene una forma muy particular de tratar el código, con la cosa de querer hacerlo todo visual para los que no sabemos lo lía demasiado...

De hecho, en la parte que el dream te deja para meter las sentencias de MySQL, tu puedes escribir el apostrofe de delante y de detrás, que la siguiente vez que entras, ha desaparecido y está solo como %...%, pero, el código lo interpreta como tú dices que hay que hacer. Sí le meto el apostrofe desde el código saltándome los cuadros de diálogo del dream, me dice que: ERROR de SINTAXIS ' '%..%' '.. o sea, que le he metido dos apostrofes.

Lo ideal sería saber código claro, y no tener que comerse los rebuscados métodos del dreamweaver.....
  #6 (permalink)  
Antiguo 06/06/2009, 11:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Deberías probar "escapar "los apóstrofes, esto es, poner "\'" antes del apóstrofe que debe ir. Eso tal vez funcione (es el modo habitual en varios lenguajes para que aparezcan los símbolos que se pierden en el paso de las cadenas a ejecución).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 06/06/2009, 15:59
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

No no, si no es que se pierdan los apostrofes... solo que no se ven en el cuadro de dialogo en el que dreamweaver te permite meter las sentencias de SQL...., pero después, el código que genera sí que le añade estos apostrofes delante y detrás...

De todos modos, lo leí en un foro esto que me escribes del \ y probé también... pero no supe tampoco hacerlo funcionar... siempre esta la misma espina de que vosotros ponéis aquí como sería el PHP normal, pero el dream lo hace muy diferente y no es muy compatible...

Me valdría la pena encontrarme un buen curso de PHP...

Gracias de nuevo!
  #8 (permalink)  
Antiguo 06/06/2009, 16:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Bueno, entonces postea cómo queda entonces la sentencia que MySQL realmente recibe.
¿Puedes hacerlo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 06/06/2009, 17:12
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Bueno mira, sin ánimo de aceros perder mucho el tiempo, os pongo aquí todo el código que genera el dreamweaver a base de cuadros de diálogo para los que estamos peces en la programación..... Aquí ves como añade a cada variable el apóstrofe automaticamente... y que recoge los nombres de los campos de formulario del post por un sitio y luego los mete en el query... en fin...... seguro que lo entiendes más que yo....


gracias otra vez

Última edición por GatorV; 06/06/2009 a las 19:59
  #10 (permalink)  
Antiguo 06/06/2009, 18:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 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)
  #11 (permalink)  
Antiguo 07/06/2009, 03:43
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Disculpas por haber puesto el código PHP..., debería haber leído las normas...

Voy a intentar anular eso del NULL....

En cuanto a lo de añadir los %... si que lo hace el codigo de dream... lo hace más abajo con la función sprintf con cada variable con la forma:
GetSQLValueString("%" . $col_nome_Listado_Erasmus . "%", "text")

Gracias de nuevo

Última edición por nanel_forosdelweb; 07/06/2009 a las 04:29
  #12 (permalink)  
Antiguo 07/06/2009, 07:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Como te dije, no se podía poner código PHP aquí, ya lo eliminaron.

Cita:
En cuanto a lo de añadir los %... si que lo hace el codigo de dream... lo hace más abajo con la función sprintf con cada variable
Lamentablemente ya no puedo verificarlo, pero si estaba así, entonces no debería haber problemas, aunque de todos modos, para verificar, habría que hacer que te muestre en una ventana como queda finalmente armado el string de la consulta, ya con los valores de las variables incluidos.
¿Podrías hacer un echo para que lo muestre y postear el resultado?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 07/06/2009, 07:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Como te dije, no se podía poner código PHP aquí, ya lo eliminaron.

Cita:
En cuanto a lo de añadir los %... si que lo hace el codigo de dream... lo hace más abajo con la función sprintf con cada variable
Lamentablemente ya no puedo verificarlo, pero si estaba así, entonces no debería haber problemas, aunque de todos modos, para verificar, habría que hacer que te muestre en una ventana como queda finalmente armado el string de la consulta, ya con los valores de las variables incluidos.
¿Podrías hacer un echo para que lo muestre y postear el resultado?
Remarco esto porque no es raro que cuando usas interfases visuales para crear código PHP o SQL, algunas de ellas le incorporen caracteres indebidamente a las sentencias de consulta, como también que no le pongan lo que deben. Eso lo he visto suceder con, por ejemplo, el Navicat. En esos casos hay que administrar el error que las interfases generan y que resulta invisible hasta que se produce.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 21/06/2009, 10:02
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: MySQL + PHP + Dreamweaver > campos vacíos no aparecen en la búsqueda

Bueno gnzsolo,

parece que hemos encontrado la solución. Lo que hace el Dreamweaver, es que a la hora de insertar registros en la base de datos, cuando dejas campos vacíos en el formulario, él los inserta como NULL, y así se quedan en la base de datos y así me daba todos estos probelmas.
Ahora hemos cambiado la forma de insertar estos registros y no se inserta como NULL, sino que en la base de datos no se permite un valor nulo y cuando insertas solo se insertan los campos que rellenas, con lo demás no hace nada.

De esta forma las búsquedas han dejado de dar esos problemas. Aparecen todos los registros aunque tengan campos nulos.

Muchas gracias por todo Gnzsolo y a los demás!

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

Me alegra que por fin hayas encontrado el origen del problema.
Este tipo de situaciones no son raras cuando se usan paquetes de aplicaciones que ya han resuelto parte de las operaciones en forma interna, y como no suelen estar claramente documentadas, a veces es difícil saber por qué pasan.
Con el Navicat, por ejemplo, hay problemas a causa de eso y sentencias aparentemente perfectas fallan sin explicación aparente (en ese caso les mete un espacio vacío entre el nombre de las funciones y el paréntesis, lo que genera un error de sintaxis imperceptible).

Me alegra, entonces, que hayas podido encontrar la solución y gracias por compartirlo. Yo sinceramente no conocía esos detalles, y lo tendré en cuenta en el futuro...

Saludos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 05:21.