Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2008, 00:44
marco_s
 
Fecha de Ingreso: septiembre-2004
Mensajes: 23
Antigüedad: 19 años, 7 meses
Puntos: 1
Sonrisa Sobre bucles while

Hola a todos/as

Estoy un poco atascado con unos bucles while, os explico, tengo dos tablas un tiene el listado de trabajadores y otra tiene el listado de facturas, necesito hacer que solo se pueda facturar un trabajador por día osea que solo me muestre en el select los trabajadores que quedan por facturar y no todos.

Actualmente tengo el siguiente codigo:

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

// Aqui compruebo si algun trabajador a sido facturado en la fecha

      
$operarios_facturadosmysql_query ("SELECT id_operario FROM prefactura WHERE id_delegacion='$id_delegacion' AND fecha='$fecha'")or die (mysql_error());

// Si no ha sido facturado ninguno en la fecha, imprimo todos los trabajadores en el combo select
if (mysql_num_rows($operarios_facturados) == 0){
     
$sacar_operario=mysql_query("SELECT id_operario,id_delegacion,cod_operario,apellido1,apellido2,nombre FROM operarios WHERE id_delegacion='$id_delegacion'");


while (
$row mysql_fetch_row($sacar_operario))
{
?>
         <option value="<?php echo $row[0]?>" >-> <?php echo $row[2]?>-<?php echo $row[5]?>-<?php echo $row[3]?>-<?php echo $row[4]?> </option>

              <?php
}

}
// Si hay algun trabajador facturado no lo deberia imprimir, solo imprimo los que estan pendientes de facturar en esta fecha. 
// Aqui es donde recorre dos veces el bucle, cuando hay mas de un trabajador facturado claro, y por lo tanto me devuelve lo que os comento mas abajo.
else

{

     while (
$operario_facturado=mysql_fetch_array ($operarios_facturados)){

         
$todos_operariosmysql_query ("SELECT id_operario,id_delegacion,cod_operario,apellido1,apellido2,nombre FROM operarios WHERE id_delegacion='$id_delegacion' AND id_operario!='$operario_facturado[0]'")or die (mysql_error());
    while (
$row mysql_fetch_array($todos_operarios))
    
{

?>
         <option value="<?php echo $row[0]?>" >-> <?php echo $row[2]?>-<?php echo $row[5]?>-<?php echo $row[3]?>-<?php echo $row[4]?> </option>

              <?php

}
}
?>
</select>
Este codigo funciona aparentemente bien, pero viene el problema cuando se ha facturado a dos trabajadores, puesto que el bucle recorre de nuevo todo y me devuelve esto:

<select name="id_operario" class="text_login" id="id_operario">

<option>Selecciona un operario</option>

<option value="2" >-> 00402-OSCAR </option>

<option value="3" >-> 00403-PATRICIA </option>

<option value="1" >-> 00401-MARCO </option>

<option value="3" >-> 00403-PATRICIA</option>

</select>

Habiendo ya facturado tanto a OSCAR como a MARCO me vuelven a salir puesto que el while, ignora a cada uno en una de sus pasadas y de ahi que me imprima dos veces PATRICIA.

¿Alguien me podria hechar un cable o una mano?, estoy bloqueado no se como continuar con ello, ¿alguna idea al respecto?.

Gracias por vuestro tiempo.