PHP - Bloquear BOTON guaradr

 
Vista:
sin imagen de perfil

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 22/02/2023 01:00:16
Hola a todo.... quisiera poder bloquear el botón "Guardar" de mi formulario si el checkbox esta en "Si" cuando carga la pagina:

Checkbox:

1
2
3
4
5
6
7
<div class="form-group">
	<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
		<div id="form1">
			<input type="checkbox" name="finalizado" value="Si" onchange="validacion('form1', this)" <?php if($row2['finalizado']=='Si') echo 'checked'; ?> /> Si
			<input type="checkbox" name="finalizado" value="No" onchange="validacion('form1', this)" <?php if($row2['finalizado']=='No') echo 'checked'; ?> /> No
		</div>
</div>

Boton Guardar:
1
2
3
4
5
6
<div class="form-group">
		<div class="col-sm-offset-2 col-sm-10">
			<a href="index.php" class="btn btn-default">Regresar</a>
			<button type="submit" id="guardar" class="btn btn-primary">Guardar</button>
		</div>
	</div>

La pagina tiene los checkbox Si y No... al comienzo estara vacio, pero al llenarse se seleccionara Si o No y se guardara.. luego si entran nuevamente y la opcion esta como Si quisiera que el boton "guardar" se bloquee, pero no se bien como hacerlo.

podria ser un checkbox o quizas un radio, pero el fin es el mismo, si esta al momento de entrar a la pagina la opcion esta en "Si", que el boton guardar este deshabilitado.


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

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 22/02/2023 14:34:26
Es mas fácil de lo que crees, pero la lógica no va por ahí, o al menos la mayoría no lo hacemos así.

Por lo general cuando quieres evitar que alguien guarde info en un form ya modificado antes, lo que haces es evaluar un flag, en tu caso ese check viene con el campo o dato de "finalizado", entonces desde el inicio, si la variable finalizado es "SI" o 1 o lo que quieras, simplemente, no dibujas el botón guardar, o lo pones deshabilitado o lo que quieras, igual para ese check que mencionas. Pero todo se basa en la información que tenga tu "variable finalizado".

Inténtalo, y si tienes mas dudas, nos colocas todo el código y te ayudamos. Ojo, no subas proyectos, solo pones los códigos HTML de la vista del form y los archivos PHP donde procesas la data.
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

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 25/02/2023 18:58:15
Hola @Kathyu, muchas gracias por responder, mira este es el codigo de la parte de editar.php que es donde el usuario edita la información y al final le pone Si esta finalizado o no, lo deje con el minimo de campos para que no sea muy largo:

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
<?php
	require 'conexion.php';
 
	$id_paciente = $_GET['id_paciente'];
 
 
	$sql = "SELECT * FROM pacientes WHERE pacientes.id_paciente = '$id_paciente'";
	$resultado = $mysqli->query($sql) or trigger_error($mysqli->error);
	$row = $resultado->fetch_array(MYSQLI_ASSOC);
 
	$sql2 = "SELECT *
	FROM gestiones
	WHERE id_paciente = '$id_paciente'";
		$resultado2 = $mysqli->query($sql2) or trigger_error($mysqli->error);
		$row2 = $resultado2->fetch_array(MYSQLI_ASSOC);
 
?>
<html lang="es">
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link href="css/bootstrap.min.css" rel="stylesheet">
		<link href="css/bootstrap-theme.css" rel="stylesheet">
		<script src="js/jquery-3.1.1.min.js"></script>
		<script src="js/bootstrap.min.js"></script>
</script>
	</head>
 
 
<div class="container">
<div class="row">
	<h3 style="text-align:left">PACIENTE</h3>
</div>
 
<form class="form-horizontal" method="POST" action="gestion_add.php" autocomplete="off">
 
<div class="form-group">
	<label for="nombres" class="col-sm-2 control-label">Nombre</label>
		<div class="col-sm-10">
            <input type="text" maxlength="100" disabled id="nombres" name="nombres" value="<?php echo $row['nombres']; ?>" />
		</div>
</div>
</form>
 
<form name="formul" class="form-horizontal" method="POST" action="gestion_add.php" autocomplete="off">
<!-- OCULTAR -->
<input type="hidden" name="id_paciente" value="<?php echo $row['id_paciente']; ?>" />
<!-- -->
<div class="row">
	<h3 style="text-align:center">GESTIONES</h3>
</div>
 
<div class="form-group">
    <label for="gestion" class="col-sm-2 control-label">Gestion</label>
        <div class="col-sm-10">
            <select class="form-control" id="gestion" name="gestion" required>
                <option value="" id="gestion" <?php if($row2['gestion']=='') echo 'selected'; ?> ></option>
                <option value="Coordinado"  id="gestion"  <?php if($row2['gestion']=='Coordinado') echo 'selected'; ?>>Coordinado</option>
				<option value="Anula"  id="gestion" <?php if($row2['gestion']=='Anula') echo 'selected'; ?>>Anula</option>
			</select>
		</div>
</div>
 
<div class="form-group">
	<label for="pers_salud" class="col-sm-2 control-label">Personal Salud</label>
		<div class="col-sm-10">
		<input type="text" maxlength="50" class="form-control" id="pers_salud" name="pers_salud" value="<?php echo $row2['pers_salud']; ?>" />
		</div>
</div>
 
<div class="form-group">
	<label for="fecha_agenda" class="col-sm-2 control-label">Fecha Agenda</label>
		<div class="col-sm-10">
            <input type="date" id="fecha_agenda" name="fecha_agenda" value="<?php echo $row2['fecha_agenda']; ?>" required/>
		</div>
</div>
 
<hr color="blue" size="10">
 
<div class="form-group">
	<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
		<div id="form1">
			<input type="checkbox" name="finalizado" value="Si" <?php if($row2['finalizado']=='Si') echo 'checked'; ?> /> Si
			<input type="checkbox" name="finalizado" value="No" <?php if($row2['finalizado']=='No') echo 'checked'; ?> /> No
		</div>
</div>
 
<hr color="blue" size="10">
	<div class="form-group">
		<div class="col-sm-offset-2 col-sm-10">
			<a href="index.php" class="btn btn-default">Regresar</a>
			<button type="submit" id="guardar" class="btn btn-primary">Guardar</button>
		</div>
	</div>
</form>
</div>
 
</body>
</html>


En esta pagina si el usuario le pone Finalizado "Si" y luego guarda y si vuelven a entrar el botón "Guardar" debería aparecer bloqueado, ya que la opción Finalizado es "Si", por lo cual no podrán volver a editarlo.

Mi área no es el de desarrollo, pero estoy ayudando en algunas cosas , es por eso que no me manejo demasiado.

De ante mano , muchas gracias.
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 26/02/2023 10:36:14
Ya, pero donde esta lo que has hecho?? Si estas ayudando es porque sabes algo no? y si estas ayudando significa que hay alguien mas que también puede guiarte.

Hacerte el trabajo/tarea no puedo, necesito ver tu disposición a ser ayudado. La lógica ya te la di en mi primer respuesta, quieres mi ayuda, déjame ver lo que haces primero.

Si gustas puedes leer mi post Como formular UNA BUENA PREGUNTA para obtener ayuda más rápido en LWP para que tu pregunta tenga una mayor oportunidad de ser respondida en la comunidad y recuerda Código en Texto y debidamente formateado.

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

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 27/02/2023 01:49:03
Estaba intentando esto:

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
<hr color="blue" size="10">
 
<div class="form-group">
	<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
		<div id="form1">
			<input type="checkbox" name="finalizado" id="finalizado_si" value="Si" onchange="validacion('form1', this)" <?php if($row2['finalizado']=='Si') echo 'checked'; ?> /> Si
			<input type="checkbox" name="finalizado" id="finalizado_no" value="No" onchange="validacion('form1', this)" <?php if($row2['finalizado']=='No') echo 'checked'; ?> /> No
		</div>
</div>
 
<hr color="blue" size="10">
	<div class="form-group">
		<div class="col-sm-offset-2 col-sm-10">
			<a href="index.php" class="btn btn-default">Regresar</a>
			<button type="submit" id="guardar" class="btn btn-primary">Guardar</button>
		</div>
	</div>
</form>
</div>
 
 
<script languaje="javascript">
if(finalizado_si.value == "Si") {
	document.getElementById("guardar").disabled = true;
}else{
	document.getElementById("guardar").disable = false;
}
</script>



Cuando el formulario viene con un Si en finalizado llega el botón bloqueado(lo cual esta bien), pero si llega con un "No" también llega bloqueado o si llega con esos 2 campos vacíos también llega bloquead, osea la pagina carga siempre con el botón bloqueado. ;<

Estoy ayudando porque la persona que hacia estas cosa ya no esta.
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: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Jefferson (203 intervenciones) el 27/02/2023 15:07:15
Hola, te recomiendo que busques a alguien capacitado para hacer eso (que es muy sencillo).

Pues imaginate se complique un poco mas la cosa??

haber, cuando declaras el php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
	require 'conexion.php';
 
	$id_paciente = $_GET['id_paciente'];
 
 
	$sql = "SELECT * FROM pacientes WHERE pacientes.id_paciente = '$id_paciente'";
	$resultado = $mysqli->query($sql) or trigger_error($mysqli->error);
	$row = $resultado->fetch_array(MYSQLI_ASSOC);
 
	$sql2 = "SELECT *
	FROM gestiones
	WHERE id_paciente = '$id_paciente'";
		$resultado2 = $mysqli->query($sql2) or trigger_error($mysqli->error);
		$row2 = $resultado2->fetch_array(MYSQLI_ASSOC);
 
   //Incluye estas lineas 
   $checked=$row2['finalizado']=='si'??'checked';
   $label=$checked=='checked'?'SI':'NO';
 
?>

y en el HTML

1
2
3
4
5
6
7
<div class="form-group">
	<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
		<div id="form1">
			<input type="checkbox" name="finalizado" id="finalizado" value="<?=$label?>"
                        onchange="validacion('form1', this)" <?=$checked?> /> <?=$label?>
		</div>
</div>

Suerte
Jefferson Jimenez
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 27/02/2023 16:30:01
Sebastián, desconozco si por ley debes usar JS, pero sino es así no entiendo porque no sigues la lógica que te di desde el inicio.

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
<?php
 
	$finalizado = 'Si'; // Tu variable o flag
 
	if ($finalizado == 'Si') { // Condicionas los ajustes entre Si y No
		$checked = [
			'value' => 'Si',
			'checked' => 'checked',
			'disabled' => 'disabled'
		];
	}
	else{
		$checked = [
			'value' => 'No',
			'checked' => '',
			'disabled' => ''
		];
	}
 
        // Esto es para probar lo que llega al archivo
	echo '<pre>';
		print_r($checked);
	echo '</pre>';
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Checked</title>
</head>
<body>
	<div class="form-group">
		<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
			<div id="">
				<input type="checkbox" name="finalizado" id="finalizado" value="<?php echo $checked['value']; ?>" <?php echo $checked['checked']; ?> <?php echo $checked['disabled']; ?> />
			</div>
			<div id="">
				<input type="submit" value="GUARDAR" <?php echo $checked['disabled']; ?> />
			</div>
			<br><br>
			<div id="">
				<?php
					if ($finalizado != 'Si') {
				?>
						<input type="submit" value="GUARDAR NO DIBUJADO" />
				<?php
					}
				?>
			</div>
	</div>
</body>
</html>

Prueba cambiando $finalizado entre Si y No y veras que puedo deshabilitar los elementos o incluso no "pintarlos" en el formulario. Y si te fijas solo se debe usar un único input check, no dos como tu lo planteas al inicio. Y si quieres poner un label de que ya ha sido finalizado como lo hace Jefferson en su respuesta anterior puedes reutilizar el Value (eso es optimizar código) o agregas al array un valor de que se yo, label, por ejemplo.

Copia mi ejemplo simple y pruébalo, entiéndelo y luego haces los cambios a tu código, no intentes implementarlo antes de entenderlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 27/02/2023 18:34:26
Ahí resulto... le pase la variable:

$finalizado = $row2['finalizado'];


y abajo modifique un poco los 2 input y quedo ok!

gracias!
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 27/02/2023 18:48:09
Si pero como ??? con que respuesta lo resolvió???

PD: considere Valorar las respuestas recibidas...
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

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 27/02/2023 18:52:14
en la bd tengo el registro con "finalizado = Si"

si ingreso a ese usuario en el sistema teniendo el codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$finalizado = $row2['finalizado']; // Tu variable o flag
if ($finalizado == 'Si') { // Condicionas los ajustes entre Si y No
	$checked = [
		'value' => 'Si',
		'checked' => 'checked',
		'disabled' => 'disabled'
	];
}
else{
	$checked = [
		'value' => 'No',
		'checked' => '',
		'disabled' => ''
	];
}


y los input:
1
2
3
4
5
6
7
<div class="form-group">
	<label for="finalizado" class="col-sm-2 control-label">Finalizado?</label>
		<div id="form1">
			<input type="checkbox" name="finalizado" id="finalizado" onchange="validacion('form1', this)"  <?php if($row2['finalizado']=='Si') echo 'checked'; ?> value="Si" <?php echo $checked['checked']; ?> <?php echo $checked['disabled']; ?> /> Si
			<input type="checkbox" name="finalizado" id="finalizado" onchange="validacion('form1', this)"  <?php if($row2['finalizado']=='No') echo 'checked'; ?> value="No" <?php echo $checked['checked']; ?> <?php echo $checked['disabled']; ?> /> No
		</div>
</div>

El botón aparece desactivado:
1
2
3
4
5
6
<div class="form-group">
		<div class="col-sm-offset-2 col-sm-10">
			<a href="index.php" class="btn btn-default">Regresar</a>
			<button type="submit" id="guardar" class="btn btn-primary" <?php echo $checked['disabled']; ?>>Guardar</button>
		</div>
	</div>

y me devuelve la siguiente respuesta:
1
2
3
4
5
6
Array
(
    [value] => Si
    [checked] => checked
    [disabled] => disabled
)

y si le cambio el valor al campo finalizado a "No" en la BD el botón guardar aparece activado.



PD: Sorry, ahi valore la respuesta.
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 27/02/2023 19:22:37
Bien, pero porque sigue usando dos checkbox?? Yo solo usé uno...

Además sigo viendo Javascript en esos checkbox, yo no usé JS para nada.
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

Bloquear BOTON guaradr

Publicado por Sebastian (11 intervenciones) el 27/02/2023 19:33:16
uhmm use 2 para poner el Si y el No por separado :S

Finalizado?: Si - No

Ese java lo tenia para que solo se pueda tildar uno solo (Si o No) y no ambos al mismo tiempo.
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 Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear BOTON guaradr

Publicado por Kathyu (905 intervenciones) el 27/02/2023 19:39:23
No hizo lo que le dije en la respuesta, no entendió a totalidad el código :-S

Copia mi ejemplo simple y pruébalo, entiéndelo y luego haces los cambios a tu código, no intentes implementarlo antes de entenderlo.

Justo le dije que solo era de usar uno, porque con un check resuelve todo y hasta le dije como podía usar el mismo value para poner un label que dijera Si o No después del checkbox. Entre menos código use para resolver algo, mejor.

Cito: Ese java lo tenia para que solo se pueda tildar uno solo (Si o No) y no ambos al mismo tiempo.

Pero es que no es así la lógica, el check, si implementa mi código, funcionaria como un input del tipo radio. Osea si esta "checkeado" es porque ya no se puede modificar porque está FINALIZADO.
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