Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] resultados de 2 tablas diferentes, buscador

Estas en el tema de resultados de 2 tablas diferentes, buscador en el foro de PHP en Foros del Web. Hola compis, tengo una duda que no se solventar. mmMMmm haber, tengo un buscador, que cuando inserto el telefono de un miembro registrado, me muestra ...
  #1 (permalink)  
Antiguo 27/08/2015, 22:05
 
Fecha de Ingreso: octubre-2011
Ubicación: Nafarroa
Mensajes: 57
Antigüedad: 12 años, 5 meses
Puntos: 5
resultados de 2 tablas diferentes, buscador

Hola compis, tengo una duda que no se solventar.
mmMMmm haber, tengo un buscador, que cuando inserto el telefono de un miembro registrado, me muestra algunos de sus datos, que estan en ciertas columnas:

bien, aqui le digo donde buscar en la tabla oc_customer y columna telephone:
Código:
$busqueda=mysql_query("SELECT * FROM oc_customer WHERE telephone LIKE '%".$busca."%'");
y luego aqui me muestra los resultados, que funcionan correctamente, me muestra:
nombre, apellidos, email, telefono y el ID de registro.
Código:
echo '<td align="center" width="75px">'.$f['firstname'].'</td>';
echo '<td align="center" width="110px">'.$f['lastname'].'</td>';
echo '<td align="center" width="35px">'.$f['email'].'</td>';
echo '<td align="center" width="35px">'.$f['telephone'].'</td>';
echo '<td align="center" width="15px">'.$f['customer_id'].'</td>';
Bien, mi problema es otro,,,, yo queria que al insertar el telefono, me mostrara un resultado mas, pero el problema esta en que ese dato, se guarda en otra "Tabla/columna".
bueno, la tabla y columna nueva, son :
"oc_order" y la columna es "date_modified".

bien, el resultado me lo tiene que dar asi:

Código:
echo '<td align="center" width="15px">'.$f['date_modified'].'</td>';
pero no tengo ni idea, de como hacer el resto:
yo habia pensado algo asi, pero no de coña:
Código:
$busqueda=mysql_query("SELECT * FROM oc_customer, oc_order WHERE telephone, date_modified LIKE '%".$busca."%'");
pero claro, ahi no le estoy diciendo de que usuario buscar el date_modified.
que lio por dios, me podeis decir algo? como se hace eso? ando muy perdido.
gsi
  #2 (permalink)  
Antiguo 28/08/2015, 01:35
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: resultados de 2 tablas diferentes, buscador

Entiendo que las dos tablas están vinculadas por el campo customerid...
La consulta sería así

Código:
$busqueda=mysql_query("SELECT * FROM oc_customer, oc_order WHERE oc_customer.customerid=oc_order.customerid AND telephone LIKE '%".$busca."%'");
Tambien tienes otra forma de unir las dos tablas con JOIN, seria algo así:


Código:
$busqueda=mysql_query("SELECT * FROM oc_customer JOIN oc_order ON oc_customerid=oc_order.customerid WHERE telephone LIKE '%".$busca."%'");
bajo mi punto de vista siempre es mejor utilizar JOINS que la primera alternativa. Pero ya te digo, es solo mi punto de vista.

Saludos
  #3 (permalink)  
Antiguo 28/08/2015, 02:27
 
Fecha de Ingreso: octubre-2011
Ubicación: Nafarroa
Mensajes: 57
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: resultados de 2 tablas diferentes, buscador

pues no lo consigo.....
el "customerid" en realidad en las columnas se llaman "customer_id" con guion bajo, pero he probado de ambas formas, y nada, no me da resultado, es mas, no me da ningun resultado, incluidos las que antes si mostraba.

Código:
$busqueda=mysql_query("SELECT * FROM oc_customer JOIN oc_order ON oc_customerid=oc_order.customer_id WHERE telephone LIKE '%".$busca."%'");
aun asi, no hay un error ahi? deberia de ser asi?
Código:
$busqueda=mysql_query("SELECT * FROM oc_customer JOIN oc_order ON oc_customer.customer_id=oc_order.customer_id WHERE telephone LIKE '%".$busca."%'");
no lo se, de cualquier modo, he probado cantidad de variables y no me va.
  #4 (permalink)  
Antiguo 28/08/2015, 05:17
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: resultados de 2 tablas diferentes, buscador

tienes los campos de la BBDD relacionados?

Pasame el codigo completo que estas usando.
  #5 (permalink)  
Antiguo 28/08/2015, 05:27
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: resultados de 2 tablas diferentes, buscador

vale vale, espera, es un error de lógica.

Prueba esto:

Código PHP:
Ver original
  1. $busqueda=mysql_query("SELECT * FROM oc_customer,oc_order  WHERE oc_order.telephone LIKE '%".$busca."%'");

Revisando el codigo, faltaba decirle a que tabla correspondía el campo telefono. cuando haces querys a mas de una tabla hay que indicar siempre tabla.campo
  #6 (permalink)  
Antiguo 28/08/2015, 05: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, 4 meses
Puntos: 2658
Respuesta: resultados de 2 tablas diferentes, buscador

Partamos de una base más simple: Tienes siempre que verificar si está devolviendo algún error desde MySQL. Que algo parezca bien escrito no quiere decir que lo esté. No te olvides que estás embebiendo un lenguaje diferente dentro del PHP. PHP no detectará que hay un error en SQL, porque no lo entiende ni lo interpreta. Simplemente se lo pasa a la base tal como lo escribes.

El fallo que describes debió estar devolviendo un error de "Columna ambigua en el WHERE", que era muy fácil de detectar.

Código PHP:
Ver original
  1. $qry = "SELECT * ";
  2. $qry .= "FROM oc_customer C INNER JOIN oc_order  O ON C.customer_id  = O.customer_id";
  3. $qry .= " WHERE O.telephone LIKE '%$busca%'";
  4. $busqueda=mysql_query($qry) or die ("Error: ".mysql_error());
__________________
¿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 28/08/2015, 12:47
 
Fecha de Ingreso: octubre-2011
Ubicación: Nafarroa
Mensajes: 57
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: resultados de 2 tablas diferentes, buscador

ahora si que funcionan y los dos ademas.

bien, voy a ver si entiendo el cambio :)
muchas gracias a los 2 :)

Etiquetas: buscador, registro, resultados, select, sql, tabla, tablas
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 02:31.