PHP - Tabla html actualizando SQL Server

 
Vista:
sin imagen de perfil
Val: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por Alejandro (73 intervenciones) el 14/05/2020 19:23:44
Tengo la siguiente tabla, quiero editar los registros Orden de mi SQL (ligándolo a el campo NOrden) desde la tabla de forma rápida. Aparentemente me modifica el dato de la tabla pero al refrescar se ve que no ha registrado los cambios en la base de datos, si no que los borra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table id="skuTable" role="grid">
    <thead>
        <th class="skuRow">Orden</th>
        <th>Fecha Fab.</th>
        <th class="skuRow">Norden</th>
        <th>Color</th>
        <th>Cliente</th>
        <th>Metros</th>
        <th>Tiempo</th>
        <th>Fecha Ent.</th>
        <th>Operario</th>
        <th class="skuRow">Editar</th>
    </thead>
    <tbody>
Obtenemos los datos la máquina 41

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql = "SELECT DISTINCT  Orden, FFab, N_Orden=Ordenes.OF_N_Orden, Color, Client, Metros, Tiempo, FEnt,Operario
        FROM ((
                Ordenes INNER JOIN VCLIENTE ON VCLIENTE.Clie_codigo = Ordenes.OF_Cod_Cli
            ) INNER JOIN ARTITTEC ON ARTITTEC.Tec_codigo = Ordenes.OF_Cod_Art
        )
        INNER JOIN VTiempos ON  VTiempos.Of_n_orden= Ordenes.OF_N_Orden
            AND Vtiempos.OF_LIN =Ordenes.OF_Lin
        ORDER BY Orden asc, Fecha asc";
 
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
 
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)){
?>
Escribimos los datos en las columnas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<td class="orden" id="orden-<?= intval($row['Orden']) ?>"><?php echo $row['Orden'] ?></td>
        <td role="gridcell"><?php echo $row['FFab']; ?></td>
        <td class="norden" align="center" id="norden-<?= intval($row['N_Orden']) ?>"><?php echo $row['N_Orden']; ?></td>
        <td role="gridcell"><?php echo $row['Color']; ?></td>
        <td role="gridcell"><?php echo $row['Client']; ?></td>
        <td role="gridcell"><?php echo $row['Metros']; ?></td>
        <td role="gridcell"><?php echo $row['Tiempo']; ?></td>
        <td role="gridcell"><?php echo $row['FEnt']; ?></td>
        <td role="gridcell"><?php echo $row['Operario']; ?></td>
        <td><input type="button" class="edit" name="edit" value="Edit"></td>
 
        </tr></b></font>
        <?php { ?>
    </tbody>
</table>
 
<div class="k-pager-wrap k-grid-pager k-widget k-floatwrap" data-role="pager">
    <span class="k-pager-info k-label"></span>
</div>
JavaScript para la función Editar:

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
$(document).on("click", "#skuTable .edit", function () {
    var $this = $(this);
    var tds   = $this.closest('tr').find('td').filter(function () {
        return $(this).find('.edit').length === 0;
    });
    if ($this.val() === 'Edit') {
        $this.val('Save');
        if ($this.id !== '.orden') {
            tds.prop('contenteditable', true);
        }
    }
    else {
        var isValid = true;
        var errors  = '';
        $('#myDialogBox').empty();
        var elements = tds;
        if (tds.find('input').length > 0) {
            elements = tds.find('input');
        }
        var dict = {};
        elements.each(function (index, element) {
            var type  = $(this).attr('class');
            var value = (element.tagName == 'INPUT') ? $(this).val() : $(this).text();
            console.log(type);
            // ----- Switch statement that provides validation for each table cell -----
            switch (type) {
                case "norden":
                    dict["N_Orden"] = value;
                    break;
                case "orden":
                    dict["Orden"] = value;
                    break;
            }
        })
        if (isValid) {
            console.log(dict);
            $this.val('Edit');
            tds.prop('contenteditable', false);
            var request = $.ajax({
                type: "POST", url: "update.php", data: dict
            });
 
            request.done(function (response, textStatus, jqXHR) {
                if (JSON.parse(response) == true) {
                    console.log("row updated");
                }
                else {
                    console.log("row failed to updated");
                    console.log(response);
                    console.log(textStatus);
                    console.log(jqXHR);
                }
            });
 
            // Callback handler that will be called on failure
            request.fail(function (jqXHR, textStatus, errorThrown) {
                // Log the error to the console
                console.log(textStatus);
                console.log(jqXHR);
                console.error("The following error occurred: " + textStatus, errorThrown);
            });
 
            // Callback handler that will be called regardless
            // if the request failed or succeeded
            request.always(function () {
 
            });
        }
        else {
            alert(errors);
        }
    }
});
Script Update.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$Orden  = $_POST['Orden'];
$NOrden = $_POST['NOrden'];
$host   = "xxxxxxxxxx";
$dbName = "xxxxx";
$dbUser = "xxxxxxxxxxxxxx";
$dbPass = "xxxxxxxxxxxx";
$pdo    = new PDO("sqlsrv:server=" . $host . ";Database=" . $dbName, $dbUser, $dbPass);
$sql    = "UPDATE Ordenes SET OF_OrdenOFs = '$Orden' WHERE OF_N_Orden = '$NOrden'";
$stmt   = $pdo->prepare($sql);
//$stmt->bindValue('[:SKU Group]', $SKU);
//$stmt->bindValue(':Group_ID', $Group_ID)
$result = $stmt->execute();
echo json_encode($result);
if (!$result) {
    echo json_encode(sqlsrv_errors());
}
?>
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 14/05/2020 19:32:57
hola, de nuevo.

en script update

1
2
3
<?php
$Orden  = $_POST['Orden'];
$NOrden = $_POST['NOrden'];

llegan bien las variables???

saludos
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 11:14:23
Hola,

pues ese es el problema, ¿como envias las variables a script update?
por javaScrit, ¿no?

tendras que recogerlas con JavaScript y pasarselas a PHP

No se por que quieres pasar las variable con JS, yo usaria solo PHP

saludos
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: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por Alejandro (73 intervenciones) el 15/05/2020 11:16:23
Se supone que tendría que enviarlos gracias a la función script. Pero no soy capaz de ver donde tengo el fallo.
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 11:18:04
pero es que las tendras que recoger mediante otro script de JS y pasarselas a PHP

yo usaría solo PHP, no se el por que de pasar las variables como tu lo haces

saludos
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: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por Alejandro (73 intervenciones) el 15/05/2020 11:22:34
Ya lo he intentado hacer solo con php, con el form y enviando los datos por Post. Pero es muy lento. He querido usar esa función para cuando pulso el botón edit, el campo a editar se trasforma en input y al darle al guardar actualiza. De está forma, puedo editar varias $rows a la vez.
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 11:27:59
si, si, las aplicacions cada uno a su gusto

pero que PHP hace lento ese proceso? me extraña mucho

y mas si trabajas en local.

Pero es que de todas mareras tu creas eventos JS para hecer el UPDATE y al final es PHP quien lo hace,
que lo quieras hacer con JS para no refrescar la pagina al actualizar, me parece perfecto, pero es que siguye siendo PHP el que hace el update

Usar JS no da mas velocidad al script, lo que hace en este caso es pasar variables sin refrescar, pero no acelera nada.

saludos
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 11:23:37
por lo que veo

1
<td><input type="button" class="edit" name="edit" value="Edit"></td>

le das la clase="edit"

pero luego lo llamas por id

1
$(document).on("click", "#skuTable .edit", function () {

no se mucho de JS pero creo que deberias cambiar

1
$(document).on("click", "#skuTable #edit", function () {

saludos
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: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por Alejandro (73 intervenciones) el 15/05/2020 12:41:12
¿Cómo lo harías solamente con php?
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 12:43:58
pues

enviar las variables a la pagina del unpate por formulario y las recoges con POST

o en un enlace y las recuperas por GET


como form

engloba todo este codigo entre las etiquetas del form y en el action pones la pagina del update

1
2
3
4
5
6
7
8
9
10
<td class="orden" id="orden-<?= intval($row['Orden']) ?>"><?php echo $row['Orden'] ?></td>
<td role="gridcell"><?php echo $row['FFab']; ?></td>
<td class="norden" align="center" id="norden-<?= intval($row['N_Orden']) ?>"><?php echo $row['N_Orden']; ?></td>
<td role="gridcell"><?php echo $row['Color']; ?></td>
<td role="gridcell"><?php echo $row['Client']; ?></td>
<td role="gridcell"><?php echo $row['Metros']; ?></td>
<td role="gridcell"><?php echo $row['Tiempo']; ?></td>
<td role="gridcell"><?php echo $row['FEnt']; ?></td>
<td role="gridcell"><?php echo $row['Operario']; ?></td>
<td><input type="button" class="edit" name="edit" value="Edit"></td>

saludos
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: 133
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por Alejandro (73 intervenciones) el 15/05/2020 12:56:51
Pero la cosa es que ninguno de los td es input. A mi me gustaría que al darle a editar salga el input y al darle a guardar se actualicen los datos sin ningun tipo de refresco de página.
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Tabla html actualizando SQL Server

Publicado por javier (547 intervenciones) el 15/05/2020 14:25:18
entonces es JavaScript

pregunta en ese foro

saludos
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