Foros del Web » Programando para Internet » PHP »

Error mostrando Datos con Explode()... Me duplica los registros!

Estas en el tema de Error mostrando Datos con Explode()... Me duplica los registros! en el foro de PHP en Foros del Web. Saludos amigos, Tengo un pequeño error cuando muestro mis registros usando un JOIN en la sentencia SQL. Ya que en una tabla tengo los datos ...
  #1 (permalink)  
Antiguo 10/08/2009, 13:20
Avatar de PedroJTR  
Fecha de Ingreso: febrero-2008
Ubicación: Guarenas, Venezuela
Mensajes: 116
Antigüedad: 12 años
Puntos: 1
Pregunta Error mostrando Datos con Explode()... Me duplica los registros!

Saludos amigos,

Tengo un pequeño error cuando muestro mis registros usando un JOIN en la sentencia SQL. Ya que en una tabla tengo los datos del registro y en otra tengo el ID del registro.
Este es mi codigo
Código PHP:
<?
                $sql
mysql_query("SELECT servicio_id FROM ".COTIZA_TABLE." ");
                
$row=mysql_fetch_array($sql);
                
$sid explode(","$row[servicio_id]);
                for(
$i=0;$i<count($sid);$i++) {
    
?>
        <?
                $serv
db_query('SELECT servicio_id,servicio_name,costo,gasto FROM '.SERVICIOS_TABLE.' ');
                while (list(
$id,$name,$costo,$gasto) = db_fetch_row($serv)){ 
                
$total $costo $gasto;
                
$total number_format($total,2,".",",");
                
?>
        <tr>
          <td><div align="center">
            <?=$sid[$i]?>
          </div></td>
          <td><?=$name?></td>
          <td><div align="center">
            <?=number_format($costo,2,".",",");?>
          </div>            </td>
          <td><div align="center">
            <?=number_format($gasto,2,".",",");?>
          </div>            </td>
          <td><div align="center">
            <?=$total?>
          </div>            </td>
        </tr>
        <?
                
}}?>
A la hora de mostrarme los registros me los muestra de esta manera:

ID Descripcion Costo Gasto Total
1 xxxxxxxxxxxxxx xxxx x xxxx xxxx
1 xxxxxxxxxxxxxx xxxx x xxxx xxxx
1 xxxxxxxxxxxxxx xxxx x xxxx xxxx
4 xxxxxxxxxxxxxx xxxx x xxxx xxxx
4 xxxxxxxxxxxxxx xxxx x xxxx xxxx
4 xxxxxxxxxxxxxx xxxx x xxxx xxxx
3 xxxxxxxxxxxxxx xxxx x xxxx xxxx
3 xxxxxxxxxxxxxx xxxx x xxxx xxxx
3 xxxxxxxxxxxxxx xxxx x xxxx xxxx

***(Ven como me duplica 3 veces el registro???... y en mi campo no estan duplicados.)

Deberia salir asi:

ID Descripcion Costo Gasto Total
1 xxxxxxxxxxxxxx xxxx x xxxx xxxx
4 xxxxxxxxxxxxxx xxxx x xxxx xxxx
3 xxxxxxxxxxxxxx xxxx x xxxx xxxx

***(Por que en mi campo tengo solo esos tres registros (1,4,3) y los saco con explode)

Alguien me podría explicar que estoy haciendo mal para que me duplique mis registros????
  #2 (permalink)  
Antiguo 10/08/2009, 13:29
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 8 meses
Puntos: 1517
Respuesta: Error mostrando Datos con Explode()... Me duplica los registros!

El while va a tratar de recorrer la base de datos y lo va a hacer por todos los registros porque no le declaraste al query un WHERE para que verifique solamente lo que tu quieres. Esta publicando por todos los registros que tu tienes. Si tienes 3 registros va a hacerlo 3 veces, si tienes 4 va a hacerlo 4 veces en cada uno.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/08/2009, 13:07
Avatar de PedroJTR  
Fecha de Ingreso: febrero-2008
Ubicación: Guarenas, Venezuela
Mensajes: 116
Antigüedad: 12 años
Puntos: 1
Respuesta: Error mostrando Datos con Explode()... Me duplica los registros!

Hola amigo!..
Entiendo tu respuesta!, pero lo cambie y nada! ahora no me muestra nada!

Código PHP:
<?
                $sql
mysql_query("SELECT servicio_id FROM ".COTIZA_TABLE." ");
                
$row=mysql_fetch_array($sql);
                
$sid explode(","$row[servicio_id]);
                for(
$i=0;$i<count($sid);$i++) {
    
?>
        <?
                $serv
db_query('SELECT servicio_id,servicio_name,costo,gasto FROM '.SERVICIOS_TABLE.' WHERE servicio_id=$sid[$i]');
                while (list(
$id,$name,$costo,$gasto) = db_fetch_row($serv)){ 
                
$total $costo $gasto;
                
$total number_format($total,2,".",",");
                
?>
        <tr>
          <td><div align="center">
            <?=$id?>
          </div></td>
          <td><?=$name?></td>
          <td><div align="center">
            <?=number_format($costo,2,".",",");?>
          </div>            </td>
          <td><div align="center">
            <?=number_format($gasto,2,".",",");?>
          </div>            </td>
          <td><div align="center">
            <?=$total?>
          </div>            </td>
        </tr>
        <?
                
}}?>
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 17:43.