Foros del Web » Programando para Internet » PHP »

Duda en una consulta

Estas en el tema de Duda en una consulta en el foro de PHP en Foros del Web. Hola buenas tengo un problema y esque no se como hacer el WHERE ese ya que lo que quiero es que busque cuando el cif ...
  #1 (permalink)  
Antiguo 27/01/2010, 19:14
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Duda en una consulta

Hola buenas tengo un problema y esque no se como hacer el WHERE ese ya que lo que quiero es que busque cuando el cif sea igual a la variable y me busque el criterio pero solo de los campos que coincidan con el cif.

Muchas gracias y buenas noches.


if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio = $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.
$criterio = " where idcontrato like '%" . $txt_criterio . "%' or cif like '%" . $txt_criterio . "%' or idservicio like '%" . $txt_criterio . "%' or fAlta like '%" . $txt_criterio . "%' or fBaja like '%" . $txt_criterio . "%' or Horas
like '%" . $txt_criterio . "%'";
}
$sql="SELECT * FROM bd.contratos WHERE cif = '$id'".$criterio; //modificar aki .
//Consultamos todo con el valor del criterio establecido.
  #2 (permalink)  
Antiguo 27/01/2010, 22:03
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Duda en una consulta

Proba esto
Código PHP:
if ($_GET["criterio"]!=""){ 
  
$txt_criterio $_GET["criterio"]; 
  
$criterio " idcontrato like '%" $txt_criterio "%' or cif like '%" $txt_criterio "%' or idservicio like '%" $txt_criterio "%' or fAlta like '%" $txt_criterio "%' or fBaja like '%" $txt_criterio "%' or Horas like '%" $txt_criterio "%'";
}
$sql="SELECT * FROM bd.contratos WHERE cif = '$id' AND ( ".$txt_criterio." )"
espero que te sirva
  #3 (permalink)  
Antiguo 28/01/2010, 02:51
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

Hola luis010182 parece que no va ya que con tu codigo me devuelve error al leer el numero de filas de la consulta

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/fran/Escritorio/www/busquedacontratoind.php on line 90

Muchas gracias por responder.
  #4 (permalink)  
Antiguo 28/01/2010, 03:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda en una consulta

Prueba esto, a ver que tal:

Código PHP:
if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.

$criterio "SELECT * FROM bd.contratos WHERE cif=$id;
$criterio .= " 
where idcontrato like '%$txt_criterio%' or cif like '%$txt_criterio%' or idservicio like '%$txt_criterio%' or fAlta like '%$txt_criterio%' or fBaja like '%$txt_criterio%' or Horas like '%$txt_criterio%'";
}

$sql=mysql_query($criterio); //modificar aki 
un saludo!
  #5 (permalink)  
Antiguo 28/01/2010, 03:29
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

Parse error: syntax error, unexpected T_STRING on line 84
Linea 84: $criterio .= " WHERE idcontrato like '%$txt_criterio%' or cif like '%$txt_criterio%' or idservicio like '%$txt_criterio%' or fAlta like '%$txt_criterio%' or fBaja like '%$txt_criterio%' or Horas like '%$txt_criterio%' ";

Sigue sin ir tiene pinta de ser alguna comilla pero sigo sin caer....
  #6 (permalink)  
Antiguo 28/01/2010, 04:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Duda en una consulta

Prueba esto:

Código PHP:

if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.

$criterio "SELECT * FROM bd.contratos WHERE cif=".$id;
$criterio .= " OR idcontrato like '%".$txt_criterio."%' or cif like '%".$txt_criterio."%' or idservicio like '%".$txt_criterio."%' or fAlta like '%".$txt_criterio."%' or fBaja like '%".$txt_criterio."%' or Horas like '%".$txt_criterio."%'";
}

$sql=mysql_query($criterio); //modificar aki 
Si, es un error de comillas. Pero ademas, fijate que tienes "WHERE cif=$id" y en la siguiente línea tenías otro where. He puesto un OR porque imagino que es lo que necesitas.
  #7 (permalink)  
Antiguo 28/01/2010, 04:50
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

Buenos dias flipisnet me sigue dando, con tu codigo expuesto un error en la consulta, me imagino que será por la sentencia, tienes alguna otra solución, te lo agradacería. Muchas gracias.
  #8 (permalink)  
Antiguo 28/01/2010, 04:56
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Duda en una consulta

¿Qué error te da? Por otro lado, prueba a hacer echo a la variable $criterio, en plan:

Código PHP:

$criterio 
"SELECT * FROM bd.contratos WHERE cif=".$id;
$criterio .= " OR idcontrato like '%".$txt_criterio."%' or cif like '%".$txt_criterio."%' or idservicio like '%".$txt_criterio."%' or fAlta like '%".$txt_criterio."%' or fBaja like '%".$txt_criterio."%' or Horas like '%".$txt_criterio."%'";

echo 
$criterio;
die(); 
Y mete la SQL en un monitor de SQL (phpmyadmin, por ejemplo), y si da un error de SQL es que está mal escrita. Postéala aquí por si acaso. Piensa que el operador LIKE no se puede usar para todos los tipos de datos, comprueba los tipos de datos de las columnas que estás usando para el WHERE.
  #9 (permalink)  
Antiguo 28/01/2010, 05:11
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

Vale flipisnetlo he ejecutado en phpmyadmin lo siguiente:

"SELECT * FROM bd.contratos WHERE cif="123456 OR idcontrato like '%".12."%' or cif like '%".12."%' or idservicio like '%".12."%' or fAlta like '%".12."%' or fBaja like '%".12."%' or Horas like '%".12."%'";

y me devuelve un error de la sql:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"SELECT * FROM bd.contratos WHERE cif="123456 OR idcontrato like '%"12"%' or cif' at line 1

y la estructura de la tabla es la siguiente:

CREATE TABLE IF NOT EXISTS `contratos` (
`idcontrato` smallint(6) NOT NULL auto_increment,
`cif` tinytext NOT NULL,
`idservicio` smallint(6) NOT NULL,
`fAlta` date NOT NULL,
`fBaja` date NOT NULL,
`Horas` time NOT NULL,
PRIMARY KEY (`idcontrato`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=234 ;
  #10 (permalink)  
Antiguo 28/01/2010, 05:22
 
Fecha de Ingreso: noviembre-2009
Mensajes: 20
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Duda en una consulta

El campo cif es tinytext. Tiene que ir entre comillas simples.

Código PHP:
if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.

$criterio "SELECT * FROM bd.contratos WHERE cif='".$id."'";
$criterio .= " OR idcontrato like '%".$txt_criterio."%' or cif like '%".$txt_criterio."%' or idservicio like '%".$txt_criterio."%' or fAlta like '%".$txt_criterio."%' or fBaja like '%".$txt_criterio."%' or Horas like '%".$txt_criterio."%'";
}

$sql=mysql_query($criterio); //modificar aki 
Ademas de eso, no se yo si esos .12 para los campos numéricos y de fecha le servirán.
  #11 (permalink)  
Antiguo 28/01/2010, 05:29
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Duda en una consulta

tendrias que ejecutar esto en phpmyadmin
Código PHP:
SELECT FROM bd.contratos 
WHERE cif
='123456' AND ( idcontrato like '%12%' or cif like '%12%' or idservicio like '%12%' or fAlta like '%12%' or fBaja like '%12%' or Horas like '%12%' 
con esto deberia andar en phpmyadmin.

Para php tendrias que fijarte bien como escapeas las comilla y las variables.
  #12 (permalink)  
Antiguo 28/01/2010, 05:35
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

"SELECT * FROM bd.contratos WHERE cif='"123456 "' OR idcontrato like '%"12 "%' or cif like '%"12 "%' or idservicio like '%"12 "%' or fAlta like '%"12 "%' or fBaja like '%"12 "%' or Horas like '%"12 "%'";

Me sigue devolviendo error de sql
  #13 (permalink)  
Antiguo 28/01/2010, 05:39
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

SELECT *
FROM bd.contratos
WHERE cif = '123456'
AND (
idcontrato LIKE '%12%'
OR cif LIKE '%12%'
OR idservicio LIKE '%12%'
OR fAlta LIKE '%12%'
OR fBaja LIKE '%12%'
OR Horas LIKE '%12%'

Vale he ejecutado esto y me devuelve #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 3 .
  #14 (permalink)  
Antiguo 28/01/2010, 07:08
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda en una consulta

Código PHP:
SELECT FROM bd.contratos WHERE cif '123456' AND (idcontrato LIKE '%12%' OR cif LIKE '%12%' OR idservicio LIKE '%12%' OR fAlta LIKE '%12%' OR fBaja LIKE '%12%' OR Horas LIKE '%12%'
Te faltaba cerrar parentesi.

Aunque viendo tu error, dice que tienes un error cerca de 'LIMIT 0,30' y no veo que hayas usado esa clausula.
  #15 (permalink)  
Antiguo 28/01/2010, 08:38
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

urameshix porfin me hace la consulta sql pero el php sigue sin irme no se porque....

if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio = $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.
$criterio = "SELECT * FROM bd.contratos WHERE cif ='".$id"'";
$criterio .= " AND idcontrato like '%".$txt_criterio."%' or cif like '%".$txt_criterio."%' or idservicio like '%".$txt_criterio."%' or fAlta like '%".$txt_criterio."%' or fBaja like '%".$txt_criterio."%' or Horas like '%".$txt_criterio."%'";
}
  #16 (permalink)  
Antiguo 28/01/2010, 08:43
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda en una consulta

Código PHP:
$criterio "SELECT * FROM bd.contratos WHERE cif = '$id' AND ";
$criterio .= "(idcontrato LIKE '%$txt_criterio%' OR cif LIKE '%$txt_criterio%' OR idservicio LIKE '%$txt_criterio%' OR fAlta LIKE '%$txt_criterio%' OR fBaja LIKE '%$txt_criterio%' OR Horas LIKE '%$txt_criterio%')"
  #17 (permalink)  
Antiguo 28/01/2010, 09:20
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

urameshix muchas gracias por la ayuda pero sigue sin funcionar , sigue devolviendome un error en la consulta...
No lo entiendo la verdad.


if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio = $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.
$criterio = "SELECT * FROM bd.contratos WHERE cif = '$id' AND ";
$criterio .= "(idcontrato LIKE '%$txt_criterio%' OR cif LIKE '%$txt_criterio%' OR idservicio LIKE '%$txt_criterio%' OR fAlta LIKE '%$txt_criterio%' OR fBaja LIKE '%$txt_criterio%' OR Horas LIKE '%$txt_criterio%')";
}
  #18 (permalink)  
Antiguo 28/01/2010, 10:25
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Duda en una consulta

¿Qué error te sale?

Prueba a imprimir la variable antes de ejecutarla con mysql_query:

Código PHP:
echo $criterio
y a ver que te sale.

Un saludo
  #19 (permalink)  
Antiguo 28/01/2010, 14:51
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

El echo me devuelve la sentencia, el 2 es el valor que ha recogido del input:

SELECT * FROM bd.contratos WHERE cif = '' AND (idcontrato LIKE '%2%' OR cif LIKE '%2%' OR idservicio LIKE '%2%' OR fAlta LIKE '%2%' OR fBaja LIKE '%2%' OR Horas LIKE '%2%')


Y el error que me da es el de consulta

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/fran/Escritorio/www/busquedacontratoind.php on line 89


La linea 89 es la siguiente:

$numeroRegistros=mysql_num_rows($res);
que depende de $res=mysql_query($criterio); y de la consulta .

¿Alguien me hecha una mano ?
  #20 (permalink)  
Antiguo 28/01/2010, 16:43
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Duda en una consulta

La consulta te sigue dando error?
Si es que si tendrias que lograr ejecutar el query desde phpmyadmin y luego pasarlo a php.
Si es que la consulta te esta dando bien en el phpmyadmin ejecuta esto desde php y avisame si te da error.
Código PHP:
$res=mysql_query("select * from contratos limit 15"); 
  #21 (permalink)  
Antiguo 29/01/2010, 06:16
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

Muy buenas luis010182 pues la consulta asi:

$res=mysql_query("select * from contratos limit 15");

y en cambio asi no:

if ($_GET["criterio"]!=""){ //Lo obtiene del form
$txt_criterio = $_GET["criterio"]; //Igualamos variables y hacemos abajo la consulta de estas variables en la sql.
$criterio = "SELECT * FROM bd.contratos WHERE cif = '$id' AND ";
$criterio .= "(idcontrato LIKE '%$txt_criterio%' OR cif LIKE '%$txt_criterio%' OR idservicio LIKE '%$txt_criterio%' OR fAlta LIKE '%$txt_criterio%' OR fBaja LIKE '%$txt_criterio%' OR Horas LIKE '%$txt_criterio%')";
}
  #22 (permalink)  
Antiguo 29/01/2010, 06:19
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Duda en una consulta

y ejecuntadolo en el motor sql esta sentencia:

SELECT *
FROM bd.contratos
WHERE cif = '123456'
AND (
idcontrato LIKE '%2%'
OR cif LIKE '%2%'
OR idservicio LIKE '%2%'
OR fAlta LIKE '%2%'
OR fBaja LIKE '%2%'
OR Horas LIKE '%2%'
)
LIMIT 0 , 30

si me devueve bien :S

Etiquetas: Ninguno
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 03:15.