Comunidad de diseño web y desarrollo en internet online

PROBLEMA EXTRAÑO EN CONSULTA

Citar            
MensajeEscrito el 05 Dic 2012 03:13 pm
Hola a todos, estoy haciendo unos cambios en un codigo que hizo otra persona :roll: venía de este post pero me desvie:

http://foros.cristalab.com/problema-con-update-t108856/#657279

El caso es que tengo un login que me evia a un menu y a de ahi a una tabla que me muestra registros, necesito que en al tabla no me muestre los registros que estan en estado 8 , si publico solo la pagina de la tabla funciona perfecto, pero al entrar desde el login me muestra este error:

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 'WHERE (Estado='1' OR Estado='2' OR Estado='3' OR Estado='4' OR Estado='5' OR Est' at line 1

Y mi codigo (lo que esta dentro de la tabla) es:

Código PHP :

<table class="tabla" align="center" cellspacing="0">
<tr>
<th>ID</th>
<?php
    $pageURL = 'http';
     $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    }
    else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    echo("<th><a href='");
    echo($pageURL."&filtro=Cliente'");
    echo(">Cliente</a></th>");
    
    echo("<th><a href='");
    echo($pageURL."&filtro=Numero'");
    echo(">Numero OP</a></th>");
    
    echo("<th><a href='");
    echo($pageURL."&filtro=Tema_General'");
    echo(">Tema General</a></th>");
    
    echo("<th><a href='");
    echo($pageURL."&filtro=Responsable'");
    echo(">Responsable</a></th>");
    
    echo("<th><a href='");
    echo($pageURL."&filtro=Estado'");
    echo(">Estado</a></th>");
?>
<th>Editar</th>
<th>Anular</th>
</tr>
   
 //LA CONSULTA SIGUIENTE ES LA CONFLICTIVA.......... 
<?php
$filtrar="si";
$pedido="SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> '8'";
if(isset($_GET['buscar'])){
   if($_GET['buscar']!=""){
      if($filtrar=="si"){
         $buscar=strtolower($_GET['buscar']);
         $pedido=$pedido." WHERE (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')";
         $filtrar="busqueda";
      }   
   }
}
for($n=1; $n <= 11; $n++){
   $n=(string) $n;
   if(isset($_GET[$n])){
      if($_GET[$n]==$n){
         if($filtrar=="busqueda"){
            $pedido=$pedido." AND (Estado='$_GET[$n]'";
            $filtrar="no";
         }
         if($filtrar=="si"){
            $pedido=$pedido." WHERE (Estado='$_GET[$n]'";
            $filtrar="no";
         }
         else{
            $pedido=$pedido." OR Estado='$_GET[$n]'";
         }
      }
   }
}
if($filtrar=="no"){
   $pedido=$pedido.")";
}
if(isset($_GET['responsable'])){
   if($_GET['responsable']!="todos"){
      if($filtrar=="si"){
         $pedido=$pedido." WHERE Responsable='$_GET[responsable]'";
         $filtrar="no";
      }
      else{
         $pedido=$pedido." AND Responsable='$_GET[responsable]'";
         $filtrar="no";
      }   
   }
}

if(isset($_GET['filtro'])){
   $pedido=$pedido." ORDER BY $_GET[filtro]";
}   
      $consecutivo=0;
      if($_GET['filtro']=="Cliente"){
         for($j=0;$j<=count($nomcliente)-1;$j++){
            $result = mysql_query($pedido);
            while($row = mysql_fetch_array($result)){
               $clie=true;
               for($i=count($nomcliente)-1; $i >= 0; $i--){
                  if($idcliente[$i]==$row['Cliente']){
                     $client=$nomcliente[$i];
                     $clie=false;
                  }
               }
               if($clie){
                  $client=$row['Cliente'];
               }
               if($client==$nomcliente[$j]){
               $consecutivo++;
               $link="modificaciones/estado.php?orden=".$row['Numero'];
               echo("<tr>");
               echo("<td>&nbsp;");
               echo $consecutivo;
               echo("&nbsp;</td>");
               
               echo("<td>");
               echo("<a href='".$link."'>&nbsp;");
               
               $clie=true;
               for($i = count($nomcliente) -1; $i >= 0; $i--){
                  if($idcliente[$i]==$row['Cliente']){
                     echo($nomcliente[$i]);
                     $clie=false;
                  }
               }
               if($clie){
                  echo $row['Cliente'];
               }
               echo("&nbsp;</a></td>");
               
               echo("<td>");
               echo("<a href='".$link."'>&nbsp;");
               echo $row['Numero'];
               echo("&nbsp;</a></td>");
               
               echo("<td>");
               echo("<a href='".$link."'>&nbsp;");
               echo $row['Tema_General'];
               echo("&nbsp;</a></td>");
               echo("<td>");
               echo("<a href='".$link."'>&nbsp;");
               echo $row['Responsable'];
               echo("&nbsp;</a></td>");
               echo("<td>");
               echo("<a href='".$link."'>&nbsp;");
               $est=$row['Estado']-1;
               if($est>=0){
                  echo($estados[$est]);
               }
               else{
                  echo($row['Estado']);
               }
               echo("&nbsp;</a></td>");?>
                    
               <td align="center"><a href="modificaciones/edit_orden.php?orden=<?php echo $row['Numero']; ?>"><img src='imgs/editar.png' border="0"/></a></td>
               <td align="center"><a href="modificaciones/anularop.php?anular=<?php echo $orden; ?>"><img src='imgs/cerrar.png'  border="0"/></a></td>
               

    
    <?php
               echo("</tr>");
               }
            }
         }
      }
      else{
         $result1 = mysql_query($pedido)or die(mysql_error());
         while($row = mysql_fetch_array($result1)){
         $consecutivo++;
         $link="modificaciones/estado.php?orden=".$row['Numero'];
         echo("<tr>");
         echo("<td>&nbsp;");
         echo $consecutivo;
         echo("&nbsp;</td>");
         
         echo("<td>");
         echo("<a href='".$link."'>&nbsp;");
         
         $clie=true;
         for($i = count($nomcliente) -1; $i >= 0; $i--){
            if($idcliente[$i]==$row['Cliente']){
               echo($nomcliente[$i]);
               $clie=false;
            }
         }
         if($clie){
            echo $row['Cliente'];
         }
         echo("&nbsp;</a></td>");
         
         echo("<td>");
         echo("<a href='".$link."'>&nbsp;");
         echo $row['Numero'];
         echo("&nbsp;</a></td>");
         
         echo("<td>");
         echo("<a href='".$link."'>&nbsp;");
         echo $row['Tema_General'];
         echo("&nbsp;</a></td>");
         echo("<td>");
         echo("<a href='".$link."'>&nbsp;");
         echo $row['Responsable'];
         echo("&nbsp;</a></td>");
         echo("<td>");
         echo("<a href='".$link."'>&nbsp;");
         $est=$row['Estado']-1;
         if($est>=0){
            echo($estados[$est]);
         }
         else{
            echo($row['Estado']);
            }
         echo("&nbsp;</a></td>");
         ?>
         
      <td align="center"><a href="modificaciones/edit_orden.php?orden=<?php echo $row['Numero']; ?>"><img src='imgs/editar.png' border="0"/></a></td>
               <td align="center"><a href="modificaciones/anularop.php?accion=anular&orden=<?php echo $row['Numero']; ?>"><img src='imgs/cerrar.png' border="0"/></a></td>
         
<?php         
echo("</tr>");
}
      }
?>
</table>


Alguno me puede ayudar con esto?? Muchas gracias.

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 05 Dic 2012 06:03 pm
El error lo tenes acá

Código PHP :

//LA CONSULTA SIGUIENTE ES LA CONFLICTIVA.......... 
<?php
$filtrar="si";
$pedido="SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> '8'";
/**********************************************/
// Acá arriba estas definiendo el where
/**********************************************/
if(isset($_GET['buscar'])){
   if($_GET['buscar']!=""){
      if($filtrar=="si"){
         $buscar=strtolower($_GET['buscar']);

/**********************************************/
// Acá abajo volves a definir el where... Deberias cambiarlo por AND
/**********************************************/

         $pedido=$pedido." WHERE (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')";
         $filtrar="busqueda";
      }   
   }
}


Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 05 Dic 2012 07:55 pm
Hola, gracias por responder, hice lo que me dijiste pero sigue sacando el mismo mensaje, alguna otra idea? gracias...

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 05 Dic 2012 09:59 pm
Antes de hacer la Query hace un var_dump($pedido) para ver como quedo formada la sql y ver donde esta el error.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 10 Dic 2012 01:37 pm
Hola, agegué el var_dump($pedido) y me arroja lo siguiente:

string(88) "SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> 8"

qué significa??

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 10 Dic 2012 02:13 pm
buenoi viendo el codigo tienes que ir por pasos
en esta parte si te fijas tienes $pedido

Código PHP :

$pedido="SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> '8'";
if(isset($_GET['buscar'])){
   if($_GET['buscar']!=""){
      if($filtrar=="si"){
         $buscar=strtolower($_GET['buscar']);
         $pedido=$pedido." WHERE (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')";
         $filtrar="busqueda";
      }   
   }
}

pero cuando todas las condicionales se juntan concatenas $pedido con $pedido y el WHERE
y como resultado te daria

Código MySQL :

SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> '8 WHERE (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')

lo cual estaria mal en SQL solo puedes usar un WHERE lo que deberias hacer es agregar un OR o un AND dependiendo del caso
para que el resultado te quedase asi

Código MySQL :

SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado <> '8 AND (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Dic 2012 02:44 pm
Gracias por la rápida respuesta, lo tengo en este momento así pero sigue sacando el mismo error:

Código PHP :

$filtrar="si";
$pedido=("SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado<>'8'")or die(mysql_error());
if(isset($_GET['buscar'])){
   if($_GET['buscar']!=""){
      if($filtrar=="si"){
         $buscar=strtolower($_GET['buscar']);
         $pedido=$pedido." AND (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')";
         $filtrar="busqueda";
      }   
   }
}

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 10 Dic 2012 03:07 pm
bueno veo que hay muchos pasos antes de crear la consulta SQL con mysql_query
pon el var_dump($pedido);

Código PHP :

$result = mysql_query($pedido);

que quede asi

Código PHP :

var_dump($pedido);
$result = mysql_query($pedido);

ya que definitvamente hay algo mal en la consulta que se arma hasta el final

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Dic 2012 03:31 pm
MIra lo puse así pero no cambia nada, el mensaje de error sigue igual :(

Código PHP :

$filtrar="si";
$pedido=("SELECT Numero, Cliente, Tema_General, Responsable, Estado FROM ordenes WHERE Estado<>'8'")or die(mysql_error());
var_dump($pedido);
$result = mysql_query($pedido);
if(isset($_GET['buscar'])){
   if($_GET['buscar']!=""){
      if($filtrar=="si"){
         $buscar=strtolower($_GET['buscar']);
         $pedido=$pedido." AND (LOWER(Tema_General) like '%$buscar%' OR LOWER(Descripcion) like '%$buscar%' OR LOWER(Observaciones) like '%$buscar%')";
         $filtrar="busqueda";
      }   
   }
}

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 10 Dic 2012 04:16 pm
bueno simulte tu codigo, creando en mi local la base de datos, y bueno tienes varios errores, y muchos son por las consutlas mysql mal formadas,
pero bueno para ser mas precios , que URL es en la que te aparece el error ,que mencionas, ya que para las pruebas use esta URL

?buscar=pepe&filtro=Cliente
pero supongo que ati te da un error al hacer un tipo de busqueda distinto, ya con eso se podra ver donde esta el error

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Dic 2012 07:18 pm
Dios! mis ojos!!!! :shock:

después de 10 post no hay solución!

lo primero revisa todos los query directamente con la base de datos
lo segundo el var_dump(); se utiliza para ver que hay dentro de una variable! mas no para que el código funcione de forma MÁGICA!
lo tercero si ya tiene el query con un <> 8 (lo diferente de 8) para que carajos le agrega un or xxxx = 1, or xxxx = 2, or xxxx = etc....

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

chrome
Citar            
MensajeEscrito el 10 Dic 2012 10:51 pm
Muchas gracias tuadmin por tomarte la molestia, mañana vuelvo a revisar a ver como sigue la cosa según lo que me dices, por otra parte jp.. no se si lo dije en este post o en el anterior, este código no lo hice yo, solo necesito hacerle unos cambios y dentro de lo poco que sé creo que podría ser simple, hasta donde entiendo todos los or and ... que puso son para hacer diferentes filtros... en fin, seguiré mirando... gracias

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 11 Dic 2012 02:03 am
Alejilla, como opinión, lo que deberías hacer, es tratar de enfocarte más en entender cada segmento de código, entendiendo que es lo que hace cada una de las sentencias...
Aunque sea un código simple, siempre te va a servir para aprender, yo creo que lo importante más que el código salga andando, es que adquieras herramientas nuevas para trabajar y ser una mejor profesional, por más que tengas un código que haga algo parecido a lo que necesitas, tomate tu tiempo en analizarlo y ver que es realmente lo que hace, y que tenés que modificar para que cumpla con tus requerimientos, aunque no sepas como escribirlo, saber que es lo que necesitas que cambie, también tomate tu tiempo para analizar los errores generados, entendiendo que es lo que tenés mal...
Creo que todos los que te respondimos, lo hicimos con la mejor intención, pero también esta bueno ver que el que consulto le ponga onda y se esfuerce más que solo esperar una solución, no digo que sea tu caso, pero algunos lo pueden interpretar así...
Yo te diría que hagas un borrón y empieces de nuevo, creando vos tu propio código, así vas a aprender un montón y vas a ver bien donde están tus errores.

Saludos!

Por SinSemilla

Claber

336 de clabLevel



Genero:Masculino  

i am that i am...

firefox
Citar            
MensajeEscrito el 11 Dic 2012 01:50 pm
Gracias por el consejo, el problema fue que quién trabajaba antes que yo en esto dejó el trabajo tirado y necesité hacer nuevos cambios, pero creo que si va a ser más práctico comenzar de cero gracias a todos...

Por alejilla

Claber

120 de clabLevel



Genero:Femenino  

Colombia

chrome
Citar            
MensajeEscrito el 12 Dic 2012 12:42 am

alejilla escribió:

Gracias por el consejo, el problema fue que quién trabajaba antes que yo en esto dejó el trabajo tirado y necesité hacer nuevos cambios, pero creo que si va a ser más práctico comenzar de cero gracias a todos...

bueno es lo mejor ya que al logica empleada en el script que publicaste es muy confusa, se podria mejorar todo el proceso y quedaria mucho mas sencillo y facil de entender

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.