Foros del Web » Programando para Internet » PHP »

¿Por qué falla?

Estas en el tema de ¿Por qué falla? en el foro de PHP en Foros del Web. Hola, tengo un problema y no se cómo solucionarlo, resulta que al hacer una búsqueda de todos los registros parece que funciona bien, pero cuando ...
  #1 (permalink)  
Antiguo 07/12/2005, 12:49
 
Fecha de Ingreso: junio-2005
Mensajes: 16
Antigüedad: 12 años, 5 meses
Puntos: 0
¿Por qué falla?

Hola, tengo un problema y no se cómo solucionarlo, resulta que al hacer una búsqueda de todos los registros parece que funciona bien, pero cuando hago una busqueda limitada (p.ejemplo solo los que se llaman pepe) me da un error en mysql_fetch_Array, y no se por qué narices pasa esto. este es el código

Tengo una inicial que manda los datos a buscar,

Código HTML:
<head></head>
<body>
<table width="921" border="0" align="center" bgcolor="#A6BED0">
        <tr>
          <td width="30" bgcolor="#A6BED0"><input name="radio" type="radio" value="opcion1"></td>
          <td colspan="2" bgcolor="#A6BED0"><strong><font color="#FFFFFF">Mostrar todos los socios</font></strong> </td>
          <td width="343" bgcolor="#A6BED0">&nbsp;</td>
          <td width="112" rowspan="3" bgcolor="#A6BED0"><strong><font color="#FFFFFF">Ordenados por</font></strong> </td>
          <td width="102" rowspan="3" bgcolor="#A6BED0"><select name="lista2" id="lista2">
            <option>nombre</option>
            <option>Telefono</option>
            <option>id</option>
          </select></td>
          <td width="70" rowspan="3" bgcolor="#A6BED0"><input name="mostrar" type="submit" id="mostrar" value="Mostrar"></td>
          </tr>
        <tr>
          <td>&nbsp;</td>
          <td width="131">&nbsp;</td>
          <td width="103">&nbsp;</td>
          <td>&nbsp;</td>
          </tr>
        <tr>
          <td bgcolor="#A6BED0"><input name="radio" type="radio" value="opcion2"></td>
          <td bgcolor="#A6BED0"><strong><font color="#FFFFFF">Buscar socio por</font></strong> </td>
          <td bgcolor="#A6BED0"><select name="lista1" id="lista1">
            <option selected>nombre</option>
            <option>Telefono</option>
          </select> </td>
          <td bgcolor="#A6BED0"><input name="caja1" type="text" id="caja1" size="40"></td>
          </tr>
      </table>
</body> 
Y otra que procesa esos datos,
Código PHP:
<?php      
if ($radio == ""){
?>
//aqui va un script que me manda a la pagina principal
<?php
}

if (
$radio == "opcion1"){
$consulta "SELECT * FROM socios order by $lista2";
$res=mysql_query($consulta); 
$numeroRegistros=mysql_num_rows($res);
}

if (
$radio == "opcion2"){
$consulta "SELECT * FROM socios WHERE $lista1 LIKE '%".$caja1."%' order by $lista2";
$res=mysql_query($consulta); 
$numeroRegistros=mysql_num_rows($res);
echo 
mysql_error ($db);
}
if(
$numeroRegistros<=0
{
    echo 
"<div align='center'>"
    echo 
"<font face='verdana' size='-2'>No se encontraron resultados</font>"
    echo 
"</div>"
}
else{ 

    if(!isset(
$orden)) 
    { 
       
$orden=$lista2
    } 
 
    
$tamPag=10

    if(!isset(
$_GET["pagina"])) 
    { 
       
$pagina=1
       
$inicio=1
       
$final=$tamPag
    }else{ 
       
$pagina $_GET["pagina"]; 
    } 

    
$limitInf=($pagina-1)*$tamPag

    
$numPags=ceil($numeroRegistros/$tamPag); 
    
    echo 
mysql_error ($db);

    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 (
$radio == "opcion1"){
$consulta "SELECT * FROM socios ORDER BY $lista2 ASC LIMIT ".$limitInf.",".$tamPag;
$res=mysql_query($consulta); 

}

if (
$radio == "opcion2"){
$consulta "SELECT * FROM socios WHERE $lista1 LIKE '%".$caja1."%' order by $lista2 ASC LIMIT ".$limitInf.",".$tamPag;
echo 
mysql_error ($db);

$res=mysql_query($consulta); 

}

echo 
"<table border = '1'> \n"
echo 
"<tr><td>Nombre</td><td>Mostrar datos</td></tr> \n";


while(
$registro=mysql_fetch_array($res))

echo 
"<tr><td>".$registro["nombre"]."</td>
      <td>"
.$registro["idsocio"]."</td></tr> \n";  
  }
  echo 
"</table> \n"

echo 
mysql_error ($db);

?>
Me da dos errores, uno de division by zero y otro de Warning: mysql_fetch_array(): supplied argument is not a valid.

A ver si alguien puede echarme una mano porque me estoy volviendo loco He repasado una y otra vez el código, y no se por qué me da porque utilizando la paginación para otras consultas no me da ese error.

Última edición por caramon; 07/12/2005 a las 15:31
  #2 (permalink)  
Antiguo 08/12/2005, 07:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Me da dos errores, uno de division by zero y otro de Warning: mysql_fetch_array(): supplied argument is not a valid.
http://www.forosdelweb.com/f18/como-preguntar-foro-php-cosas-tener-cuenta-295415/

Ayudas a que se te ayude si indicas el error exácto que tienes y comentas la línea implicada(la muestra el propio error) para saber su hubicación...

El error de "división por 0"... pués eso!, estás intentando dividir por cero, matemáticamente no es válido eso. Verifica a tu variable (supongo es una variable) se le haya asignado un valor no nulo.

El error de "argumento no válido"... puede venir de mucho más atrás. Verifica independienmtemente:
- La conexión se haya realizado (en tu código no se ve siquiera la hagas)
- La selección de la base de datos sea correcta (tampoco se ve)
- La sintáxis de la query sea válida
- Haya resultados (en caso de consultas)

Puedes valerte utilizando un "or die()" posterior a cada respectiva función, por ejemplo:
Código PHP:
mysql_connect("ya_sabes") or die (mysql_error); 
Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 20:08.