Foros del Web » Programando para Internet » PHP »

Error en consulta de buscador

Estas en el tema de Error en consulta de buscador en el foro de PHP en Foros del Web. Hola a todos, y gracias por vuestra ayuda. Esto debe ser muy fácil pero no veo el fallo. Tengo un buscador: http://www.desarrolloweb.com/articulos/1035.php Si sólo se ...
  #1 (permalink)  
Antiguo 17/04/2009, 00:24
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Error en consulta de buscador

Hola a todos, y gracias por vuestra ayuda. Esto debe ser muy fácil pero no veo el fallo. Tengo un buscador:

http://www.desarrolloweb.com/articulos/1035.php

Si sólo se consulta una tabla va fantástico sin embargo en una consulta de un campo de la tabla hay un número que corresponde al id de otra tabla, y de esta sacar los datos:

Código PHP:
$criterio " where contactes.nom like '%" $txt_criterio "%' or contactes.cognoms like '%'"


$sql="SELECT fitxes.*,contactes.* FROM  fitxes INNER JOIN contactes ON (fitxes.contacte = contactes.id) ".$criterio
Me da el clásico error de ...supplied argument ... vamos que fallo en algo y no lo veo.

Gracias y un saludo a todos.
__________________
Chanante!
  #2 (permalink)  
Antiguo 17/04/2009, 01:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Error en consulta de buscador

Haz un:
Código php:
Ver original
  1. echo mysql_error();
Así sabrás cuál es el error exacto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 17/04/2009, 01:31
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Error en consulta de buscador

Gracias por la respuesta, no me conocía esa forma de sacar el error, la verdad es que va muy bien, pero me ha dejado igual ya que me da este:

Unknown column 'contactes.nom' in 'where clause'

La tabla contactes tiene campo nom y campo cognoms y hay registros dentro, por lo que sigo sin ver el fallo.

Un saludo
__________________
Chanante!
  #4 (permalink)  
Antiguo 17/04/2009, 01:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Error en consulta de buscador

Varias cosas
1) haz una búsqueda en MySQL con datos absolutos con esa sintaxis. Verás si el problema es MySqL o PHP.

2) ¿qué quieres buscar con esto?
or contactes.cognoms like '%'

3) creo que el problema, aparte de esto, es PHP. Pregunta en el foro PHP sobre el modo en que enlazas la primera con la segunda parte, es decir, el modo en que añades la variable criterio.

Pregunta allí si es correcto.
  #5 (permalink)  
Antiguo 17/04/2009, 02:24
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Error en consulta de buscador

Bueno, de nuevo gracias.

La verdad es que veo que no me he explicado bien, os cuento lo que tenía y lo que intento.

Ese código que tengo lo uso para paginar resultados y viene con un buscador que depende de sentencia en la que fallo, lo que tenía cuando sólo era una tabla:

Código PHP:
$criterio " where contacte like '%" $txt_criterio "%'"
$sql="SELECT * FROM fitxes ".$criterio
Esto me funcionaba cuando el campo contacte contenía el nombre pero al final opté por poner el id del contacto. Por lo que si pongo el nombre no me da resultados, pero si pongo el número de contacte me lo muestra bien.

Lo que quiero decir es que la base estaba bien, la sintaxis era correcta.

Pero claro ahora la gente no sabe el id y si por ejemplo mete un nombre no lo encuentra pues sólo hay un número.

Y aquí es donde la cago, supongo.
Teniendo en cuenta que estoy relativamente verde en mysql igual esa sentencia no hace lo que creo.

Mi idea es que la gente meta el nombre y lo busque en la tabla contactes y me saque el id de las coincidencias, con este id sacamos los resultados de fitxes cuyo campo contacte coincide con este id.

Me resulta incluso complicado explicarlo con palabras sin liarme.

Un saludo y muchas gracias de nuevo
__________________
Chanante!
  #6 (permalink)  
Antiguo 17/04/2009, 08:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Error en consulta de buscador

sirguy,
danos datos concretos de las dos tablas (campos, tipos, relaciones), qué buscarías (ejemplos con nombre y apellido) y qué quieres mostrar. No parece un problema difícil, al menos eso creo. Lo primero es tener la consulta sql, que es sobre lo que podremos decirte algo aquí. Resolvamos eso primero.
Luego, si funciona, deberías ver cómo incluirlo en la sintaxis PHP, pero eso deberás hacerlo en el foro PHP.
  #7 (permalink)  
Antiguo 17/04/2009, 09:06
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Error en consulta de buscador

Claro, no hay problema: la tabla fitxes tiene un campo en concreto que se llama contacte, este campo sólo tiene un número que coincide con el campo id de la tabla contactes, esta tabla tiene los datos típicos como nombre, apellidos, teléfono.

Pero claro yo muestro los resultados de la tabla fitxes y si busco un nombre no lo tiene, tiene el id del contacto de la tabla contactes que es la tiene los campos de nombre y apellidos.

Así que cuando busque, lo haga en la tabla fitxes contraste el id y busque en la tabla contactes.

El implementarlo en php supongo que podré hacerlo sin problemas, pero en temas de consultas mysql es donde aún no estoy demasiado familiarizado.

En fin, muchas gracias una vez más.
__________________
Chanante!
  #8 (permalink)  
Antiguo 17/04/2009, 15:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Error en consulta de buscador

A ver, creo que lo tenías bien:
SELECT contactes.nom, contactes.cognoms , fitxes.*
FROM `contactes`
INNER JOIN fitxes ON contactes.id = fitxes.contacte
WHERE contactes.nom LIKE 'Juan%'
OR contactes.cognoms LIKE '%Rodríguez%'

Esta sería la consulta. Puedes buscar por nombre o apellidos. El cruce lo haces con el inner join y la equvalencia contactes.id=fitxes.contacte. Quizás el problema es que la variable de $txt_criterio no pasa dato alguno. Compruébalo haciendo algún echo y si no ves nada, pide ayuda en el foro PHP.
  #9 (permalink)  
Antiguo 19/04/2009, 11:05
Avatar de sirguy  
Fecha de Ingreso: septiembre-2006
Ubicación: Mallorca
Mensajes: 959
Antigüedad: 17 años, 7 meses
Puntos: 12
Respuesta: Error en consulta de buscador

Ok, muchas gracias, lo pruebo y digo cosas.

Un saludo a todos!
__________________
Chanante!
  #10 (permalink)  
Antiguo 19/04/2009, 21:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error en consulta de buscador

Tema trasladado desde MySQL.

http://www.forosdelweb.com/f21/funci...-datos-413499/
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 06:15.