Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: smagno en 26 Octubre 2009, 15:18 pm



Título: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: smagno en 26 Octubre 2009, 15:18 pm
Estoy realizando una consulta generalizada por tablas.

Bueno cuando entro por primera vez funciona haciendo la consulta, pero cuando presiono el boton buscar para hacer el filtrado. se pierden los datos iniciales lo mismo que las sessiones y me muestra el siguiente mensaje

Código:
SELECT , FROM ORDER BY 
MySql 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 ' FROM ORDER BY' at line 1

disculpen el poco de echo ya que asi pude mirar el error.

Que estoy haciendo mal???
Aqui esta el codigo..

Código:
<?php	
session_start();

$cTabla  = trim($_GET['cTabla']);
$cCampo1 = trim($_GET['cCampo1']);
$cCampo2 = trim($_GET['cCampo2']);
$cOrden  = trim($_GET['cOrden']);
$nCondi  = trim($_GET['nCondi']);
$cCondi  = trim($_GET['cCondi']);

$_SESSION['s_cTabla'] = $cTabla;

echo 'Tabla: '.$cTabla.' Tabla session :'.$_SESSION['s_cTabla'];

if($cOrden=='N'){
$cOrden=$cCampo2;}
else{
$cOrden=$cCampo1;}

$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";

if (isset ($Buscar)) { //Si fue apretado el botón buscar

echo "Select ".$_POST["selFiltro"]."&nbsp;";
echo "Text   ".$_POST["txtFiltro"]."&nbsp; tabla session:".$_SESSION['s_cTabla'];

$SelFiltro = trim($_POST['selFiltro']);
$txtFiltro = trim($_POST['txtFiltro']);

if ($SelFiltro == "N"){
$cOrder = $cCampo2;
}else{
$cOrder = $cCampo1;
}
if ($txtFiltro==NULL){
if($SelFiltro == "N"){
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";
echo "pase por aqui";
}else{
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo1";
}
}else{
if($SelFiltro == "N"){
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";
}else{
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo1";
}
}
echo "paso 2".$sql;

MostrarConsulta();
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>

<title>.:: MAGNO ::. Buscar Datos</title>
    <link rel="shortcut icon" href="../img/magno.ico" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <link href="../css/HeaderFr.css" rel="stylesheet" type="text/css" />


    <script>

        function efecto(id,tip)
        {
          var col = '#3399FF'
          if(tip==2){col=""}
          var cel = document.getElementById(id)
          cel.style.backgroundColor=col
        }
        function llama(php)
        {
          document.location.href=php
        }

</script>
    
</head>
<body>
<form action="<?=$PHP_SELF?>" method="post" >
     <div>
<table>
<tr>
         <td style="width: 100px">
                     <table>
<tr>
                             <td style="width: 82px; height: 22px">
<select name="selFiltro">
           <option value="N" selected> Nombre</option>
           <option value="C"> Codigo</option>
         </select>
                                </td>
                                <td style="width: 82px">
<input name="txtFiltro" type="text" font-names="Verdana" size="46px">
                                </td>
                                <td style="width: 82px"><input type="submit" name="Buscar" value="Buscar" onClick=""></td>
                            </tr>
<tr>
                             <td colspan="3" style="width: 50px" valign="top">
                               <div id="divGrid" class="Marco" style="overflow: auto; width: 456px; height: 400px">

<?
MostrarConsulta()
                                        ?>
                                 </div>
</td>
                           </tr>
                       </table>
                        &nbsp;
                    </td>
               </tr>
           </table>
       </div>
   </form>
</body>
</html>
<?
function MostrarConsulta(){

include_once("clases/funciones.class.php");

global $cTabla, $cCampo1, $cCampo2, $cOrden, $nCondi, $cCondi, $sql;

   $fun = new Funciones();
    $fun->conecta();

$ali = array("left","left"); //alineacion
    $wid = array(90,290); //width
    $ico = array( array("edit.png","Click para Seleccionar o Editar",""), array("delete.png","Click para Eliminar",""));
echo "paso 1".$sql;
    $res = $fun->consulta($sql);
    $fun->lista($res,$ali,$wid,$ico);

}
?>

Gracias de antemano.


Título: Re: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: DarkItachi en 26 Octubre 2009, 18:00 pm
Estoy realizando una consulta generalizada por tablas.

Bueno cuando entro por primera vez funciona haciendo la consulta, pero cuando presiono el boton buscar para hacer el filtrado. se pierden los datos iniciales lo mismo que las sessiones y me muestra el siguiente mensaje

Código:
SELECT , FROM ORDER BY 
MySql 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 ' FROM ORDER BY' at line 1

disculpen el poco de echo ya que asi pude mirar el error.

Que estoy haciendo mal???
Aqui esta el codigo..

Código:
<?php	
session_start();

$cTabla  = trim($_GET['cTabla']);
$cCampo1 = trim($_GET['cCampo1']);
$cCampo2 = trim($_GET['cCampo2']);
$cOrden  = trim($_GET['cOrden']);
$nCondi  = trim($_GET['nCondi']);
$cCondi  = trim($_GET['cCondi']);

$_SESSION['s_cTabla'] = $cTabla;

echo 'Tabla: '.$cTabla.' Tabla session :'.$_SESSION['s_cTabla'];

if($cOrden=='N'){
$cOrden=$cCampo2;}
else{
$cOrden=$cCampo1;}

$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";

if (isset ($Buscar)) { //Si fue apretado el botón buscar

echo "Select ".$_POST["selFiltro"]."&nbsp;";
echo "Text   ".$_POST["txtFiltro"]."&nbsp; tabla session:".$_SESSION['s_cTabla'];

$SelFiltro = trim($_POST['selFiltro']);
$txtFiltro = trim($_POST['txtFiltro']);

if ($SelFiltro == "N"){
$cOrder = $cCampo2;
}else{
$cOrder = $cCampo1;
}
if ($txtFiltro==NULL){
if($SelFiltro == "N"){
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";
echo "pase por aqui";
}else{
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo1";
}
}else{
if($SelFiltro == "N"){
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo2";
}else{
$sql = "SELECT $cCampo1, $cCampo2 FROM $cTabla ORDER BY $cCampo1";
}
}
echo "paso 2".$sql;

MostrarConsulta();
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>

<title>.:: MAGNO ::. Buscar Datos</title>
    <link rel="shortcut icon" href="../img/magno.ico" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <link href="../css/HeaderFr.css" rel="stylesheet" type="text/css" />


    <script>

        function efecto(id,tip)
        {
          var col = '#3399FF'
          if(tip==2){col=""}
          var cel = document.getElementById(id)
          cel.style.backgroundColor=col
        }
        function llama(php)
        {
          document.location.href=php
        }

</script>
    
</head>
<body>
<form action="<?=$PHP_SELF?>" method="post" >
     <div>
<table>
<tr>
         <td style="width: 100px">
                     <table>
<tr>
                             <td style="width: 82px; height: 22px">
<select name="selFiltro">
           <option value="N" selected> Nombre</option>
           <option value="C"> Codigo</option>
         </select>
                                </td>
                                <td style="width: 82px">
<input name="txtFiltro" type="text" font-names="Verdana" size="46px">
                                </td>
                                <td style="width: 82px"><input type="submit" name="Buscar" value="Buscar" onClick=""></td>
                            </tr>
<tr>
                             <td colspan="3" style="width: 50px" valign="top">
                               <div id="divGrid" class="Marco" style="overflow: auto; width: 456px; height: 400px">

<?
MostrarConsulta()
                                        ?>
                                 </div>
</td>
                           </tr>
                       </table>
                        &nbsp;
                    </td>
               </tr>
           </table>
       </div>
   </form>
</body>
</html>
<?
function MostrarConsulta(){

include_once("clases/funciones.class.php");

global $cTabla, $cCampo1, $cCampo2, $cOrden, $nCondi, $cCondi, $sql;

   $fun = new Funciones();
    $fun->conecta();

$ali = array("left","left"); //alineacion
    $wid = array(90,290); //width
    $ico = array( array("edit.png","Click para Seleccionar o Editar",""), array("delete.png","Click para Eliminar",""));
echo "paso 1".$sql;
    $res = $fun->consulta($sql);
    $fun->lista($res,$ali,$wid,$ico);

}
?>

Gracias de antemano.

Para mí que no recibes bien las variables.
Código
  1. $cTabla  = trim($_GET['cTabla']);
  2. $cCampo1 = trim($_GET['cCampo1']);
  3. $cCampo2 = trim($_GET['cCampo2']);
  4. $cOrden  = trim($_GET['cOrden']);
  5. $nCondi  = trim($_GET['nCondi']);
  6. $cCondi  = trim($_GET['cCondi']);
  7.  
  8. $_SESSION['s_cTabla'] = $cTabla;

Si las variables estuviesen vacías el resultado sería el que da el error.


Título: Re: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: smagno en 26 Octubre 2009, 18:09 pm
DarkItachi,

Si las recibo bien por que el inicialmente el me hace la consulta bien pero cuando voy hacer un filtrado y presiono buscar se pierde el contenido de las variables.


Título: Re: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: DarkItachi en 26 Octubre 2009, 23:41 pm
KarkItachi

Arghhh eso dolió....

inicial mente
Aghh eso dolió aún más!  :o

Prueba sin la función trim() a ver. ;)


Título: Re: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: Mr. Crowley en 26 Octubre 2009, 23:49 pm
Hola, no he leido mucho el codigo... pero OJO aqui:

function MostrarConsulta()

Por lo que veo es una funcion PHP...

Código:
<div id="divGrid" class="Marco" style="overflow: auto; width: 456px; height: 400px">
<?
MostrarConsulta()
?>
</div>

Esta confundiendo javascript con PHP... la funcion que llama en esa capa debe ser la
de javascript... poque seria Ajax quien hace la consulta y luego trae el resultado a la
capa divGrid.

Como le digo, no he leido el codigo... pero el error debe de estar ahi  :rolleyes:


Título: Re: CONSULTA DE TABLAS POR FILTRADO DE TEXTO
Publicado por: smagno en 27 Octubre 2009, 01:36 am
Mr. Crowley

MostrarConsulta() si es una funcion php inicialmente si me realiza la consulta pero cuando presiono el boton buscar en el post se pierde todo el contenido de las variables lo mismo que las variables de session [$cTabla, $cCampo1, $cCampo2, $cOrden, $nCondi, $cCondi] quedan en blanco.

Aprovecho y te comento ya realizo el popup de la ventana para hacer la busqueda de la consulta perfectamente.

Ahora se me presenta este problema no encuentro forma para solucionarlo.

!!! AMIGO CROWLEY NO SE ME PIERDA YA QUE UD. A SIDO UNA AYUDA MUY IMPORTANTE !!!

Agradeciendole de antemano.