PHP - Asignación de variables

Filtrado por el usuario: Vainas
<<>>
Filtrado por el usuario 'Vainas' (Eliminar fitro)
 
Vista:
sin imagen de perfil
Val: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignación de variables

Publicado por German David (54 intervenciones) el 09/06/2021 15:01:47
Cordial saludo.
En mi sitio web tengo varios campos para registrar los códigos id de las llantas de un vehículo en el momento en que se montan estas. eso quiere decir que cuento con 4 campos.
Cuando el usuario ingresa los campos, (que pueden ir de 1 a 4), y da ejecutar, estos ID quedan asignados en 4 variables que definí así:
1
2
3
4
$IDM1=$_POST['IDM1'];
$IDM2=$_POST['IDM2'];
$IDM3=$_POST['IDM3'];
$IDM4=$_POST['IDM4'];
Luego deseo saber, cuantas campos registro el usuario, para lo cual realizo lo siguiente:
1
2
3
4
5
6
7
8
$iM=0;
for ($i=1; $i<=4; $i=$i+1) {
   $IDM='IDM'.$i;
   while ($$IDM!="") {
   $iM=$iM+1;
   break;
   }
}
Ahora en este punto, deseo insertar los datos que registro el usuario para lo cual hago lo siguiente:
1
2
3
4
5
6
7
8
9
10
for ($i=1; $i<=4; $i=$i+1) {
$IDM='IDM'.$i;
   while ($$IDM!="") {
   $sql_queryIDMN="INSERT INTO [dbo].[Llan]
   (id,usuario,FechaIngreso)  Values
   ('$$IDM','$Usu',GETDATE())";
   $stmlInserIDMN=sqlsrv_query($con,$sql_queryIDMN);
   break;
   }
}
Cuando hago una prueba, identifico que el contador de llantas registradas por el usuario esta bien y los ciclos FOR y WHILE funcionan Ok, pero encuentro el siguiente problema:
Supongamos que el usuario solo registra una llanta cuyo dato registrado es 1039, la cual queda asignada a la variable $IDM1.
Yo pensaba que al poner $$IDM en el INSERT, me iba a salir el dato 1039, pero me sale es $IDM1, ósea que lo que me sale es:
1
2
3
$sql_queryIDMN="INSERT INTO [dbo].[Llan]
(id,,usuario,FechaIngreso)  Values
('$IDM1','prueba',GETDATE())";
cuando realmente lo que necesitaba que saliera era:
1
2
3
$sql_queryIDMN="INSERT INTO [dbo].[Llan]
(id,,usuario,FechaIngreso)  Values
('1039','prueba',GETDATE())";
Agradezco me indiquen como puedo hacer para obtener lo que deseo
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
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Asignación de variables

Publicado por Jefferson (203 intervenciones) el 09/06/2021 21:13:33
Hola German no te lies tanto...

existen formas sencillas y con muy poco codigo para hacer eso.

index.html
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
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
 
<body>
    <form id="frm">
        IDM1: <input name="IDM[]" /><br>
        IDM2: <input name="IDM[]" /><br>
        IDM3: <input name="IDM[]" /><br>
        IDM4: <input name="IDM[]" /><br>
        <button id="envia">envia</button>
    </form>
</body>
<script>
    envia.addEventListener('click', (e) => {
        e.preventDefault();
        fetch('recibe.php', {
                method: 'POST',
                body: new FormData(frm)
            })
            .then(res => res.text()).then(ret =>
                console.log(ret)
            );
    });
</script>
 
</html>

y recibe.php
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 if (isset($_POST["IDM"])) {
  $Usu='yo';
  $array = $_POST["IDM"];
    foreach ($array as $name) {
        if($name!=''){
            $insert = "INSERT INTO llantas(id,usuario,FechaIngreso)
                VALUES('" . $name . "','" . $Usu . "','".date("Y-m-d H:i:s")."')";
                echo $insert.'<br>';
        }
    }
}

Suerte amigo
Desde Venezuela
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: 126
Ha aumentado su posición en 12 puestos en PHP (en relación al último mes)
Gráfica de PHP

Asignación de variables

Publicado por German David (54 intervenciones) el 10/06/2021 17:51:12
Cordial saludo, ya encontramos el error.
Cuando uno esta dentro de una cadena de texto (" texto ") y pone $$, el primer $ se toma literal y el segundo si hace mención a una variable.
Para corregir el tema, se debe incluir una variable temporal antes de la cadena de texto asi:
1
2
3
4
5
6
7
8
9
10
for ($i=1; $i<=4; $i=$i+1) {
   $IDM='IDM'.$i;
   while ($$IDM!="") {
   $IDMTemp = $$IDM;
   $sql_queryIDMN="INSERT INTO [dbo].[Llan]
   (id,usuario,FechaIngreso)  Values
   ('$IDMTemp','$Usu',GETDATE())";
   $stmlInserIDMN=sqlsrv_query($con,$sql_queryIDMN);
   break;
   }
}
Ya en la cadena de texto, ponemos la variable temporal y queda corregido el problema.
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