Foros del Web » Programando para Internet » PHP »

el ciclo while me repite todo

Estas en el tema de el ciclo while me repite todo en el foro de PHP en Foros del Web. Y cuando digo todo, es todo, desde el fondo hasta los datos. Bueno les cuento, con el while, pretendo que se me muestren los valores ...
  #1 (permalink)  
Antiguo 29/12/2010, 03:18
 
Fecha de Ingreso: abril-2010
Mensajes: 112
Antigüedad: 14 años
Puntos: 2
el ciclo while me repite todo

Y cuando digo todo, es todo, desde el fondo hasta los datos.

Bueno les cuento, con el while, pretendo que se me muestren los valores correspondientes al campo que tiene el mismo id.
Con el ciclo no hay problema, lo ejecuta correctamente, todo va bien. Con las otras consultas no tengo problemas, todo perfecto, excepto con esa, que sería la variable que está con nombre $tarea y con el SELECT bajo la variable $tabla_2.

Pero eso, la verdad he buscado el error y no lo puedo encontrar, revise que tal la anidación y al parecer está correcto...estuve biendo otros temas en el foro y lo que vi y analicé bloque por bloque y linea por línea no me dio resultados.

Si es que hay que ponerlo en otro orden para que no se mezcle con los del otro select, la verdad no se como debe ser...si alguien me da una pista, se agradecerá

Espero no aburrir con todo el código, intentaré resumirlo.

Felicidades,

Gracias.



Código PHP:
<?php 
$id 
$_GET['id'];
$link mysql_connect("localhost""user""pass"); 
mysql_select_db("bd"$link); 

$tabla_2 mysql_query("SELECT * FROM trabajos INNER JOIN tareas ON trabajos.tareas_id_tarea = tareas.id_tarea WHERE trabajos.ordenes_trabajo_id_ot='$id' AND tareas.id_tarea"); 

(
$tabla_2) or die(mysql_error()); 
while (
$reg mysql_fetch_array($tabla_2))
{
$tarea $reg['tarea'];


$tabla mysql_query("SELECT * FROM (ordenes_trabajo INNER JOIN clientes ON ordenes_trabajo.id_cliente = clientes.id_cliente) WHERE ordenes_trabajo.id_ot='$id' AND ordenes_trabajo.id_ot = clientes.id_cliente"); 
(
$tabla) or die (mysql_error()); 

if (
$registro mysql_fetch_array($tabla))
{
$id_ot $registro['id_ot'];

//datos cliente
$apelcliente $registro['apellido'];
$direccion $registro['direccion'];
$fono $registro['fono'];
$fax $registro['fax'];
$email $registro['email'];
$nomcliente $registro['nombre'];
$nota $registro['notas'];
$comuna $registro['comunas_id_comuna'];
$ciudad $registro['ciudades_id_ciudad'];
$rut $registro['rut'];
$dv $registro['dv'];

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="sav.css">
<title>Detalle de Orden de trabajo número <?php echo $id_ot?></title>
</head>

<body>


<div id="infocliente">

    DATOS DEL CLIENTE</br >
-------------------------------------------------------------------------</br >
Nombre: <?php echo (htmlentities($nomcliente));?>  <?php echo (htmlentities($apelcliente));?></br >
RUT: <?php echo $rut;?>-<?php echo $dv;?></br >
Dirección: <?php echo (htmlentities($direccion));?></br >
<?php echo $comuna ;?><?php echo $ciudad ;?></br >
Teléfono: <?php echo $fono?></br >
Fax: <?php echo $fax?></br >
Email: <a href="mailto:<?php echo $email;?>"\><?php echo $email;?></a></br >
Notas: <?php echo (ucfirst(htmlentities($nota)));?></br >
</div>


</div>

<div id="tareas">
<ul><li><?php echo $tarea;
}
//fin de while
?>
</li></ul></div>

<?php 
//fin de IF

?>

</body>

</html>
  #2 (permalink)  
Antiguo 29/12/2010, 03:37
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: el ciclo while me repite todo

Hola Ojopex2, no sé si hay más código antes o después de esto, pero creo que tampoco importa para el caso.
En principio, las consultas las haces 2 veces, además la función mysql_fetch_array devuelve un array asociativo y otro con índices. Esto puedes evitarlo ya que a tí sólo te interesan los índices, sólo por probar, prueba esto a ver si te sirve:


Código PHP:
<?php

error_reporting
(E_ALL);
ini_set("display_errors"1);

$id $_GET['id'];
$link mysql_connect("localhost""user""pass");
mysql_select_db("bd"$link);

$tabla_2 mysql_query("SELECT * FROM trabajos INNER JOIN tareas ON trabajos.tareas_id_tarea = tareas.id_tarea WHERE trabajos.ordenes_trabajo_id_ot='$id' AND tareas.id_tarea") or die(mysql_error());

while (
$reg mysql_fetch_assoc($tabla_2))
{
    
$tarea $reg['tarea'];


    
$tabla mysql_query("SELECT * FROM (ordenes_trabajo INNER JOIN clientes ON ordenes_trabajo.id_cliente = clientes.id_cliente) WHERE ordenes_trabajo.id_ot='$id' AND ordenes_trabajo.id_ot = clientes.id_cliente") or die (mysql_error());

    while (
$registro mysql_fetch_assoc($tabla))
    {
        
$id_ot $registro['id_ot'];

        
//datos cliente
        
$apelcliente $registro['apellido'];
        
$direccion $registro['direccion'];
        
$fono $registro['fono'];
        
$fax $registro['fax'];
        
$email $registro['email'];
        
$nomcliente $registro['nombre'];
        
$nota $registro['notas'];
        
$comuna $registro['comunas_id_comuna'];
        
$ciudad $registro['ciudades_id_ciudad'];
        
$rut $registro['rut'];
        
$dv $registro['dv'];

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="sav.css">
<title>Detalle de Orden de trabajo número<?php echo $id_ot?></title>
</head>
<body>
<div id="infocliente"> DATOS DEL CLIENTE</br >
  -------------------------------------------------------------------------</br >
  Nombre: <?php echo (htmlentities($nomcliente));?> <?php echo (htmlentities($apelcliente));?></br >
  RUT: <?php echo $rut;?>-<?php echo $dv;?></br >
  Dirección: <?php echo (htmlentities($direccion));?></br >
  <?php echo $comuna ;?><?php echo $ciudad ;?></br >
  Teléfono: <?php echo $fono?></br >
  Fax: <?php echo $fax?></br >
  Email: <a href="mailto:<?php echo $email;?>"\><?php echo $email;?></a></br >
  Notas: <?php echo (ucfirst(htmlentities($nota)));?></br >
</div>
</div>
<div id="tareas">
  <ul>
    <li><?php echo $tarea;
    }
//fin de while
?> </li>
  </ul>
</div>
<?php 
//fin de IF

?>
</body>
</html>
Además, generas una página en cada bucle, deberías mirar la manera de que la cabecera HTML aparezca sólo una ves.
Espero que sirva, si no, postea, salu2

Etiquetas: todo, ciclos
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.