Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/02/2010, 08:15
efelix
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Error en consulta php y mysql

Saludos a todos.
Tengo el siguiente código php:
Código PHP:
<?
        
//inicializo el criterio y recibo cualquier cadena que se desee buscar
        
$criterio "";
        if (
$_GET["criterio"]!=""){
    
$txt_criterio $_GET["criterio"];
    
$criterio " where co_id like '%" $txt_criterio "%' or co_nombre like '%" $txt_criterio "%' or comprador1 '%" $txt_criterio "%'";
}


    
$sql="SELECT * FROM tpv.comercios ".$criterio;
    
$res=mysql_query($sql);
    
$numeroRegistros=mysql_num_rows($res);
    if(
$numeroRegistros<=0)
    {
Esto es un buscador con paginación incluída, solamente he puesto la parte del código donde se genera el error. Bueno pondré el código completo, el cual he descargado de la red y funciona perfectamente bien, solamente ha dejado de hacerlo cuando he cambiado por los datos mios.
No se a que se debe esto, aquí va el resto del código:
Código PHP:
echo "<div align='center'>";
        echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
        echo "</div>";
    }else{
        //////////elementos para el orden
        if(!isset($orden))
        {
            $orden="co_id";
        }
        //////////fin elementos de orden

        //////////calculo de elementos necesarios para paginacion
        //tamaño de la pagina
        $tamPag=5;

        //pagina actual si no esta definida y limites
        if(!isset($pagina))
        {
               $pagina=1;
               $inicio=1;
               $final=$tamPag;
        }
        //calculo del limite inferior
        $limitInf=($pagina-1)*$tamPag;

        //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;
            }
        }

        //////////fin de dicho calculo

        //////////creacion de la consulta con limites
        $sql="SELECT * FROM tpv.comercios ".$criterio." ORDER BY ".$orden.",co_id ASC LIMIT ".$limitInf.",".$tamPag;
        $res=mysql_query($sql);

        //////////fin consulta con limites
        echo "<div align='center'>";
        echo "<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
        echo "ordenados por <b>".$orden."</b>";
                if(isset($txt_criterio)){
        echo "<br>Valor filtro: <b>".$txt_criterio."</b>";
                }
        echo "</font></div>";
        echo "<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
        echo "<tr><td colspan='3'><hr noshade></td></tr>";
        echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_id&criterio=".$txt_criterio."'>Código</a></th>";
        echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=co_nombre&criterio=".$txt_criterio."'>Nombre</a></th>";
        echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=comprador1&criterio=".$txt_criterio."'>Comprador1</a></th>";
        while($registro=mysql_fetch_array($res))
        {
?>
<!-- tabla de resultados -->
  <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["co_id"]."] ".$registro["co_nombre"]." - ".$registro["comprador1"]; ?>');">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_id"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["co_nombre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["comprador1"]; ?></b></font></td>
  </tr>
<!-- fin tabla resultados -->
<?
        
}//fin while
        
echo "</table>";
    }
//fin if
    //////////a partir de aqui viene la paginacion
?>
    <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
<?
    
if($pagina>1)
    {
        echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
        echo 
"<font face='verdana' size='-2'>anterior</font>";
        echo 
"</a>&nbsp;";
    }

    for(
$i=$inicio;$i<=$final;$i++)
    {
        if(
$i==$pagina)
        {
            echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
        }else{
            echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
            echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
        }
    }
    if(
$pagina<$numPags)
    {
        echo 
"&nbsp;<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
        echo 
"<font face='verdana' size='-2'>siguiente</font></a>";
    }
    
//////////fin de la paginacion
?>
    </td></tr>
    </table>
<hr noshade style="color:CC6666;height:1px">
<div align="center"><font face="verdana" size="-2"><a class="p" href="index.php">::Inicio::</a></font></div>

<form action="busqueda.php" method="get">
Criterio de búsqueda:
<input type="text" name="criterio" size="22" maxlength="150">
<input type="submit" value="Buscar">
</form>

</body>
</html>
<?php
    mysql_close
();
?>
El caso es que se muestran los resultados de la consulta en cuando cargo la página de búsqueda.php en el navegador, pero cuando escribo algún criterio de búsqueda en el formulario me sale el siguiente error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\buscador1\busqueda.php on line 75
Esa línea es donde se encuentra la siguiente sentencia: $numeroRegistros=mysql_num_rows($res);
Estoy cansado de buscar sobre este error en la web y nada, pero es increíble que funcionaba con los datos originales y con los mios no, incluso deje el mismo nombre de la base de datos y de la tabla, da la casualidad que son los mismos tipos de datos, todos son varchar, lo que por supuesto con diferentes longitudes, todos los campos tienen nombres en minísculas. He agotado todas las posibilidades antes de acudir al foro a postear este tema, pero nada no aparece la solución.
Por supuesto que obviado la parte de la conexión a la base de datos, que creo que ni sea necesario.
Muchas Gracias.
Disculpen la molestia.