Foros del Web » Programando para Internet » PHP »

consulta sql

Estas en el tema de consulta sql en el foro de PHP en Foros del Web. Hola aca estoy porbando un buscador de s registros de una base de datos de prueba que he armado Mi problema es que al controlar ...
  #1 (permalink)  
Antiguo 24/02/2010, 20:18
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta consulta sql

Hola aca estoy porbando un buscador de s registros de una base de datos de prueba que he armado
Mi problema es que al controlar los resutlados de la consulta muchas veces no trae los resultados correctos y no logro entender porque
Código PHP:
$toperacion = (isset($_GET['toperacion'])) ? trim($toperacion) : '';
$toperacion = mysql_real_escape_string($toperacion);

$toperacion2 = (isset($_GET['toperacion'])) ? trim($toperacion2) : '';
$toperacion2 = mysql_real_escape_string($toperacion2);

include 'db.php';

//paginacion
$tamPag = 10;   //cantidad de registros pòr página
// detectar si la variable $pagina (indica el numero de pagina actual) esta definida,
//si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "paginacion.php?pagina=2") entramos a la pagina 1 directamente...
$pagina = $_GET["pagina"];

if (!$pagina)
{  $inicio = 0;  $pagina = 1; }
else
{ $inicio = ($pagina - 1) * $tamPag; }
//realizamos 2 consultas similares en cuanto a su criterio de selección
//Con la primer consulta obtenemos el numero de registros totales.
 // Count   Utilizada para devolver el número de registros de la selección

$sql="SELECT COUNT(*)  FROM avisos WHERE tpropiedad='".$tpropiedad."' AND (toperacion='".$toperacion."' OR toperacion='".$toperacion2."' OR toperacion2='".$toperacion."' OR toperacion2='".$toperacion2."')" ;
//echo $sql;

$res=mysql_query($sql);
$numeroRegistros = mysql_num_rows($res);
list($numeroRegistros) = mysql_fetch_row($res);


if ($numeroRegistros <=0)
{ echo "<div align='center'>";
  echo "<font color='darkgray' size='3'>No se encontraron Avisos que coicidan con su busqueda<b></font>";
  echo "</div>"; }


$sql2="SELECT  * FROM avisos WHERE tpropiedad='".$tpropiedad."' AND (toperacion='".$toperacion."' OR toperacion='".$toperacion2."' OR toperacion2='".$toperacion."' OR toperacion2='".$toperacion2."') ORDER BY valor ASC LIMIT $inicio, $tamPag" ;
echo $sql2;


$res=mysql_query($sql2);



//ceil devuelve el valor entero más alto con respecto al número que se ha pasado como argumento a la función:
//calculo del numero de paginas
$numPags = ceil($numeroRegistros / $tamPag);

if(!isset($pagina))
    {
       $pagina=1;
       $inicio=1;
       $final=$tamPag;
    }else{
       $seccionActual=intval(($pagina-1)/$tamPag);
       $inicio=($seccionActual*$tamPag)+1;

       if($pagina<$numPags)
       {
          $final=$inicio+$tamPag-1;
       }else{
          $final=$numPags;
       }

       if ($final>$numPags){
          $final=$numPags;
       }
    }


     if($numeroRegistros) {
while ($row=mysql_fetch_array($res))
 {
$valor='U$S '.$row["valor"];

echo '<tr ><td  valign="TOP"><font color="black"><font size="3"><img src="http://www.forosdelweb.com/f18/images/productos/'.$row["imagen1"].'" alt="" width="90" height="75"></td>';
echo '<td valign="TOP"><div align="left"><font color="black"><font size="2">'.$row["txt"].'</div></td>';
echo '<td valign="TOP"><font color="red"><font size="3"><b>'.$valor.'<br>'.$row["fpago"].'</b></td>';

if($row["premium"]=="Si")
{ echo '<td valign="TOP"><a href="verAviso2.php?idAviso='.$row["idAviso"].'"><img src="http://www.forosdelweb.com/f18/images/masInfo.png" alt="Ver más detalles " width="40" height="40" ></td></tr>'; }
if($row["premium"]=="No")
{ echo '<td valign="TOP"><img src="http://www.forosdelweb.com/f18/images/InfoNoDisp.png" alt="Información complementaria no disponible"width="60" height="60" ></td></tr>'; }
}
}
}

?>

   <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
 <?
  
//Para comprobar la cantidad de resultados arrojados por la consulta  mysql_num_rows

  
if($numeroRegistros>0)
{echo 
"<font color='darkgray'><font size='2'><b>Resultado : </b>"." ".$numeroRegistros." avisos";
 echo 
"<BR>";
}
    if(
$pagina>1)                                                                                  {
       echo 
"<img src='../images/flecha1.gif'width='10' height='10'>";
       echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&tpropiedad=".$tpropiedad." & toperacion=".$toperacion."& toperacion2=".$toperacion2."'>";

       echo
"<font face='verdana' size='2'> Anterior </font>";
       echo 
"</a> ";
    }

    for(
$i=$inicio;$i<=$final;$i++)


    {
       if(
$i==$pagina)
       {
          echo 
"<font color='black'>"." Página ";
          echo 
"<font face='verdana' size='2'><font color='black'><b>".$i." de".$numPags."</b> </font>";
       }else{

          echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."& tpropiedad=".$tpropiedad."& toperacion=".$toperacion." & toperacion2=".$toperacion2."'>";
          echo 
"<font face='verdana' size='2'><font color='black'>".$i."</font></a> ";
       }
    }
    if(
$pagina<$numPags)
   {
       echo 
" <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."& tpropiedad=".$tpropiedad."& toperacion=".$toperacion." & toperacion2=".$toperacion2."'>";
       echo 
"<font face='verdana' size='2'> Siguiente </font></a>";
       echo 
"<img src='../images/flecha2.gif'width='10' height='10'>";
   }
//////////fin de la paginacion
tpropiedad representa si es una casa , un apartamenteo etc
toperacion y t operacion2 son para determinar si se busca venta , alquiler, permuta , etc.
Entonces la primer condicion debe cumplirse siempre que sea una
casa ,no puede traerme avisos de apartamentos.

La segunda condicion debe compàrar entre los uno o dos tipos de operacion que puede elegir el usuario y compararlos con los dos campos de tipo de operacion que tienen cada aviso

El usuario puede elegir dos tipos de operacion y en el aviso existen dos campos con ese fin .
Debe comparar ambos y largar todos los resultados que tengan una de las dos opcioenes

Pero me llega a incluiir en los listados registros que no tienen ninguna de las dos tipo de operaciones. y no logro comprender que hago mal

Gracias por orientarme pues hace dias que no logro salir de este punto

Última edición por marcos46g; 25/02/2010 a las 16:36
  #2 (permalink)  
Antiguo 24/02/2010, 21:45
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: consulta sql

Un consejo: usa las etiquetas [ php ] [ /php ] (sin espacios) para encerrar tu codigo... Es casi ilegible asi...
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 25/02/2010, 16:37
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: consulta sql

ok agregue las etiquetas para que quede mas legible para que me puedan ayudar

Etiquetas: sql
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 19:02.