Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ejecutar otra consulta en caso de que la anterior esté vaica

Estas en el tema de ejecutar otra consulta en caso de que la anterior esté vaica en el foro de PHP en Foros del Web. Hola a todos Desde un buscador envio variable a una sentencia, en caso de que la palabra sea identica se ejecuta y muestra resultados y ...
  #1 (permalink)  
Antiguo 03/04/2015, 14:28
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Sonrisa ejecutar otra consulta en caso de que la anterior esté vaica

Hola a todos

Desde un buscador envio variable a una sentencia, en caso de que la palabra sea identica se ejecuta y muestra resultados y en caso de que no sea identica no muestra nada, lo que quiero conseguir es que cuando la palabra no sea identica se ejecute otra consulta.

desde el buscador llega la varible $productos y la primera consulta que hago es:
Código PHP:
$sentence "SELECT * FROM table WHERE cosa=$productos"
En caso de que cosa = $productos se muestran resultados en caso de que no sea identico quiero ejecutar
Código PHP:
$sentence "SELECT * FROM table WHERE cosa LIKE $productos%"
He probado :
Código PHP:
if(empty($sentence))  
{
$sentence "SELECT * FROM table WHERE cosa LIKE $productos%";
}
//también con

$num=count($sentence)
if(
$num==0){
$sentence "SELECT * FROM table WHERE cosa LIKE $productos%";
}
 
tambien 

is_null
, !$sentence 
Si alguien me puede ayudar....

muchas gracias y saludos
  #2 (permalink)  
Antiguo 03/04/2015, 14:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

¿Y en qué momento estás ejecutando las consultas?

Porque vamos, ahí sólo estás tratando de comparar cadenas de texto, y así no va.

Según lo que muestras sólo picas código sin saber lo que ocurre, ¿así piensas que vas a lograr algo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/04/2015, 14:52
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

creo que te has dejado las comillas simples

Código PHP:
Ver original
  1. $sentence = "SELECT * FROM table WHERE cosa='$productos'";
  2. $sentence = "SELECT * FROM table WHERE cosa LIKE '$productos%'";
  #4 (permalink)  
Antiguo 03/04/2015, 15:03
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

Bueno yo lo aria recuperando el dato d la consulta y si el dato es igual a vacio ejecutaria la otra consulta
  #5 (permalink)  
Antiguo 03/04/2015, 15:08
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

La ejecuto así:

Código PHP:

 
public function getSearch($search,$filterData null){
            
$products=htmlspecialchars($_REQUEST["search"]);
            if(isset(
$products) && ($products != "") && ($products<>'')){
            
$sentence "SELECT *  WHERE cosa ='".$productos."'";
            
$sentence $sentence." ORDER BY precio ".$orden."";
            
$sentence $sentence."  LIMIT 100";

if(!
$sentence){
                       
$sentence "SELECT *  WHERE cosa LIKE'".$productos%."'";
            
$sentence $sentence." ORDER BY precio ".$orden."";
            
$sentence $sentence."  LIMIT 100";
}
                        
$consulta$this->getConect()->prepare($sentence);
             
$consulta->execute();
                        
$existData false;


__________________
pips
  #6 (permalink)  
Antiguo 03/04/2015, 15:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

Mal, mal, mal.

¿No te das cuenta que ejecutas la consulta sólo al final del método?

Y vamos, que esto es absurdo:
Código PHP:
Ver original
  1. if(!$sentence){
  2.   $sentence = "SELECT *  WHERE cosa LIKE'".$productos%."'";
  3.   $sentence = $sentence." ORDER BY precio ".$orden."";
  4.   $sentence = $sentence."  LIMIT 100";
  5. }

El if() jamás se va a completar porque $sentence ya existe, tiene un valor, tu mismo lo has colocado así:
Código PHP:
Ver original
  1. $sentence = "SELECT *  WHERE cosa ='".$productos."'";
  2. $sentence = $sentence." ORDER BY precio ".$orden."";
  3. $sentence = $sentence."  LIMIT 100";

Eso lo haces antes del if(), y por eso mismo jamás funcionará, porque $sentence ya tiene algo.

Y ese algo es la consulta, ¿no querrás comparar el resultado de la consulta?

En fin, está por las patas toda tu teoría.

Piensa de nuevo tu idea.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 03/04/2015, 15:13
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: ejecutar otra consulta en caso de que la anterior esté vaica

Eso, sin contar con que, además no estas invocando tablas, por lo que cualquiera de las dos disparará un error de sintaxis.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 03/04/2015, 15:19
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

Voy mejorando???

Código PHP:
 public function getSearch($search,$filterData null){
            
$products=htmlspecialchars($_REQUEST["search"]);
            if(isset(
$products) && ($products != "") && ($products<>'')){
            
$sentence "SELECT *  WHERE cosa ='".$productos."'";
            
$sentence $sentence." ORDER BY precio ".$orden."";
            
$sentence $sentence."  LIMIT 100";
             
$consulta$this->getConect()->prepare($sentence);
             
$consulta->execute();
             
$existData false;

                 if(!
$consulta){
                       
$sentences "SELECT *  WHERE cosa LIKE'".$productos%."'";
                        
$sentences $sentences." ORDER BY precio ".$orden."";
                        
$sentences $sentences."  LIMIT 100";
                        
$consulta$this->getConect()->prepare($sentences);
                        
$consulta->execute();
                        
$existData false;
}


__________________
pips
  #9 (permalink)  
Antiguo 03/04/2015, 15:23
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: ejecutar otra consulta en caso de que la anterior esté vaica

Sigues sin poner la tabla...
Creo que necesitas repasar SQL básico.

¿Supones que MySQL puede adivinar de que tabla debe sacar esos datos?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 03/04/2015, 15:25
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

perdon!!!!!!!!!!!

cuenta con que hay FROM
__________________
pips
  #11 (permalink)  
Antiguo 03/04/2015, 15:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

Código PHP:
public function getSearch($search,$filterData null){ 
            
$products=htmlspecialchars($_REQUEST["search"]); 
            if(isset(
$products) && ($products != "") && ($products<>'')){ 
            
$sentence "SELECT producto FROM tabla  WHERE cosa ='".$productos."'"
            
$sentence $sentence." ORDER BY precio ".$orden.""
            
$sentence $sentence."  LIMIT 100"
             
$consulta$this->getConect()->prepare($sentence); 
             
$consulta->execute(); 
             
$existData false

                 if(!
$consulta){ 
                       
$sentences "SELECT producto FROM tabla  WHERE cosa LIKE'".$productos%."'"
                        
$sentences $sentences." ORDER BY precio ".$orden.""
                        
$sentences $sentences."  LIMIT 100"
                        
$consulta$this->getConect()->prepare($sentences); 
                        
$consulta->execute(); 
                        
$existData false



__________________
pips
  #12 (permalink)  
Antiguo 03/04/2015, 15:26
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: ejecutar otra consulta en caso de que la anterior esté vaica

No cuento. Corrigelo o postea el código real.
No voy a suponer que lo has hecho.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 03/04/2015, 15:28
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: ejecutar otra consulta en caso de que la anterior esté vaica

$consulta no es lo que debes evaluar, sino el resultado de la ejecución.
Por favor fíjate en el manual como obtener el resultado de la query. Eso es lo que evaluar.

En tu código la segunda consulta nunca se ejecutará, sin importar si la primera trae o no resultados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 03/04/2015, 15:34
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

No está solucionado, le he dado sin querer

ok, la estrucutura es la que debo seguir después de $consulta->execute(); ejecutar la otra consulta???
__________________
pips
  #15 (permalink)  
Antiguo 03/04/2015, 15:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

Código PHP:
public function getSearch($search,$filterData null){  
            
$products=htmlspecialchars($_REQUEST["search"]);  
            if(isset(
$products) && ($products != "") && ($products<>'')){  
            
$sentence "SELECT producto, count(producto) as prod FROM tabla  WHERE cosa ='".$productos."'";  
            
$sentence $sentence." ORDER BY precio ".$orden."";  
            
$sentence $sentence."  LIMIT 100";  
             
$consulta$this->getConect()->prepare($sentence);  
             
$consulta->execute();  
             
$existData false;  

                 if(!
$prod){  
                       
$sentences "SELECT producto FROM tabla  WHERE cosa LIKE'".$productos%."'";  
                        
$sentences $sentences." ORDER BY precio ".$orden."";  
                        
$sentences $sentences."  LIMIT 100";  
                        
$consulta$this->getConect()->prepare($sentences);  
                        
$consulta->execute();  
                        
$existData false;  
}  


Solucionado, gracias!!!!!!
  #16 (permalink)  
Antiguo 03/04/2015, 16:08
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: ejecutar otra consulta en caso de que la anterior esté vaica

Y... seré curioso, pero ¿de dónde toma valor $prod? No se ve ni donde lo definiste.

Yo hacería algo mas cerca de esto:
Código PHP:
Ver original
  1. public function getSearch($search,$filterData = null){  
  2.             $products=htmlspecialchars($_REQUEST["search"]);  
  3.             if(isset($products) && ($products != "") && ($products<>'')){  
  4.             $sentence = "SELECT producto, count(producto) as prod FROM tabla  WHERE cosa ='".$productos."'";  
  5.             $sentence = $sentence." ORDER BY precio ".$orden."";  
  6.             $sentence = $sentence."  LIMIT 100";  
  7.              $consulta= $this->getConect()->prepare($sentence);  
  8.              $consulta->execute();  
  9.              $existData = $consulta->num_rows;  
  10.  
  11.                  if($existData == 0){  
  12.                        $sentences = "SELECT producto FROM tabla  WHERE cosa LIKE'".$productos%."'";  
  13.                         $sentences = $sentences." ORDER BY precio ".$orden."";  
  14.                         $sentences = $sentences."  LIMIT 100";  
  15.                         $consulta= $this->getConect()->prepare($sentences);  
  16.                         $consulta->execute();  
  17.                         $existData =  $consulta->num_rows;  
  18. }

No estás leyendo el manual de referencia, ¿no?

http://php.net/manual/es/mysqli-stmt.num-rows.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)
  #17 (permalink)  
Antiguo 03/04/2015, 16:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

¿Estás seguro que ya lo has solucionado?

Código PHP:
Ver original
  1. if(!$prod)

¿En dónde declaras la variable $prod en el código que muestras?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 03/04/2015, 16:26
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: ejecutar otra consulta en caso de que la anterior esté vaica

$prod la cojo de count(producto) as prod, me devuelve resultados, pero he probado con lo de gnzsoloyo con:

Código PHP:
$existData $consulta->num_rows;         
            
            
            if(
$existData==0){....} 
Prefiero esta formula

antes lo probaba con

$contar=count($existData)
if($contar==0){....}
y no me funcionaba
gracias again

Etiquetas: buscador, vacias
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 14:25.