Foros del Web » Programando para Internet » PHP »

Whiles que me dan dos pasadas y solo quiero una

Estas en el tema de Whiles que me dan dos pasadas y solo quiero una en el foro de PHP en Foros del Web. Hola a todos/as Tengo este codigo, que os pongo aqui: Código PHP: <?php //echo " <select name='id_operario' class='text_login' id='id_operario'>"; //echo  "<option>Selecciona un operario</option>"; require  'config.php' ; $id_delegacion = $_GET [ 'id_d' ]; $id_empresa ...
  #1 (permalink)  
Antiguo 01/02/2008, 17:24
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 3 meses
Puntos: 0
Whiles que me dan dos pasadas y solo quiero una

Hola a todos/as

Tengo este codigo, que os pongo aqui:

Código PHP:
<?php
//echo " <select name='id_operario' class='text_login' id='id_operario'>";
//echo  "<option>Selecciona un operario</option>";

require 'config.php';

$id_delegacion=$_GET['id_d'];
$id_empresa=$_GET['id_e'];



  
// Sacamos los operarios prefacturados
 
$com_facturado=mysql_query("SELECT id_operario,cod_operario FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha'");
 while (
$esta=mysql_fetch_row($com_facturado))




{


// Aqui extraemos los operarios que todavia no han prefacturado
$sacar_operario=mysql_query("SELECT id_operario,id_delegacion,cod_operario,apellido1,apellido2,nombre FROM operarios WHERE id_delegacion='$id_delegacion' AND id_operario!='$esta[0]'");

while (
$row mysql_fetch_row($sacar_operario))

        {
         if (
$row[0]==$esta[0])
         {
         echo 
"Estoy aqui";
         }
         else
         {
          echo 
$row[0]."<br>";
         
//echo" <option value=".$row[0].">->".$row[2]."-".$row[5]."-".$row[3]."-".$row[4]."</option>";
               
}

               }

}
//echo "</select> ";
?>
Y esto me devuelve lo siguiente:

1
3
4
1
2
4

Realmente lo que me vale es solo el 1 y el 4 que serian los operarios no prefacturados, pero como le da una pasado por cada operario prefacturado, pues me devuelve primero la lista 1,3,4 por que en la consulta el id_operario es igual a 2 y despues en la segunda pasada me devuelve 1,2,4 por que ahora y en la segunda pasada el id_operario ya es igual a 3, se puede ver en la ultima consulta la variable es $esta[0].

Fijaros que realizo dos consulta y la segunda depende o utiliza los valores que devuelve la primera en su while.

Mi pregunta es como puedo hacer para resolver este lio, por que necesito listar solo los operarios no prefacturados, ¿a alguien se le ocurre como solucionar este codigo?.

Perdonar teneis razon sin tablas poca ayuda podia yo pedir, aqui os las pongo

Tabla Prefacturas, aqui se si el operario ha prefacturado o no:

id_prefactura
id_operario
id_delegacion
cod_operario
id_jefe
fecha

Tabla Operarios, aqui obtengo todos los datos de los operarios:

id_operario
porcentaje
id_delegacion
cod_operario
jefe_equipo
apellido1
apellido2
nombre

Entonces como os explicaba necesito sacar o obtener, los operarios de una delegación que todavia no han prefacturado en una fecha dada, pero en esa fecha no antes, por que se supone que todo operario prefactura y lo hace todos los dias, aclarando el tema , necesito obtener una lista de los operarios que en el dia corriente, el cual me lo da la variable, $fecha y esta la obtengo de la maquina cliente, no hayan prefacturado, para asi solo mostrarlos a ellos y que el operador de la aplicación no se me lie, y me duplique un valor.

Muchas gracias por vuestra paciencia.

Un saludo

Última edición por marco_sa; 02/02/2008 a las 01:21 Razón: ampliar datos de la pregunta
  #2 (permalink)  
Antiguo 01/02/2008, 18:04
 
Fecha de Ingreso: septiembre-2003
Ubicación: Cancun mexico
Mensajes: 50
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Whiles que me dan dos pasadas y solo quiero una

puedes poner la estrucutura de tus tablas, para poder hacer un nuevo codigo por favor.
  #3 (permalink)  
Antiguo 01/02/2008, 19:32
 
Fecha de Ingreso: marzo-2004
Ubicación: España
Mensajes: 185
Antigüedad: 20 años, 1 mes
Puntos: 19
Re: Whiles que me dan dos pasadas y solo quiero una

meye un while dentro de otro while!
__________________
Escape Room -

Ios Games
  #4 (permalink)  
Antiguo 02/02/2008, 01:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Whiles que me dan dos pasadas y solo quiero una

Cita:
Iniciado por marco_sa Ver Mensaje
Hola a todos/as

Tengo este codigo, que os pongo aqui:

Código PHP:
<?php
//echo " <select name='id_operario' class='text_login' id='id_operario'>";
//echo  "<option>Selecciona un operario</option>";

require 'config.php';

$id_delegacion=$_GET['id_d'];
$id_empresa=$_GET['id_e'];



  
// Sacamos los operarios prefacturados
 
$com_facturado=mysql_query("SELECT id_operario,cod_operario FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha'");
 while (
$esta=mysql_fetch_row($com_facturado))




{


// Aqui extraemos los operarios que todavia no han prefacturado
$sacar_operario=mysql_query("SELECT id_operario,id_delegacion,cod_operario,apellido1,apellido2,nombre FROM operarios WHERE id_delegacion='$id_delegacion' AND id_operario!='$esta[0]'");

while (
$row mysql_fetch_row($sacar_operario))

        {
         if (
$row[0]==$esta[0])
         {
         echo 
"Estoy aqui";
         }
         else
         {
          echo 
$row[0]."<br>";
         
//echo" <option value=".$row[0].">->".$row[2]."-".$row[5]."-".$row[3]."-".$row[4]."</option>";
               
}

               }

}
//echo "</select> ";
?>
Y esto me devuelve lo siguiente:

1
3
4
1
2
4

Realmente lo que me vale es solo el 1 y el 4 que serian los operarios no prefacturados, pero como le da una pasado por cada operario prefacturado, pues me devuelve primero la lista 1,3,4 por que en la consulta el id_operario es igual a 2 y despues en la segunda pasada me devuelve 1,2,4 por que ahora y en la segunda pasada el id_operario ya es igual a 3, se puede ver en la ultima consulta la variable es $esta[0].

Fijaros que realizo dos consulta y la segunda depende o utiliza los valores que devuelve la primera en su while.

Mi pregunta es como puedo hacer para resolver este lio, por que necesito listar solo los operarios no prefacturados, ¿a alguien se le ocurre como solucionar este codigo?.

Saludos y mil gracias por dedicarme vuestro tiempo.
Perdonar teneis razon sin tablas poca ayuda podia yo pedir, aqui os las pongo

Tabla Prefacturas, aqui se si el operario ha prefacturado o no:

id_prefactura
id_operario
id_delegacion
cod_operario
id_jefe
fecha

Tabla Operarios, aqui obtengo todos los datos de los operarios:

id_operario
porcentaje
id_delegacion
cod_operario
jefe_equipo
apellido1
apellido2
nombre

Entonces como os explicaba necesito sacar o obtener, los operarios de una delegación que todavia no han prefacturado en una fecha dada, pero en esa fecha no antes, por que se supone que todo operario prefactura y lo hace todos los dias, aclarando el tema , necesito obtener una lista de los operarios que en el dia corriente, el cual me lo da la variable, $fecha y esta la obtengo de la maquina cliente, no hayan prefacturado, para asi solo mostrarlos a ellos y que el operador de la aplicación no se me lie, y me duplique un valor.

Muchas gracias por vuestra paciencia.

Un saludo
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 15:28.