PHP - Update con PHP

 
Vista:
sin imagen de perfil

Update con PHP

Publicado por Angel (6 intervenciones) el 02/04/2017 03:45:48
Buenas soy nuevo en el foro y en la programación y quisiera saber si alguien me puede dar una mano con un inconveniente que estoy teniendo.

tengo una db en la que almaceno información, cuando genero un registro dos campos quedan vacios, ( esto es apropósito ) tengo el siguiente código para actualizar estos campos vacios y rellenarlos con la info requerida, el código es el siguiente.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
    include("conexion.php");
 
 
    $idForm = $_POST['idForm'];
    $FHoraSa = $_POST['FHoraSa'];
    $LegajoSa = $_POST['LegajoSa'];
    {
        mysqli_query ($con, "UPDATE db2 SET FHoraSa = ('$FHoraSa'), LegajoSa = ('$LegajoSa')  WHERE idForm = ('$idForm')");
 
 
 
    mysqli_close($con);
 
    echo "<script> alert('Hora Modificada Correctamente');</script>";
 
    }
    {
    header('Location: db2_registros.php');
    }
?>

Explico: los datos que cargo son quien modifica (LegajoSa) y el Horario de Salida (FHoraSa)

Hasta aquí perfecto funciona todo Ok

lo que yo estoy queriendo hacer es que cuando estos datos estén escritos en la tabla no se puedan volver a actualizar quedando solo los datos originales.

Agradecería de ser posible me orienten.

Saludos.
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update con PHP

Publicado por kip (877 intervenciones) el 02/04/2017 05:14:30
Hola, creo que con comprobar que sean nulos los valores de los campos basta usando la funcion ISNULL() :

1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND ( ISNULL(FHoraSa) AND ISNULL(LegajoSa) );

De esa forma solo se actualizara si los campos son NULOS.

Ahora bien para verificar que se actualizo el registro o registros puedes usar mysqli_affected_rows para obtener el resultado de las filas afectadas.

http://php.net/manual/es/mysqli.affected-rows.php

Prueba y nos cuentas.
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

Update con PHP

Publicado por Angel (6 intervenciones) el 02/04/2017 06:03:37
hola kip probé lo que me dijiste y no actualiza pero a su vez tampoco carga los datos cuando los campos están vacíos, te comento bien como esta la estructura.

en una consulta yo genero un reporte con los datos cargados en la tabla como te lo muestro a continuación

Tabla

cuando hago el UPDATE utilizo el botón Salida este llama a una pagina que contiene el código que mostré al comienzo y carga los datos, en ese momento al poner los valores que me indicaste, directamente no genera ningún cambio, también varié en la tabla de poner los campos en NULL /Si y No y tampoco genero variació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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update con PHP

Publicado por kip (877 intervenciones) el 02/04/2017 06:20:54
Que raro que no te funcione, debes recordar que ambos campos deben estar vacíos para que haga el UPDATE.

En la imagen veo que una fecha tiene 000-00-00... Este valor, podrías decirme si así esta en la base o se muestra así porque desde tu código PHP lo haces ? Te pregunto esto ya que si este valor es uno por defecto que tiene aquel campo entonces no te funcionara el código de arriba, deberías cambiarlo y eliminar él ISNULL(FHoraSa) quedando así:

1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND ISNULL(LegajoSa);

De esa forma se verifica que el campo de la persona que actualizo la hora de salida este vacia, esto en él caso de que él campo fhorasa tenga un valor por defecto.
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

Update con PHP

Publicado por Angel (6 intervenciones) el 02/04/2017 07:50:46
te comento que el valor 000-00-00 00.00.00 lo genera automáticamente cuando cargo el formulario obviamente que en el formulario no existe ningún campo para (FHoraSa), probé dejando solo el ISNULL(LegajoSa) pero tampoco genera cambios te dejo dos imágenes de la Tabla para que veas como esta y si es que ves algo que de seguro se me esta escapando a mi.

Así es cuando genero la carga del formulario ya directamente en la fecha y hora me lo deja con 0 y el campo LegajoSa vacío.
tabla2

y así es como están los valores de la tabla
tabla3
Vale aclarar que en el LegajoSa esta Nulo Si / Predeterminado NULL lo cambie a Nulo No / Predeterminado Ninguna y sigue sin funcionar.
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update con PHP

Publicado por kip (877 intervenciones) el 02/04/2017 08:03:52
Ahora intrnta no usando la función sino la expresión IS NULL, quedaría así :

1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND LegajoSa IS NULL ;

Por cierto deja el valor por defecto NULL en LegajoSa de otra forma no funcionará la comprobació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
Imágen de perfil de orlando
Val: 103
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update con PHP

Publicado por orlando (73 intervenciones) el 02/04/2017 11:38:08
Hola Angel.

Envía el HTML para visualizar y darte una mano.

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

Update con PHP

Publicado por Angel (6 intervenciones) el 02/04/2017 17:05:36
Hola Orlando, te comento las capturas de las paginas y el código de UPDATE son lo que ya subí en los post anteriores, disculpa mi torpeza pero que HTML necesitarías?

lo que olvide de postear es el código de Submit que tiene el botón salida pero igual dejare todo el proceso desde el comienzo el formulario de ingreso de datos hasta el código de UPDATE

Formulario de Ingreso
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
<table width="1010" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="188">Fecha y Hora de Ingreso :</td>
    <td width="822"><input name="FHoraIn" type="text" id="FHoraIn" value="<?php echo $hoy = date("Y-m-d H:i:s"); ?>" size="25" readonly="readonly" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Nombre :</td>
    <td><input name="Nombre" type="text" id="Nombre" placeholder="Nombre de quien Ingresa" size="25" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Apellido :</td>
    <td><input name="Apellido" type="text" id="Apellido" placeholder="Apellido de quien Ingresa" size="25" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>D.N.I. :</td>
    <td><input name="DNI" type="text" id="DNI" placeholder="DNI de quien Ingresa" size="25" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Empresa / Sector :</td>
    <td><textarea name="EmpSec" cols="100" rows="1" id="EmpSec" placeholder="Nombre de la empresa o el sector donde presta servicios"></textarea></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Motivo / Tarea :</td>
    <td><textarea name="MotTar" cols="100" rows="2" id="MotTar" placeholder="Ingresar la tarea a realizar o el motivo"></textarea></td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>
  <input type="submit" value="Ingresar Datos"/>



Boton Submit para el UPDATE

1
2
3
4
5
6
7
8
9
10
11
12
13
</form></td>
 
    <td><form action="db2_procesar_sa.php" method="post" name="horaSalida">
 
      <input name="idForm" type="hidden" value="<?php echo $fila["idForm"];?>" />
 
      <input name="FHoraSa" type="hidden" value="<?php echo $hoy = date("Y-m-d H:i:s"); ?>" />
 
      <input name="LegajoSa" type="hidden" id="LegajoSa" value="<?php echo $_SESSION['Legajo'];?>" size="20" readonly="readonly" />
 
      <input type="submit" value="Salida" alt="cambio" title="HoraSalida"/>
 
    </form>



Codigo del UPDATE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
    include("conexion.php");
 
 
    $idForm = $_POST['idForm'];
    $FHoraSa = $_POST['FHoraSa'];
    $LegajoSa = $_POST['LegajoSa'];
    {
        mysqli_query ($con, "UPDATE db2 SET FHoraSa = ('$FHoraSa'), LegajoSa = ('$LegajoSa')  WHERE idForm = ('$idForm')");
 
 
 
    mysqli_close($con);
 
    echo "<script> alert('Hora Modificada Correctamente');</script>";
 
    }
    {
    header('Location: db2_registros.php');
    }
?>

esto seria todo
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

Update con PHP

Publicado por Angel (6 intervenciones) el 02/04/2017 23:14:47
Hola Kip disculpa que no te respondí antes es que no estoy en mi pc, te comento que al igual que con los códigos anteriores no me deja actualizar pero tampoco puedo asegurarte mas datos hasta mañana que vuelva a casa y pruebe bien ya que solo cambie el código y probé sin poder revisar bien por falta de tiempo, mañana revisare bien todo y comento espero sea algún detalle que no vi.

Saludos y mil gracias por la preocupació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
sin imagen de perfil

Update con PHP

Publicado por Angel (6 intervenciones) el 03/04/2017 16:57:12
Hola Kip bueno ahora si pude probar bien y te comento lo que vi ( lo mas probable es este equivocado ) pero note lo siguiente.

Usando la sentencia como me dijiste no modifica nada es igual que si le dejo los dos campos, osea dejo ejemplos y los explico como funcionaron

Ejemplo 1
1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND ( ISNULL(FHoraSa) AND ISNULL(LegajoSa) );


Ejemplo 2
1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND LegajoSa IS NULL ;

en los dos casos lo que veo es que no permite escritura en los campos sea indicando un o los dos el resultado es el mismo ahora empese a variar el código y "descubrí" lo siguiente.


1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  AND ISNULL(LegajoSa)  WHERE idForm = '$idForm');
de esta manera lo que hace es no cargar los datos del Legajo y si los de la Fecha y Hora por consiguiente calculo que el comando lo que hace es decir que dato no se carga. como ya dije puedo estar equivocado pero eso es lo que sucedió.
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 kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Update con PHP

Publicado por kip (877 intervenciones) el 05/04/2017 14:50:20
Angel no puedes colocar una sentencia de comparacion de esa forma, refiriendome a esta linea:

1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  AND ISNULL(LegajoSa)  WHERE idForm = '$idForm');

No se trata de mover y probar, tal como esta la sentencia esta bien ya que en esta parte le estamos diciendo:

1
WHERE idForm = '$idForm' AND LegajoSa IS NULL
DONDE EL idForm SEA ESTE $idForm Y EL REGISTRO DEL CAMPO LegajoSa SEA NULO

Mira estas pruebasen una tabla que cree llamada test2:

1
SELECT * FROM test2

Screenshot_27

Ahora hare un UPDATE en cuyos registros el campo LEGAJO sea NULO y el ID sea 2

1
UPDATE test2 SET dato = 'NUEVO DATO 2', legajo = 'LEGAJO NO ES NULO' WHERE id = 2 AND legajo IS NULL

Ahora vuelo a realizar una consulta para ver los datos de la tabla

Screenshot_28

Han cambiado los campos!!!

Ahora bien, ejecuto de nuevo el UPDATE

Screenshot_29

El mensaje me dice que NINGUNA FILA FUE AFECTADA!

La query deberia funcionarte, recuerda dejar como valor por default NULL en LegajoSa.

Ahora bien si estas seguro de que sigue sin funcionar creo que el problema esta en que en alguna query anterior ingresas una cadena vacia al campo LegajoSa entonces este esta vacio pero no es NULO!

Prueba entonces asi:

1
UPDATE db2 SET FHoraSa = '$FHoraSa', LegajoSa = '$LegajoSa'  WHERE idForm = '$idForm' AND (LegajoSa IS NULL OR LegajoSa = '');

Si te fijas he agregado el OR LegajoSa = ''

Nos avisas si de esa manera funciona
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