Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2012, 20:03
Avatar de DarkEngel
DarkEngel
 
Fecha de Ingreso: julio-2011
Ubicación: Chalco de DÃ*az Covarrubias, Mexico
Mensajes: 6
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta Problema con query php para consulta en MySQL

Hola a todos:

Soy un poco novato en programacion php y no estoy muy familiarizado con el foro, no se si esta pregunta deberia ir aqui o en otro tema.
Espero me puedan ayudar.

Les explico el caso:

Estoy diseñando una pagina web para vendedores, en la cual hay diversos productos que todos los vendedores ofrecen y algunos datos de sus clientes.

El vendedor se identifica con login y contraseña. De acuerdo al login busco sus datos en la base de usuarios si el usuario existe, obtengo la variable de sesion, y obtengo los datos necesarios para mostrar en la pagina de bienvenida. Si no existe le impido el acceso.

De esos datos, obtengo la variable $nombrevendedor e $iniciales Cabe mencionar, que existia una base de datos en la que anteriormente, se identificaba al vendedor por sus iniciales y se ponia algun comentario en el mismo campo, pero esa base de datos ya fue exportada a mysql y ahora se identifica al vendedor por su nombre.


Cuando se registra una venta de X vendedor, se ingresan los datos de su cliente: nombre, telefono, producto vendido, nombre vendedor (el mismo que antes era de las iniciales), fecha, etc. en una tabla asignada para cada producto.

En la pagina de bienvenida, existen botones de acuerdo al producto vendido o existente (producto1, producto2, producto3, etc.)

Al pulsar el boton del producto elegido, se llama a la pagina productoX.php la cual hace una consulta a mysql y se obtienen los registros especificos de ese vendedor, ya sea por nombre o iniciales.


Para esa busqueda, utilizo el siguiente codigo:

$nombrevendedor;
$iniciales;

include(dbconection.php);

$result = mysql_query("SELECT * FROM PRODUCTO1 WHERE VENDEDOR = '".$nombrevendedor."' OR VENDEDOR LIKE '%".$iniciales."%' ORDER BY PRODUCTO1.NOMBRE_CLIENTE ASC");

imprimo los datos mediante un while ($row = mysql_fetch_row($result)) {
echo $row[1];
//y todos las demas columnas necesarias
}


En todo esto, no tengo problemas, ya que se muestran todos los registros de ese vendedor en especifico.


Problema:
El problema viene cuando el vendedor, quiere filtrar sus registros mediante una busqueda que a continuacion explico:


En la pagina productox.php, se muestra un buscador con campo tipo text y el boton buscar:

Al pulsar el boton buscar, se llama a la pagina resultado.php Al realizar la busqueda, tambien se muestran los clientes de otros vendedores, y ese es el problema.

Necesito que al realizar la busqueda, se muestren unicamente los resultados de la $palabra (ya sea numero o frase) exclusivamente de ese vendedor, ya sea por su nombre o iniciales.


Les pongo algo como lo que quisiera:

Busca en toda la tabla PRODUCTO1 la $palabra cuando el $nombrevendedor o $iniciales esten registradas en la columna VENDEDOR y ordenalos por NOMBRE_CLIENTE

Otra forma seria: Busca la $palabra en toda la tabla PRODUCTO1 de la base de datos, pero que coincidan con el $nombrevendedor o $iniciales y ordenalos por NOMBRE_CLIENTE

Otra opcion que se me ocurre seria: Busca en la tabla PRODUCTO1 la $palabra y $nombreusuario or $iniciales y ordenalas por NOMBRE_CLIENTE


El codigo que funciono, pero muestra todos los resultados (incluyendo los de otros vendedores es este:


$nombrevendedor;
$iniciales;

include(dbconection.php);

$result = mysql_query("SELECT * FROM PRODUCTO1 WHERE VENDEDOR = '".$nombrevendedor."' OR VENDEDOR LIKE '%".$iniciales."%' AND NOMBRE_CLIENTE LIKE '%".$palabra."%' OR `TELEFONO` LIKE '%".$palabra."%' OR PRODUCTO LIKE '%".$palabra."%' OR CANTIDAD LIKE '%".$palabra."%' OR FECHA LIKE '%".$palabra."%' ORDER BY PRODUCTO1.NOMBRE_CLIENTE ASC");

Imprimo los datos mediante un while ($row = mysql_fetch_row($result)) {
echo $row[1];
//y todos las demas columnas necesarias
}

Basicamente, el problema, es que no quiero que se muestren los resultados de otros clientes.

Ya he intentado otro tipo de variantes para el mysql_query, pero: Me muestra un error de sintaxis o solo se muestra un unico resultado o se muestra el resultado vacio.

Estos son los errores que me muestra:
Parse error: syntax error, unexpected T_LOGICAL_OR

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in

Por lo que yo creo, es un error de sintaxis en el query (no la estoy haciendo adecuadamente)

Si alguien me pudiera orientar para realizar alguna query de manera adecuada que cumpla estas condiciones:

Buscar la $palabra en la toda la tabla PRODUCTO1
que coincida con $nombrevendedor o $iniciales de la columna VENDEDOR y los resultados obtenidos, los ordene por la columna NOMBRE_CLIENTE

Tal vez algo como esto:
("SEARCH * FROM PRODUCTO1 WHERE $palabra AND VENDEDOR = $nombrevendedor OR $palabra AND VENDEDOR LIKE %$iniciales% ORDER BY PRODUCTO1.NOMBRE_CLIENTE ASC)";

Estoy utilizando WampServer version 2.1
Incluye:
PHP Version 5.3.5
Apache 2.2.17
mysqlnd 5.5.8


No se si esta clase de consulta se puede hacer en esta version de MySQL o si la tengo que hacer de otra manera, utilizando otros comandos (que desconozco) como ya habia mencionado soy un poco novato en php.

Disculpen si este tema es demasiado extenso, pero tal vez es necesario para explicar adecuadamente mi problema.

Si alguien tiene una idea de como realizar esta consulta utilizando el mismo metodo u otros metodos (que me explique como funciona), se los agradecere infinitamente.

Muchas gracias de Antemano.

Última edición por DarkEngel; 12/08/2012 a las 21:07