insertar datos y mostrar select mysql con javascript
Publicado por Max (8 intervenciones) el 08/03/2021 23:55:39
Hola
Tengo 2 problemas y quisiera saber si ustedes me pudiesen dar alguna recomendacion u opinion para resolverlos. Les explico:
1.Tengo un formulario (php y mysql) que contiene inputs y una tabla dinámica (datatable) en donde el usuario va agregando filas según lo requiera. Estoy agregando las filas nuevas con javascript.
Mi primer problema es que necesito guardar todos los campos y la tabla con las filas agregadas como un solo registro para luego mostrar estos datos en otra pagina. Por lo que he investigado, podría hacerlo con JSON (encrypt y decrypt), me recomiendan usarlo o hay una solución mejor?.
2. En el formulario anterior, hay un <select> que lo estoy llenando con mysqli. En el primer registro si se muestra, ya que lo estoy haciendo directamente en el php file, pero como puedo hacer lo mismo cuando agrego otra fila por javascript. Yo se que php y javascript no pueden 'interactuar' directamente ya que son entornos totalmente distintos.
Aca dejo el codigo de como estoy creando cada fila
El extracto del código anterior es solo una idea de lo que quiero hacer, yo se que esta mal.
Quedo atento a cualquier respuesta
Saludos
Tengo 2 problemas y quisiera saber si ustedes me pudiesen dar alguna recomendacion u opinion para resolverlos. Les explico:
1.Tengo un formulario (php y mysql) que contiene inputs y una tabla dinámica (datatable) en donde el usuario va agregando filas según lo requiera. Estoy agregando las filas nuevas con javascript.
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
<form method="POST" name="form-work" action="guardar.php">
<div class="form-group">
<label>Fecha</label>
<input type="date"
oninvalid="this.setCustomValidity('Ingresar una fecha')"
oninput="this.setCustomValidity('')"
class="form-control"
id="fecha"
name="fecha"
min="2021-01-01"
max="2021-12-31"
required>
</div>
<div class="form-group">
<label>Nombre</label>
<input type="text"
oninvalid="this.setCustomValidity('Ingresar nombre')"
oninput="this.setCustomValidity('')"
class="form-control"
id="nombre"
name="nombre"
placeholder="Escribir el nombre"
required>
</div>
<div class="form-group">
<label>Direccion</label>
<input type="text"
oninvalid="this.setCustomValidity('Ingresar dirección')"
oninput="this.setCustomValidity('')"
class="form-control"
id="direccion"
name="direccion"
placeholder="Escribir la direccion"
required>
</div>
<table width="22%" cellpadding="200px" cellspacing="200px">
<td><input type="button" class="btn btn-success" value="Agregar fila" onclick="addRow('dataTable');checkNumRows();" /></td>
<td><input type="button" id="btnBorrar" class="btn btn-danger" value="Eliminar fila(s)" onclick="deleteRow('dataTable');" onmouseover="checkNumRows();" /></td>
<td><input type="button" value="Contar" onclick="cuentaTodo('dataTable');"></td>
</table>
<br>
<table id="dataTable" class="table table-responsive table-hover table-bordered text-center">
<tr>
<th>Seleccionar</th>
<th>Descripción</th>
<th>Cantidad</th>
<th>Precio Unit.</th>
<th>Precio</th>
</tr>
<tr>
<td><input type="checkbox" name="chk"/></td>
<td>
<select class="form-control" id="descripcion" name="descripcion">
<option selected>Seleccione:</option>
<?php require 'database_compra.php';
$querySel = "SELECT * FROM tabla_compra";
$resultSel = mysqli_query($conexion, $querySel);
while ($selStock = mysqli_fetch_array($resultSel)) {
echo '<option value="'.$selStock["producto"].'">'.$selStock["producto"].'</option>';
}?>
</select>
</td>
<td><input type="number" class="form-control" id="cantidad" name="cantidad" value="1" min="1"></td>
<td><input type="number" disabled="disabled" class="form-control" id="precio_unit" name="precio_unit" value=""></td>
<td><input type="number" disabled="disabled" class="form-control" id="precio_cant" name="precio_cant" value=""></td>
</tr>
</table>
<button type="submit" class="btn btn-primary">Guardar</button>
</form>
Mi primer problema es que necesito guardar todos los campos y la tabla con las filas agregadas como un solo registro para luego mostrar estos datos en otra pagina. Por lo que he investigado, podría hacerlo con JSON (encrypt y decrypt), me recomiendan usarlo o hay una solución mejor?.
2. En el formulario anterior, hay un <select> que lo estoy llenando con mysqli. En el primer registro si se muestra, ya que lo estoy haciendo directamente en el php file, pero como puedo hacer lo mismo cuando agrego otra fila por javascript. Yo se que php y javascript no pueden 'interactuar' directamente ya que son entornos totalmente distintos.
Aca dejo el codigo de como estoy creando cada fila
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
function addRow(dataTable) {
var table = document.getElementById("dataTable");
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.setAttribute("name", "chk");
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
var element2 = document.createElement("select");
var opt = document.createElement("option");
element2.setAttribute('id', 'descripcion');
element2.setAttribute('name', 'descripcion');
element2.setAttribute('class', 'form-control');
opt.appendChild(document.createTextNode('Seleccione:'));
element2.appendChild(opt);
var option = document.createElement("option");
option.setAttribute('value', '.$selStock["producto"].');
var t = document.createTextNode(".$selStock['producto'].");
option.appendChild(t);
document.getElementById("descripcion").appendChild(element2);
cell2.appendChild(element2);
var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.type = "number";
element3.setAttribute('class', 'form-control');
element3.setAttribute('id', 'cantidad');
element3.setAttribute('name', 'cantidad');
element3.setAttribute('value', '1');
cell3.appendChild(element3);
var cell4 = row.insertCell(3);
var element4 = document.createElement("input");
element4.type = "number";
element4.setAttribute('class', 'form-control');
element4.setAttribute('id', 'precio_unit');
element4.setAttribute('name', 'precio_unit');
element4.setAttribute('disabled', 'disabled');
cell4.appendChild(element4);
var cell5 = row.insertCell(4);
var element5 = document.createElement("input");
element5.type = "number";
element5.setAttribute('class', 'form-control');
element5.setAttribute('id', 'precio_cant');
element5.setAttribute('name', 'precio_cant');
element5.setAttribute('disabled', 'disabled');
cell5.appendChild(element5);
}
El extracto del código anterior es solo una idea de lo que quiero hacer, yo se que esta mal.
1
2
3
4
5
var option = document.createElement("option");
option.setAttribute('value', '.$selStock["producto"].');
var t = document.createTextNode(".$selStock['producto'].");
option.appendChild(t);
document.getElementById("descripcion").appendChild(element2);
Quedo atento a cualquier respuesta
Saludos
Valora esta pregunta


0