PHP - Problema con ciclo FOR para insertar en MYSQL

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 21 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por Roberto (3 intervenciones) el 09/04/2021 16:56:04
Buenas tardes , estoy atascado con este ciclo, tal como lo tengo inserta n veces cada registro (n= $total del primer FOR) , el problema lo tengo en el select, este es la parte del código de donde salen por POST los datos
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
<select name="fname[]<?php echo $i; ?>" id="selector<?php= $rol['id']; ?>">
<?php
$centro="";
$re=$SQLConn->query("SELECT * FROM centros  order by centrocoste ASC");
 
while($col=$re->fetch_array())  {
 
            ?>
 
                <option value="<?php echo $col[2]; ?>" <?php if ($centro== $col[2]) {?> selected="selected" <?php }?>><?php echo $col[2]; ?></option>
 
 
                <?php
                }
 
                ?>
</select>
 
	</td>
                        <td><input type="text" name="lname<?php echo $i; ?>" placeholder="XXXXX"  pattern="(([0-9]{5}))" required/></td>
						<td><input type="text" name="lref<?php echo $i; ?>" placeholder="Referencia" required/></td>
						<td><input type="text" name="lobs<?php echo $i; ?>" placeholder="Observaciones" /></td>
 
                    </tr>
                    <?php
                }
                ?>

La parte donde recibo para insertar en la base de datos es esta: ( el problema lo tengo con esos 2 FOR)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for ($u=0;$u<=$total;$u++)
      	{
 
 
    for($i=0; $i<=$total; $i++)
    {
 
        $fn = $fname[$u];   // viene del select
		$rotacion='CENTRAL';  // valor fijo
		$fecha=date('Y-m-d');  // fecha
        $ln = $_POST["lname$i"];   // valor poste articulo
		$ref = $_POST["lref$i"];	 // valor post referencia
		$desc = 'ROTACIONES CENTRAL';  // descripción valor fijo
		$obs = $_POST["lobs$i"];//observaciones
		$tienda=$_SESSION['nombre']; //nombre sesion
		$codigo=$ln.'/'.$nombre.'->'.$fn.'/'.$desc.'/'.$fecha;
 
		$sql="INSERT INTO tr(Fecha,Tienda,Articulo,Descripcion,Observaciones,Otro2,Tiendasolicitante,Referencia) VALUES('".$fecha."','".$fn."','".$ln."','".$desc."','".$obs."','".$codigo."','".$rotacion."','".$ref."')";
 
		$sql = $SQLConn->query($sql);   poner luego
 
 }
	}
		}

Gracias de antemnao
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por joel (1269 intervenciones) el 09/04/2021 19:14:32
Hola Roberto, de donde sale la variable $i?
No veo que la incrementes, por lo que entiendo que se sobrescriben los nombres, por lo que creo que solo te llegara un solo nombre por cada uno de los input.

Lo puedes verificar viendo el código fuente?
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 21 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por Roberto (3 intervenciones) el 10/04/2021 11:19:33
Buenas, intentaré explicarme mejor, tengo una página donde se indica el número de INPUTS que aparecerán en la siguiente, ese es el valor de la variable "$total"
de ahí el FOR con "$i" mientras sea <= a $total.

si hay dos INPUTS pues el valor es 2, si hay tres pues 3,

El problema que tengo es que luego en los INPUTS tengo un "SELECT"
1
$fname[$u]
donde "u" guarda un valor que puede ser diferente por cada INPUT, por lo que necesito un "FOR" que cambie el valor de "u" por cada línea de INPUT que es la variable "$i"

Espero explicarme mejor.
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
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por joel (1269 intervenciones) el 10/04/2021 18:03:58
Creo que entiendo lo que dices, pero no es lo que veo en el código cuando creas los inputs...
Puedes pegar el código fuente que se muestra en el navegador (ver código fuente)?
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 21 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por Roberto (3 intervenciones) el 10/04/2021 21:40:42
Buenas, podré el código de la primera página "GENERATE.PHP" donde sale el número de INPUTS que se crean en la segunda "ADD-DATE.PHP"

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
// Pagina   Generate php //////
<?php
session_start();
include_once 'dbcon.php';
 
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php header("Content-Type: text/html; charset=utf-8");?>
<title>prueba</title>
<link rel="shortcut icon" href="./imagenes/MI.gif" type="image/gif" />
<link href="./css/estilos.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<form method="post" action="add-data.php">
    <title>Mi</title>
 
    <table width="50%" align="center" border="0">
 
        <tr>
            <!--<td>Numero de Artículos </td>-->
        </tr>
 
        <tr>
			<td>Numero de Artículos </td>
            <td>
                <input type="text"  value="1" name="no_of_rec" placeholder="Numero de pedidos que vas a realizar ? ex : 1 , 2 , 3 , 5" maxlength="2" pattern="[0-9]+" required />
            </td>
 
        </tr>
 
        <tr>
            <td><button type="submit" name="btn-gen-form">Aceptar</button>
                &nbsp;
				<a href="index.php">pagina Anterior</a>
                &nbsp;
              <!--  <a href="index.php">back</a>-->
            </td>
        </tr>
 
    </table>
 
</form>


Y este es el de la segunda

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<?php
session_start();
error_reporting(0);
include_once 'dbcon.php';
 
 
if ($_SESSION['nombre'] == '') {
     //si no está logueado lo envío a la página de autentificación
     header('Location: ../indexasd.php');
 } else {
if(isset($_POST['save_mul']))
{
$nulo="Selecciona el centro de trabajo";
$nombre=$_SESSION['nombre'];
$arrayopciones1=$_POST[fname];
if (in_array($nombre, $arrayopciones1) ) {
 $salida=true;///ejecutas lo que quieres
 echo '<script language="javascript">alert("Selecciona otra Tienda");</script>';
	header("Location: generate.php");
 }
 if (in_array($nulo, $arrayopciones1) ) {
 $salida=true;///ejecutas lo que quieres
 echo '<script language="javascript">alert("Selecciona una Tienda");</script>';
	header("Location: generate.php");
 
 }
 
 else{
 
	$fname=$_POST[fname];
 
 
    $total = $_POST['total'];
	$array = array($fname);
$_SESSION['array'] = $fname;
$contar=count($fname);
$a=0;
 
 
	for ($u=1;$u<=$total;$u++)
      	{
 
 
 
    for($i=1; $i<=$total; $i++)
    {
 
		$fn = $fn =$fname.[$u];
		$rotacion='CENTRAL';
		$fecha=date('Y-m-d');
        $ln = $_POST["lname$i"];//articulo
		$ref = $_POST["lref$i"];//articulo
 
		$desc = 'ROTACIONES CENTRAL';////////$_POST["ldesc$i"];//descripcion
		$cant = $_POST["lcant$i"];//cantidad
		$obs = $_POST["lobs$i"];//observaciones
		$cliente = $_POST["lclient$i"];//clienta
		$telf = $_POST["ltlf$i"];//telefono
		$tienda=$_SESSION['nombre']; //nombre sesion
		$codigo=$ln.'/'.$nombre.'->'.$fn.'/'.$desc.'/'.$fecha;
 
		$sql="INSERT INTO tr(Fecha,Tienda,Articulo,Descripcion,Cantidad,Observaciones,Otro2,Tiendasolicitante,Clienta,Telefono,Referencia) VALUES('".$fecha."','".$fn."','".$ln."','".$desc."','".$cant."','".$obs."','".$codigo."','".$rotacion."','".$cliente."','".$telf."','".$ref."')";
 
		$sql = $SQLConn->query($sql);   //poner luego
 
		$resultado_traspaso=$SQLConn->query("SELECT resultado as resultado_traspaso from tipo_traspaso where id = '1'");
		$nroviajenew = $resultado_traspaso->fetch_assoc();
 
 }
	}
	   }
 
$resultado_traspaso=$SQLConn->query("SELECT resultado as resultado_traspaso from tipo_traspaso where id = '1'");
		$nroviajenew = $resultado_traspaso->fetch_assoc();
if($nroviajenew["resultado_traspaso"] == 'SI')
{
 
	    if($sql)
    {
 
        ?>
        <script>
            alert('<?php echo $total." Pedido/s realizado/s !!!"; ?>');
        </script>
 
        <?php
    }
    else
    {
        ?>
        <script>
            alert('Error , Repite el Proceso');
			window.location.href='add-data.php';
        </script>
        <?php
    }
 
 
}else {
 
    if($sql)
    {
 
        ?>
        <script>
            alert('<?php echo $total." Pedido/s realizado/s !!!"; ?>');
        </script>
 
        <?php
    }
    else
    {
        ?>
        <script>
            alert('Error , Repite el Proceso');
			window.location.href='add-data.php';
        </script>
        <?php
    }
 
	}
 
 
}
}
?>
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php header("Content-Type: text/html; charset=utf-8");?>
<title>prueba</title>
<link rel="shortcut icon" href="./imagenes/MI.gif" type="image/gif" />
<link href="./css/estilos.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<div class="container">
    <?php
    if(isset($_POST['btn-gen-form']))
    {
 
        ?>
        <form name="adder" method="post">
			<input type="hidden" name="total" value="<?php echo $_POST["no_of_rec"]; ?>" />
            <table width="50%" align="center" border="0">
 
                <tr>
                    <td colspan="9"><a href="generate.php">Realizar mas pedidos...</a></td>
 
 
                </tr>
 
                <tr>
                    <th>##</th>
					<th>Fecha</th>
                    <th>Tienda</th>
                    <th>Articulo</th>
					<th>Referencia</th>
					<th>Observaciones</th>
                </tr>
                <?php
				$fecha=date('d-m-Y');
                for($i=1; $i<=$_POST["no_of_rec"]; $i++)   //for($i=1; $i<=$num; $i++)     //for($i=1; $i<=$_POST["no_of_rec"]; $i++)
                {
                    ?>
                    <tr>
                        <td><?php echo $i; ?></td>
						<td ><input  value="<?php echo $fecha; ?>" readonly/></td>
 
 
    <td>
	<select name="fname[]<?php echo $i; ?>" id="selector<?php= $rol['id']; ?>">
<?php
$centro="";
$re=$SQLConn->query("SELECT * FROM centros where centrocoste = '0' or (centrocoste >= '2' and centrocoste <= '109') order by centrocoste ASC");
while($col=$re->fetch_array())  {
?>
 
                <option value="<?php echo $col[2]; ?>" <?php if ($centro== $col[2]) {?> selected="selected" <?php }?>><?php echo $col[2]; ?></option>
<?php
  }
?>
</select>
 
	</td>
                        <td><input type="text" name="lname<?php echo $i; ?>" placeholder="XXXXX"  pattern="(([0-9]{5}))" required/></td>
						<td><input type="text" name="lref<?php echo $i; ?>" placeholder="Referencia" required/></td>
						<td><input type="text" name="lobs<?php echo $i; ?>" placeholder="Observaciones" /></td>
                    </tr>
<?php
 }
?>
                <tr>
                    <td colspan="9" align="center">
						<button type="submit" name="save_mul">Aceptar</button>
                        <a href="index.php" >Pagina Principal</a>
 
                    </td>
                </tr>
            </table>
        </form>
<?php
  }
?>
</div>

Mi idea inicial era en la primera página indicar el número de centros "$fname" , artículo y Referencias "$lname" y "$ref" y pasarlos ya en cada INPUT de la segunda, pero como ya tengo problemas con esto lo dejaré de momento.

Gracias por ayudar
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
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con ciclo FOR para insertar en MYSQL

Publicado por joel (1269 intervenciones) el 11/04/2021 08:48:09
Me refiero al código que se muestra en el navegador... en el navegador no se visualiza nada de PHP solo el HTML.... ahí veremos si se repiten nombre de campos.

Desde el navegador, haces botón derecho->ver código fuente
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