Foros del Web » Programando para Internet » PHP »

Problema con condicionales

Estas en el tema de Problema con condicionales en el foro de PHP en Foros del Web. Buenas tardes, A continuación les expongo mi problema: Resulta, que estoy intentando hacer varias llamadas a la bd (solicitar datos). Dependiendo del condicional que se ...
  #1 (permalink)  
Antiguo 17/11/2011, 13:35
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Pregunta Problema con condicionales

Buenas tardes,

A continuación les expongo mi problema: Resulta, que estoy intentando hacer varias llamadas a la bd (solicitar datos). Dependiendo del condicional que se cumpla, esta traerá consigo una llamada a la bd.

Todo el script funciona bien, hasta llegar al buscador (un pequeño formulario donde se agrega un campo y luego este se compara con los datos en la bd y de encontrar coincidencias muestra los resultados en pantalla). Al hacer ese paso, no devuelve ningún resultado.

A continuación el script

Código PHP:
    //datos recuperados por get y post convertidos en variables
    
@$categoria $_GET['c'];
    @
$marca $_GET['m'];
    @
$dato $_POST['dato'];

    if(@
$categoria != "" AND @$marca == "" AND @$dato == "" )
    {
        
$result mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE categoria='$categoria' ORDER BY create_at ASC"$coneccion);
        
$numero mysql_num_rows($result); // obtenemos el número de filas
    
}
    elseif (@
$marca != "" AND @$categoria == "" AND @$dato == "") {
        
$result mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE marca='$marca' ORDER BY create_at ASC"$coneccion);
        
$numero mysql_num_rows($result); // obtenemos el número de filas
    
}
    elseif (@
$dato != "" AND @$categoria == "" AND @$marca == "") {
        
$result $buscar mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('$dato')"$coneccion);
        
$numero mysql_num_rows($result); // obtenemos el número de filas    
    
}
    else {
        
$result mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE estado='Activo' ORDER BY create_at ASC"$coneccion);
        
$numero mysql_num_rows($result); // obtenemos el número de filas
    

Hice echos de los tres datos recuperados por el get y post y efectivamente, están recogiendo los datos. Alguna idea de cual sea el problema?

Gracias de antemano.
  #2 (permalink)  
Antiguo 17/11/2011, 13:46
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Las consultas te las realiza bien?? no te tira error de mysql??, fijate de probar como para debugear, de hacer un echo de todas las consultas. Por ejemplo:

Código PHP:
Ver original
  1. //datos recuperados por get y post convertidos en variables
  2.     @$categoria = $_GET['c'];
  3.     @$marca = $_GET['m'];
  4.     @$dato = $_POST['dato'];
  5.  
  6.     if(@$categoria != "" AND @$marca == "" AND @$dato == "" )
  7.     {
  8.         // echo de la consulta por pantalla para ver que me esta escribiendo
  9.         echo "SELECT nombre, foto1, SEO, idproducto FROM productos WHERE categoria='$categoria' ORDER BY create_at ASC";
  10.  
  11.         $result = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE categoria='$categoria' ORDER BY create_at ASC", $coneccion) or die(mysql_error());
  12.         $numero = mysql_num_rows($result); // obtenemos el número de filas
  13.     }
  14.     elseif (@$marca != "" AND @$categoria == "" AND @$dato == "") {
  15.         // echo de la consulta
  16.         echo "SELECT nombre, foto1, SEO, idproducto FROM productos WHERE marca='$marca' ORDER BY create_at ASC";
  17.  
  18.         $result = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE marca='$marca' ORDER BY create_at ASC", $coneccion) or die(mysql_error());
  19.         $numero = mysql_num_rows($result); // obtenemos el número de filas
  20.     }
  21.     elseif (@$dato != "" AND @$categoria == "" AND @$marca == "") {
  22.         // echo de la consulta
  23.         echo "SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('$dato')";
  24.  
  25.         $result = $buscar = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('$dato')", $coneccion) or die(mysql_error());
  26.         $numero = mysql_num_rows($result); // obtenemos el número de filas    
  27.     }
  28.     else {
  29.         // echo de la consulta
  30.         echo "SELECT nombre, foto1, SEO, idproducto FROM productos WHERE estado='Activo' ORDER BY create_at ASC";
  31.  
  32.         $result = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE estado='Activo' ORDER BY create_at ASC", $coneccion) or die(mysql_error());
  33.         $numero = mysql_num_rows($result); // obtenemos el número de filas
  34.     }

Coloque 2 cosas nuevas en tu codigo, primero la impresion del sql que estas generando para ver si esta tomando los valores de php que le estas pasando, si ves que en el where te falta el dato fijate de concatenar bien el string con php. Ejemplo:

Código PHP:
Ver original
  1. mysql_query("SELECT ... WHERE id = " . $id . " AND nombre = '" . $nombre . "'");

Y despues agregue despues de cada mysql_query() un or die() para que imprima el error de sql en caso de fallar y saber bien en donde te equivocaste.

Proba esto y avisame ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 17/11/2011, 14:01
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

Gracias por responder.

Me realiza bien todas las consultas, excepto la tercera. A continuación, la coloco:

Código PHP:
    elseif (@$dato != "" AND @$categoria == "" AND @$marca == ""
    {
        
//echo prueba
        
echo "SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('$dato')";
        
        
$result $buscar mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('$dato')"$coneccion) or die(mysql_error());
        
$numero mysql_num_rows($result); // obtenemos el número de filas    
    

No tira tampoco ningún, simplemente no realiza el match y por ende no encuentra coincidencias. Nuevamente, gracias por prestarle atención a mi post.
  #4 (permalink)  
Antiguo 17/11/2011, 14:11
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Entonces el problema es de datos de la base que no encuentra coincidencias, no de código php? o el problema sigue y no sabes cual es? asi vemos si cerramos la discucion o no.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 17/11/2011, 14:15
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

El problema sigue.

Por ejemplo, le paso un dato (que estoy seguro que se encuentra en la bd) por el formulario de búsqueda. Luego, dicho dato lo convierto en la variable $dato y al ejecutar el script, cero resultados.

Alguna idea?
  #6 (permalink)  
Antiguo 17/11/2011, 14:21
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Proba esta linea ponerla asi:

Código PHP:
Ver original
  1. $result = $buscar = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('" . $dato . "')", $coneccion) or die(mysql_error());

Si esto no trae nada pueden ser 2 cosas:

1º) que $dato no traiga nada
2º) que la consulta no este correcta lógicamente hablando.

Probalo y contame
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #7 (permalink)  
Antiguo 17/11/2011, 14:36
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

Probé los cambios que mencionas y el echo de la consulta muestra el dato introducido en el form, pero sigue sin hacer el Match y mostrar los artículos que coincidan.
  #8 (permalink)  
Antiguo 17/11/2011, 14:39
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Proba de tirarle al phpmyadmin la consulta y hardcodearle el valor de $dato por el que sabes que hace match

ejemplo:

Código SQL:
Ver original
  1. SELECT nombre, foto1, SEO, idproducto FROM productos WHERE MATCH(nombre, categoria, tipo, marca) AGAINST ('algo')

Si te trae datos vemos que puede llegar a ser, si no te trae nada es que la consulta esta mal formulada.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #9 (permalink)  
Antiguo 17/11/2011, 14:50
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

Pues, no trae ningún dato.

Será entonces problema en la consulta. Si tienes alguna otra sugerencia y recomendación te la agradecería.

Saludos.
  #10 (permalink)  
Antiguo 17/11/2011, 14:53
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Decime que necesitas hacer en la 3era evaluacion y te puedo orientar, igualmente no conozco la estructura de la base pero vemos que podemos hacer ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #11 (permalink)  
Antiguo 17/11/2011, 15:02
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

Ok, lo que quiero hacer en la tercera evaluación es buscar coincidencias de un dato introducido en un formulario de búsqueda por el usuario y los registros que se encuentran en una tabla de mi base de datos. En pocas palabras, quiero hacer un buscador.

La estructura de la tabla que hace uso el script, es la siguiente:

idproducto int(11)
nombre varchar(45)
SEO varchar(60)
categoria varchar(45)
tipo varchar(45)
marca varchar(45)
precio bigint(50)
estado varchar(45)
sap varchar(50)
noparte varchar(50)
descripcion text
clasificacion varchar(45)
foto1 varchar(30)
foto2 varchar(30)
foto3 varchar(30)
foto4 varchar(30)
foto5 varchar(30)
foto6 varchar(30)
create_at timestamp

cree un índice para realizar el match:

El nombre clave es "nombre" tipo "fulltext" y por último, los campos involucrados (nombre, categoria, tipo, marca)
  #12 (permalink)  
Antiguo 17/11/2011, 15:09
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Probá esto:

Código PHP:
Ver original
  1. $result = $buscar = mysql_query("SELECT nombre, foto1, SEO, idproducto FROM productos WHERE nombre LIKE '%" . $dato . "%' OR categoria LIKE '%" . $dato . "%' OR tipo LIKE '%" . $dato . "%' OR marca LIKE '%" . $dato . "%'") or die(mysql_error());
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #13 (permalink)  
Antiguo 17/11/2011, 15:19
 
Fecha de Ingreso: enero-2011
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Problema con condicionales

Muchas Gracias!

Doy el tema por cerrado.
  #14 (permalink)  
Antiguo 17/11/2011, 15:20
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: Problema con condicionales

Buenisimo!, mucha suerte con eso manuel2788 ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: condicional
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 17:35.