Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Está bien hecha la siguiente consulta?

Estas en el tema de ¿Está bien hecha la siguiente consulta? en el foro de PHP en Foros del Web. Código PHP: elseif ( $sel == "Todos los artículos"  and  $busca !=  "" ) {          $rst_form = mysql_query ( "SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%" . $busca . "%' $tip $zon $order " );      $num_rows = ...
  #1 (permalink)  
Antiguo 13/03/2014, 10:42
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
¿Está bien hecha la siguiente consulta?

Código PHP:
elseif ($sel=="Todos los artículos" and $busca!= "") {    
    
$rst_form=mysql_query("SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' $tip $zon $order ");
    
$num_rows=mysql_num_rows($rst_form); 
Porque NO me funciona y me estoy volivienedo loco...¿Se puede utilizar el LIKE '%".$busca."%' con otras variables como las que hay en ese código que os muestro ?

gracias
  #2 (permalink)  
Antiguo 13/03/2014, 11:18
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Estoy realizando pruebas y mas pruebas y el caso es que ni siquiera funciona poniendo esto:


Código PHP:
elseif ($sel=="Todos los artículos" and $busca!= ""
{    
    
$rst_form=mysql_query("SELECT * FROM form WHERE descripcion LIKE '%".$busca."%'");
    
$num_rows=mysql_num_rows($rst_form); 

Es decir ni siquiera con lo básico funciona....¿Alguien ve algun error?
  #3 (permalink)  
Antiguo 13/03/2014, 11:20
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: ¿Está bien hecha la siguiente consulta?

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
Código PHP:
elseif ($sel=="Todos los artículos" and $busca!= "") {    
    
$rst_form=mysql_query("SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' $tip $zon $order ");
    
$num_rows=mysql_num_rows($rst_form); 
Porque NO me funciona y me estoy volivienedo loco...¿Se puede utilizar el LIKE '%".$busca."%' con otras variables como las que hay en ese código que os muestro ?

gracias
Sin saber lo que las otras variables contienen, eso no se puede responder. Bien podrías estar poniendo basira, y no lo sabríamos...
Al menos postea la query tal y como queda armada, antes de ejecutarla... es decir, cuando ya las variables fueron reemplazadas por sus valores.
Además sería muy buena idea que capturaras los erroes posibles que la base de datos devuelve. Al menos así sabríamos si hay errores de sintaxis...

Y trata de ser concreto: ¿No te funciona por qué? ¿Devuelve errores?

¿Hiciste una prueba de esa query en phpMyadmin?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/03/2014, 11:46
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

OK

Código PHP:
Ver original
  1. elseif ($sel=="Todos los artículos" and $busca!= "") { 
  2.     $rst_form=mysql_query("SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' ORDER by id DESC ");
  3.     $num_rows=mysql_num_rows($rst_form);


Así quedaría la consulta ya que los otros campos estan vacios porque no se seleccionó nada...


No devuelve ningun error en la ejecucion desde la web simplemente no muestra nada como si no encontrara nada pero en realidad si debería encontrar resultados..
  #5 (permalink)  
Antiguo 13/03/2014, 11:53
Avatar de fbedia  
Fecha de Ingreso: julio-2010
Mensajes: 159
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: ¿Está bien hecha la siguiente consulta?

¿Podrias decir que te devuelve el MySQL Admin si ejecutas directamente la consulta en la BD?

Ejecuta por ejemplo:
SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%zapato%' ORDER by id DESC

Si no te devuelve ningun error es que tu consulta esta bien... y por lo tanto el problema esta en la variable $buscar
__________________
Follow me on twitter @franbedia
  #6 (permalink)  
Antiguo 13/03/2014, 11:54
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: ¿Está bien hecha la siguiente consulta?

En primer lugar asegurémonbos de que eso tiene algo realmente válido:
Código PHP:
Ver original
  1. elseif ($sel=="Todos los artículos" and $busca!= "") {  
  2.     $qry = "SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' ORDER by id DESC ";
  3.     echo $qry;
  4.     $rst_form=mysql_query($qry) or die(mysql_error());
  5.     if(!$rst_form)
  6.       {"Error al ejecutar la consulta.";}
  7.    else
  8.       {
  9.     $num_rows=mysql_num_rows($rst_form);}

Aunque yo probaría así también, simplemente para ver la diferencia:
Código PHP:
Ver original
  1. $qry = "SELECT * FROM form WHERE seccion = 'Moda' OR descripcion LIKE '%".$busca."%'
__________________
¿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 13/03/2014, 12:17
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

En php my admin no me da nigun error me muestra la busqueda correctamente
  #8 (permalink)  
Antiguo 13/03/2014, 12:20
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: ¿Está bien hecha la siguiente consulta?

Como te comentan gnzsoloyo y fbedia, verifica:

1. Si tu consulta funciona bien en el phpmyadmin.

Código MySQL:
Ver original
  1. SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' ORDER by id DESC

2. Que la variable $buscar esté trayendo algún valor, puedes usar

Código PHP:
var_dump($buscar); 
3. Si lo anterior se cumple, que las condiciones se estén cumpliendo y realmente sean las adecuadas:

Código PHP:
$sel=="Todos los artículos" and $busca!= "" 
Saludos!!
  #9 (permalink)  
Antiguo 13/03/2014, 12:23
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

En cuanto a la variable $busca:

Primero la declaro vacía al principio de todo después del head:


Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. $busca="";
  5. $busca=$_POST['busca'];



y luego tengo el codigo que os e puesto arriba...:


si NO se utiliza el buscador tengo lo siguiente:

Cita:
Código PHP:
Ver original
  1. if ($sel=="Todos los artículos" and $busca=="")
  2. {  
  3.     $rst_form=mysql_query("SELECT * FROM form WHERE seccion = 'Moda' $tip $zon $order ");
  4.     $num_rows=mysql_num_rows($rst_form);
Y si SI utila el buscador tengo lo siguiente:


Código PHP:
Ver original
  1. elseif ($sel=="Todos los artículos" and $busca!="")
  2. {  
  3.     $rst_form=mysql_query("SELECT * FROM form WHERE seccion = 'Moda' AND descripcion LIKE '%".$busca."%' $tip $zon $order ");
  4.     $num_rows=mysql_num_rows($rst_form);
  #10 (permalink)  
Antiguo 13/03/2014, 12:30
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: ¿Está bien hecha la siguiente consulta?

Con

Código PHP:
$busca $_POST['busca']; 
es más que suficiente. Pon var_dump($_POST); para que veas que valor esta trayendo del formulario.

¿Por otro lado, que valores toman $tip $zon $order y desde dónde vienen?

Empieza por esas validaciones.

Saludos!!
  #11 (permalink)  
Antiguo 13/03/2014, 12:35
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

A ver, $tip y $zon están vacias en estas comprobaciones, y $ order es = ORDER by id DESC

tengo un echo $busca y me muestra el valor que escribo en el buscador...(cuando se inicia la página está vacio)

Creo definitivamente que el problema lo tengo en el $busca o en los if que los compara...
  #12 (permalink)  
Antiguo 13/03/2014, 12:45
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: ¿Está bien hecha la siguiente consulta?

Verifica si estás entrando en los if, es decir si se cumple una condición u otra:

por ejemplo, si dices que $busca si trae algún valor:

Código PHP:
if ($sel=="Todos los artículos" and $busca==""
{
    echo 
'llegó'
}
elseif (
$sel=="Todos los artículos" and $busca!=""
{
    echo 
'llegó';

} else {
    echo 
'no llegó';

  #13 (permalink)  
Antiguo 14/03/2014, 08:24
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Me da el siguiente error, que no tengo ni la menor idea de por que ocurre, para la comprobación e puesto lo siguiente:


Código PHP:
Ver original
  1. //Consultas con todo
  2.  
  3. if ($sel=="Todos los artículos" and $busca== "")
  4. {  
  5.     echo 'llego con todos y busca vacio';
  6. }
  7. elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado" or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s" and $busca== ""){
  8.    
  9.     echo 'llego con otros y busca vacio';
  10.    
  11. }


Código PHP:
Ver original
  1. //Consultas con buscador
  2.  
  3. elseif ($sel=="Todos los artículos" and $busca!= "") { 
  4.     echo 'llego con todos y busca no vacio';
  5. }
  6. elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado" or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s" and $busca!= ""){
  7.    
  8.    
  9.         echo 'llego con otros y busca no vacio';
  10.    
  11. }


Y al realizar la prueba desde la web obtengo lo siguiente:

*Si marco todo y el buscador vacío me muestra en pantalla:

llego con todos y busca vacio ------ (este OK!!)

*Si marco todos y escribo en buscador me muestra:

llego con otros y busca vacio ------ (este ERROR!!)

*Si marco otros y buscador vacio:

llego con otros y busca vacio ------ (este OK!!)

*Y por último si marco otros y escribo en buscador:

llego con otros y busca vacio ------ (este ERROR!!)


¿Por que pasa ésto?.....No entiendo nada...Gracias!
  #14 (permalink)  
Antiguo 14/03/2014, 08:52
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

E dado un valor fijo a $busca y me sigue entrando en el siguiente if:

Código PHP:
elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado" or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s" and $busca== ""){
    
    echo 
'llego con otros y busca vacio';
    

Ya que me muestra: llego con otros y busca vacío, asi que interpreto que el error está en la construccion de ese elseif

¿Veis el error?, porque yo no...

GRACIAS!
  #15 (permalink)  
Antiguo 14/03/2014, 09:18
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Bien amigos acabo de solucionar el problema os comento como ha sido, creo que no me funionaba mas bien por la interpretacion que hacia el navegador del código ya que he comabiado los or por || y a salido funcionando, al final la consulta quedó así:


Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" || "Hombre - Complementos" || "Hombre - Calzado" || "Mujer - Ropa" || "Mujer - Complementos" || "Mujer - Calzado" || "Niñ@s" and $busca== ""){


Gracias!
  #16 (permalink)  
Antiguo 14/03/2014, 09:22
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: ¿Está bien hecha la siguiente consulta?

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
E dado un valor fijo a $busca y me sigue entrando en el siguiente if:

Código PHP:
elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado" or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s" and $busca== ""){
    
    echo 
'llego con otros y busca vacio';
    

Ya que me muestra: llego con otros y busca vacío, asi que interpreto que el error está en la construccion de ese elseif

¿Veis el error?, porque yo no...

GRACIAS!
A mi entender, el problema es que no comprendes el uso de operadores lógicos...
Ese IF no tiene ningun senntido, porque sólo require que uno de los primeros sea TRUE para que entre, sin importar si $busca tiene algo.

¿Estás seguro de entender el uso de AND y OR?

Mira, en ese contexto, todo eso da TRUE y por tanto va a entrar si o si a ese caso.
Prueba esto y verás:
Código PHP:
<?php

$sel 
"";
$bsuca "otra cosa";
if (
$sel=="Hombre - Ropa")
{echo 
"opcion 1\n";}
if (
"Hombre - Complementos")
{echo 
"opcion 2\n";}
if (
"Hombre - Calzado")
{echo 
"opcion 3\n";}
if (
"Mujer - Ropa")
{echo 
"opcion 4\n";}
if (
"Mujer - Complementos")
{echo 
"opcion 5\n";}
if (
"Mujer - Calzado")
{echo 
"opcion 6\n";}
if (
"Niñ@s")
{echo 
"opcion 7\n";}
if (
$bsuca =="")
{echo 
"opcion 8\n";}
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 14/03/2014, 09:33
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: ¿Está bien hecha la siguiente consulta?

No hay diferencia semántica entre esto:
Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" || "Hombre - Complementos" || "Hombre - Calzado"
  2. || "Mujer - Ropa" || "Mujer - Complementos" || "Mujer - Calzado" || "Niñ@s"
  3. and $busca== "")

Y esto:
Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado"
  2. or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s"
  3. and $busca== "")

Francamente no veo cómo uno te peude funcionar y otro no...
En especial, si miras el uso según lo que dice el manual: http://www.php.net/manual/es/languag...rs.logical.php
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 15/03/2014, 05:43
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Yo también creía que era lo mismo or y || y de hecho es lo mismo creo, pero puede ser que sea diferente la interpretación del código de los navegadores web, te comento que el or me sirve si son 2 o 3 cuestiones es decir:

Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado){
  2.  
  3. }


pero si es una enumeracion más larga no me funcionaba correctamente, y ahora poniendo el signo || si funciona..no se igual que tu muy bien por que, pero así es..

y otra cosa..¿estas seguro que entraría con que se cumpla sólo uno de los primeros?

tengo entendido que si en un condicional existe un and con otra comparación, para que entre a él debe también cumplir ésa condición, ¿si no que sentido tiene? ejemplo:

Código PHP:
Ver original
  1. if ($sel=="Hombre" and $sel2=="Ropa"){
  2.  
  3. }

Para que entrara en ese if debería de cumplirse que sel sea Hombre y sel2 Ropa, los dos, de ahí viene el and, te quiero decir que no entraria solo si cumple el primer sel y el segundo no...

¿Me equivoco?

Saludos!
  #19 (permalink)  
Antiguo 15/03/2014, 08:07
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: ¿Está bien hecha la siguiente consulta?

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
Yo también creía que era lo mismo or y || y de hecho es lo mismo creo, pero puede ser que sea diferente la interpretación del código de los navegadores web, te comento que el or me sirve si son 2 o 3 cuestiones es decir:

pero si es una enumeracion más larga no me funcionaba correctamente, y ahora poniendo el signo || si funciona..no se igual que tu muy bien por que, pero así es..

y otra cosa..¿estas seguro que entraría con que se cumpla sólo uno de los primeros?

tengo entendido que si en un condicional existe un and con otra comparación, para que entre a él debe también cumplir ésa condición, ¿si no que sentido tiene?
Para que entrara en ese if debería de cumplirse que sel sea Hombre y sel2 Ropa, los dos, de ahí viene el and, te quiero decir que no entraria solo si cumple el primer sel y el segundo no...

¿Me equivoco?

Saludos!
La verdad es que me asombra lo que estás diciendo, porque demuestra al menos tres cosas:
1) Ni te molestaste en probar lo que te dije respecto al funcionamiento de un I() con un valor constante.
2) No conoces nada de lógica proposicional.
3) Ni siquiera tienes claro cómo se ejecuta el PHP....

No quiero ofenderte, pero hay cosas que con sólo decirlas ...

Vamos por partes:
1) Si hubieses probado el ejemplo que te puse, habrías notado que si pones una constante como único valor del IF(), se evalúa como verdadero (true), por la simple razón de que para que una constante de true en PHP lo único que debe suceder es que exista.
¿Qué implica eso?
Pues simplemente que todos esos valores que pones dan el mismo resultado que poner
Código PHP:
TRUE or TRUE or TRUE 
Creo (no lo probé) que sólo darían FALSE si pones un cero entre comillas ("0").

2) Un OR o su equivalente "||" es una disyunción lógica, y una proposición (el IF) se evalúa por el valor de verdad de una de ambas, pero si te molestas en leer logica proposicional verá que la disyunción es verdadera si:
a) Ambas son verdad.
b) La primera es verdad y la segunda falsa.
c) La primera es falsa y la segunda es verdad.
Esto significa que para ser FALSE, ambas tienen que ser falsas.

Un AND o su equivalente "&&", es una conjunción lógica y en la proposición sólo es verdad si ambas partes de la proposicion son verdaeras y falso en todos los otros casos.

Finalmente, cuando tienes una proposición compuesta de varias condiciones, se evalúan de izquierda a derecha,y los resultados del primer par son la entrada del tercer parámetro .
Esto significa que:
Código PHP:
TRUE or FALSE or FALSE or FALSE and TRUE 
Es da verdadero...
¿Por qué?
Porque el primer par da TRUE (disyunción), ese resultado se compara con el tercero y da TRUE (otra disyunción, lo mismo pasa con la siguiente, y para cuando llega a la última el resultado es TRUE, por lo que se compara como
Código PHP:
TRUE and TRUE 
Dando por resultado verdadero.

¿Se va entendiendo?

Estas cosas que te digo no dependen de ningún navegador ni lenguaje, porque son parte inherente a todos los lenguajes y sistemas de programación. Son lógica basal de todo.

3) El tema de la interpretación de los navegadores, te recomiendo que ni lo menciones, porque recibirás la misma respuesta (con otras palabras) que te daré ahora: El PHP NO SE EJECUTA EN LOS NAVEGADORES. Se ejecuta en los servidores, por ende nada tienen que ver en este asunto.

Ni lo menciones de nuevo, porque es conocimiento básico de PHP.

Resumiendo, para que te funcione mejor la cosa, prueba esto y recién entonces estarás haciendo algo bueno en ese IF:
Código PHP:
elseif ($sel=="Hombre - Ropa" or $sel=="Hombre - Complementos" or $sel=="Hombre - Calzado){
 

¿Se entiende?

Tienes que hacer la comparación contra la variable en todas las ocasiones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #20 (permalink)  
Antiguo 18/03/2014, 03:54
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Ok, pido disculpas por mis desconocimientos en php y en general en programación web, de hecho estoy aprendiendo de forma autodidacta jeje..


Pero creo que no acabas de entender el problema que tenía, está claro y ya sabia que para que entre en un or, es suficiente con que una sea verdadera, y al tener un and se debería de cumplir tambien la segunda condición es decir tal y como yo lo tenía

Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado"
  2. or "Mujer - Ropa" or "Mujer - Complementos" or "Mujer - Calzado" or "Niñ@s"
  3. and $busca== "")

Para que entrara en ese if, es tan sencillo como que $sel fuera igual a alguna de las siguientes opciones: Hombre - Ropa, Hombre - Complementos, Hombre - Calzado, Mujer - Ropa, Mujer - Complementos, Mujer - Calzado, Niñ@s.

Con que UNA de esas opciones fuera verdad y ADEMAS (and) $busca estuviera vacío ($busca== "") debería entrar en ese if, que es exactamente lo que yo quería, pero lo que me estaba ocurriendo es que entraba en otro...(más arriba escribí la prueba que hice)..

Y el resultado es que al cambiar solamente or por || (sin cambiar absolutamente nada más) entró perfectamente a su if correspondiente..¿Por que? no lo se, ya que como te digo estoy aprendiendo jeje


y por último yo tenia entendido que:
Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" or $sel=="Hombre - Complementos" or $sel=="Hombre - Calzado){
  2.  
  3. }

y esto:

Código PHP:
Ver original
  1. if ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado"){
  2.  
  3. }

compara igualmente la variable $sel con el or, luego ¿no es lo mismo?


GRACIAS!
  #21 (permalink)  
Antiguo 18/03/2014, 06:36
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: ¿Está bien hecha la siguiente consulta?

Cita:
Iniciado por angel_xx_1990 Ver Mensaje
(...)
y por último yo tenia entendido que:
Código PHP:
Ver original
  1. elseif ($sel=="Hombre - Ropa" or $sel=="Hombre - Complementos" or $sel=="Hombre - Calzado){
  2.  
  3. }

y esto:

Código PHP:
Ver original
  1. if ($sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado"){
  2.  
  3. }

compara igualmente la variable $sel con el or, luego ¿no es lo mismo?


GRACIAS!


No. No es lo mismo...
¿De dónde sacaste esa idea? Es la primera vez en mi vida que escucho algo así.

Mira, para hacerte una demostración simple de tu error, copia esto que te paso y pruébalo:
Código PHP:
<?php
$sel 
"Opcion 0";
if (
$sel=="Hombre - Ropa" or "Hombre - Complementos" or "Hombre - Calzado"){
 echo 
"Si estas viendo esto en pantalla es que estás equivocado..."
}
?>
Vamos a hacer una aclaración respecto a lógica proposicional: Los operadores AND, OR, XOR, NOT vinculan comparaciones lógicas entre dos valores, y esas comparaciones deben ser realizadas por medio de =, <, >, >=, <= y <> (el "=" en PHP es "==", pero eso es por una característica del lenguaje). Lo que significa que luego de un OR, debe haber una comparación explícita entre dos valores, y no una constante.
Para que quede claro, en lógica, una constante como parámetro, es siempre verdadera.

Cono nota para que tengas en cuenta, en todos los cursos de programación que puedas asistir verás que una de los temas es precisamente lógica proposicional, y eso es porque cada vez que debes crear controladores de flujo, o condiciones de derivación, estás usando lógica proposicional.
Siempre.

Finalmente, si lo que necesitas es que compare A o B o C y D, es decir alguno de los tres primeros valores, y si o sí el último, debes usar paréntesis para controlar la evaluación de las condiciones:
Código PHP:
elseif (($sel=="Hombre - Ropa" or $sel=="Hombre - Complementos" or $sel=="Hombre - Calzado" or $sel=="Mujer - Ropa" or $sel=="Mujer - Complementos" or $sel=="Mujer - Calzado" or "Niñ@s")
and 
$busca== ""
Los apréntesis, como en matemática, regulan la forma de realizar las operaciones.
Recuerda que no es lo mismo 3*2+5 que (3*2)+5. En lógica no es lo mismo A or B and C, que (A or B) and C...

Estudia un poco de esto: Lógica Proposicional
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #22 (permalink)  
Antiguo 19/03/2014, 07:38
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Está bien hecha la siguiente consulta?

Me has convencido, este fin de semana que tenga tiempo para ello cambiaré mi código por el que me recomiendas..

De todas formas mi código tal como te dije que lo puse al final es decir con || funciona bien con la prueba que hice, ¿es posible que haya hecho mal la prueba?

¿o simplemente también funciona con el código así como lo tengo actualmente?

Me da miedo no lo vaya a dejar creyendo que funciona y luego...nada.. ya os contaré

Gracias!!
  #23 (permalink)  
Antiguo 19/03/2014, 07:48
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: ¿Está bien hecha la siguiente consulta?

Cita:
De todas formas mi código tal como te dije que lo puse al final es decir con || funciona bien con la prueba que hice, ¿es posible que haya hecho mal la prueba?
No exactamente. El tema pasa por que debes hacer una prueba que seguro deba fallar. Es la prueba crítica.
Es probable que hayas seleccionado correctamente los valores (en especial si provienen de un combo), pero lo que está sucediendo es que el IF no lo evalúa en realidad. Simplemente se está haciendo una prueba con valores que no pueden fallar jamás.
Básicamente, tienes que provocar un fallo, para verificar que el IF realmente funciona.
La única opción que se me ocurre es que invoques ese scrript desde otro, donde le pases un valor de parámetro imposible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 20/03/2014 a las 10:36

Etiquetas: select, siguiente, sql, variable
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 08:01.