PHP - Como remplazar un for por while ? o similar.

   
Vista:

Como remplazar un for por while ? o similar.

Publicado por Javier Santacruz (3 intervenciones) el 06/03/2018 02:46:30
Hola a todo programadores, tengo una inquietud de como resolver un par de lineas de codigo, les comento lo que estoy tratando de hacer.

Tengo una base de datos con dos tablas relacionadas, la tabla principal " usuarios " con algunos registros de ejemplo y la tabla dependiente " contabilidad " , esta obienmente con su clave foranea, al finalizar el mes cada usuario debe recibir su cuota por el dinero prestado, para el caso todos la misma cantidad.

Tengo un formulario html con los campos necesarios, que son:
Banco, fecha de consignaciòn, valor o cantidad de dinero.

He creado un archivo php que recibe estas variables, y debe insertarlas a la tabla contabilidad, bien

este codigo sencillo esta escrito de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
session_start();
    require('config.php');     /*  Coneciòn con la base de datos */   
 
    if($conexion){
        if($_POST){
 
        $banco=$_POST['banco'];
        $fecha=$_POST['fecha'];
        $cuota=$_POST['cuota'];
        $valor=$_POST['valor'];
        $saldo=5400.000;          /* El valor de la deuda como ejemplo */
        $total=$valor*$cuota;
        $saldo1=$saldo-$total;  /* Saldo idica la cantidad faltante por pagar */
 
 
 
  if($banco==""){echo"<script type=\"text/javascript\">alert('Ups olvido la entidad bancaria !!');
                          window.location='../tabla_generador_consignacion.php';</script>"; }
 
 elseif($fecha==""){echo"<script type=\"text/javascript\">alert('Ups olvido la fecha  !!');
                               window.location='../tabla_generador_consignacion.php';</script>";}
 
 elseif($cuota==""){echo"<script type=\"text/javascript\">alert('Ups olvido lacuota !!');
                               window.location='../tabla_generador_consignacion.php';</script>";}
 
 elseif($valor==""){echo"<script type=\"text/javascript\">alert('Ups olvido el dinero consignado  !!');
                             window.location='../tabla_generador_consignacion.php';</script>";}
 
 else{
            /*TENER EN CUENTA QUE EL CONTADOR SOLO VA SI LOS REGISTROS SON CONSECUTIVOS*/
 
     $cont = mysqli_query($conexion,"SELECT idusuarios FROM usuarios");
 
     $num= mysqli_num_rows($cont);
 
  for($a=3; $a<=$num; $a++) { /* Este for inicia en 3 asumiendo que los dos primeros son admin, los demas clientes */
 $query=mysqli_query($conexion,
"INSERT INTO contabilidad (banco,fecha,cuotas,valor,saldo,usuarios_idusuarios0)
 VALUES('$banco','$fecha','$cuota','$valor',$saldo1,'$a')")
 
or die ("<script type=\"text/javascript\">alert('Error al ingresar el  nuevo registro, en la tabla contabilidad !!'); window.location='../tabla_generador_consignacion.php';</script>");
 
          echo"<script type=\"text/javascript\">alert('Consignacion realizada con exito !!');window.location='../tabla_generador_consignacion.php';</script>";
           }
         }
      }
    }
    mysqli_close($conexion);
    header("window.location: ../tabla_generador_consignacion.php");
?>
Como se puede notar el siclo for si funciona, si hace la tarea, pero!!!! solo en el ejemplo de 5 usuarios, si se elimina uno ejemplo el 3, quedaria 1,2,4,5. el siclor aunque hace la tarea de nuevo, da el error al pasar po el ciclo 3, mi intencion es que este codigo quede flexible, quiero decir si se elimina registros o se agregan registro al consignar las cuotas funcione sin fallar teniendo en cuanta cada registro, he pensado talvez que un while o un do while podria funcionar, pero he quedado sin ideas de como organizarlo de una nueva menera.

Agadesco por si valioso tiempo y su colaboraciìon el la posible solucion de como quedaria, estaria demas si explican con algunos ejemplos de codigo ? :).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de santi

Como remplazar un for por while ? o similar.

Publicado por santi (99 intervenciones) el 07/03/2018 01:46:50
Hola,

sabiendo que: /* Este for inicia en 3 asumiendo que los dos primeros son admin, los demas clientes */

Porque no pruebas de seleccionarlos a partir del id 3:

1
$cont = mysqli_query($conexion,"SELECT idusuarios FROM usuarios WHERE idusuarios > 3");

De esta forma ya no tienes que empezar el for desde 3...

Prueba a ver ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como remplazar un for por while ? o similar.

Publicado por Javier Santacruz (3 intervenciones) el 08/03/2018 05:11:09
Hola gracias por su aporte, creo que no me funcionaria o no sé si lo estoy viendo equivocadamente, para el caso, el id 3 es el primer registro cliente, por lo tanto el 3 se convierte en llave foránea en la tabla contabilidad, al agregar la línea de código sugerida, en el ejemplo de 10 registros menos dos de los admin, el contador traería 8 en total, iniciando en 1 y terminando en 8 lo que significa que uno como llave foránea sería el de una registro admin. O me equivoco? voy aprobar tambien cambiando la insercion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como remplazar un for por while ? o similar.

Publicado por Javier Santacruz javeriano33@gmail.com (1 intervención) el 19/03/2018 20:45:22
Encontré la solución de una forma muy practica como lo habia mensionado usando el bucle while no genera errores y es preciso para la inserción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar