Foros del Web » Programando para Internet » PHP »

consulta a base de datos me devuelve n-1 elemento

Estas en el tema de consulta a base de datos me devuelve n-1 elemento en el foro de PHP en Foros del Web. hola paso a contarles la situación realizo una consulta a la base de datos para que me muestre todos los registros que coinciden con el ...
  #1 (permalink)  
Antiguo 01/08/2011, 21:20
 
Fecha de Ingreso: agosto-2011
Mensajes: 8
Antigüedad: 12 años, 8 meses
Puntos: 0
consulta a base de datos me devuelve n-1 elemento

hola paso a contarles la situación realizo una consulta a la base de datos para que me muestre todos los registros que coinciden con el campo registro previamente ingresado, cuando me devuelve los registros me devuelve 1 menos de el que hay en realidad. por favor si podrían orientarme donde esta el error me seria de mucha ayuda gracias.

aquí les dejo el código.


Código PHP:

<html>
<head><TITLE>Cruces de planilla</TITLE></head>
<link rel="StyleSheet" type="text/css" href="stilo.css" media="screen" title="Normal" />
<div id="encabezado">
 <h1 class="sitio_nombre">Cruce de planilla</h1>
 <h3 class="slogan">Siempre Con La Gente!!!</h3>
</div>
<div id="publicacion">
<center><h2 class="titulo">Busqueda:</h2></center>
</div>
</div>
<body>
<br>
<?php
if(isset($_POST[enviar]))    
 {
    include(
"conexion.php"); // Conectar con MySQL

$control=$_POST["control"];
$busca=mysql_query("SELECT * FROM alumnos WHERE (referente = '$control')"); //Busqueda por medio del Num. de Ctrl.
$row = @mysql_fetch_array($busca); //Arreglo
$nombre=$row[1];
$apellidos=$row[2];
$no_dni=$row[3];
$domicilio=$row[4];
$circuito=$row[5];
$referente=$row[6];
$egreso=$row[7];

if(
mysql_num_rows($busca))
 {   

$num=mysql_num_rows($busca);
echo 
'existen '.$num.' noticias';



?>
<center>
<TABLE BORDER=1> 
      <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD> <TD>&nbsp;<B>No.DNI</B>&nbsp;</TD>
      <TD>&nbsp;<B>Dimicilio</B></TD> <TD>&nbsp;<B>Circuito</B>&nbsp;</TD> <TD>&nbsp;<B>Referente</B></TD><TD>&nbsp;<B>Numero</B></TD>
</center>
<center>
<input type="button" value="Volver"  onClick=" window.location.href='index2.php' ">
</a>
</center>
<?


echo "<tr>";
   while(
$row mysql_fetch_array($busca) ) 
   {
       
      

printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s</td><td>&nbsp;%s</td><td>&nbsp;%s</td><td>&nbsp;%s</td><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><

/td></tr>"
$row["nombre"],$row["apellidos"],$row["no_dni"],$row["domicilio"],$row["circuito"],$row["referente"],$row["id"]);
   } 
   
mysql_free_result($busca); 

 }

else
 echo 
" No se encontre el referente seleccionado ";
          
}

else {
?>
<center>
<form name="cambios" action="referente.php" method="POST">
Busca  votantes por Referente: <input type="text" name="control" /><br>
<input type="submit" value="enviar" name="enviar" />
</form>
</center>
<?
}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 01/08/2011, 21:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta a base de datos me devuelve n-1 elemento

Es normal, ya que la función mysql_fetch_array() que usas antes de obtener la cantidad de registros provoca que se avance el puntero de los resultados, por ende se avanza la cantidad de registros y por eso disminuye el total que esperabas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/08/2011, 21:35
 
Fecha de Ingreso: agosto-2011
Mensajes: 8
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: consulta a base de datos me devuelve n-1 elemento

Cita:
Iniciado por pateketrueke Ver Mensaje
Es normal, ya que la función mysql_fetch_array() que usas antes de obtener la cantidad de registros provoca que se avance el puntero de los resultados, por ende se avanza la cantidad de registros y por eso disminuye el total que esperabas.

como podria hacer para que muestre todos los elementos??.gracias
  #4 (permalink)  
Antiguo 01/08/2011, 21:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta a base de datos me devuelve n-1 elemento

Bueno, si te fijas en lo que te acabo de decir resta un elemento porque lo extraes del resultado.

Así que si consideras necesario extraer dicho resultado antes de contar, ¿podrías sumarle un 1 al total verdad?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 01/08/2011, 21:39
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: consulta a base de datos me devuelve n-1 elemento

Antes del while puedes usar mysql_data_seek para regresar el puntero al inicio:
http://www.php.net/manual/es/functio...-data-seek.php

Saludos!

EDITO: Pateketrueke se me adelantó y su solución es mejor
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 01/08/2011, 22:00
 
Fecha de Ingreso: agosto-2011
Mensajes: 8
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: consulta a base de datos me devuelve n-1 elemento

Cita:
Iniciado por pateketrueke Ver Mensaje
Bueno, si te fijas en lo que te acabo de decir resta un elemento porque lo extraes del resultado.

Así que si consideras necesario extraer dicho resultado antes de contar, ¿podrías sumarle un 1 al total verdad?
intente esto pero no le puedo sumar 1. intente dentro de el while y tambien antes de esta manera.

$row = mysql_fetch_array($busca) +1;

pero me da error y creo que no le puedo sumar al resultado de esa funcion.

disculpen mi ignorancia no se como hacerlo con la funcion fseek().

si podrian ayudarme con algo de codigo me seria muy util gracias
  #7 (permalink)  
Antiguo 01/08/2011, 22:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 8
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: consulta a base de datos me devuelve n-1 elemento

YA lo solucione muchas gracias hice lo siguente


mysql_data_seek($busca,0);
while($row = mysql_fetch_array($busca) )
{



muchas gracias por sus respuestas :)

Etiquetas: consultadb, n-1, 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 22:47.