PHP - Un boton para diferentes funciones

 
Vista:
sin imagen de perfil

Un boton para diferentes funciones

Publicado por jose miguel (25 intervenciones) el 13/04/2015 15:52:03
buenas a todos, no se si se puede acer lo siguiente tengo un botón Guardar en mi formulario, este botón quiero que se utlice tanto para la función adicionar y modificar registros o es necesariamente crear un botón Guardar para nuevo registro y otro botón para Guardar modificaciones, espero su respuesta agradecidamente
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

Un boton para diferentes funciones

Publicado por Martha (48 intervenciones) el 13/04/2015 16:17:20
Entiendo que lo que quieres es guardar un registro cuando es nuevo, y poder editarlo cuando ya existe.

Tu registro tendrá un indice, imagino, por lo que si intentas subir a la BD un registro duplicado te devolverá un error y no lo insertará.

Por tanto, lo mejor que puedes hacer es crear una función (en Ajax, Jquery) o un ejecutable en php que haga una consulta a la Base de Datos preguntando si existe un registro que tenga ese índice (igual que lo haces para saber si el login y el password de un usuario existen), si la respuesta es TRUE, a través de un IF ejecutas una consulta de edición. Si la DB no tiene ninún registro con ese índice, que lo añada (después del ELSE)
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

Un boton para diferentes funciones

Publicado por jose miguel (25 intervenciones) el 13/04/2015 16:47:43
te agradezco por la respuesta, lo voy a intentar y te comento el resultado
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

Un boton para diferentes funciones

Publicado por jose miguel (25 intervenciones) el 13/04/2015 17:33:54
tengo un problema y me surgio una duda al momento de realizar la consulta de busqueda, me servira para identificar si el id de mi registro existe si es asi llamo a la funcion modificar y como lo aria para adicionar, porque al momento de registrar uno nuevo el id es autoincremental en mi tabla, espero dejarme entender, 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 Alberto
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Un boton para diferentes funciones

Publicado por Alberto (351 intervenciones) el 13/04/2015 18:49:32
Hola...

Afortunadamente puedes usar el mismo botón para guardar y actualizar ya que MySQL nos proporciona una propiedad muy útil para este tipo de casos, cabe mencionar que no estoy seguro si existe su equivalente en otras bases de datos pero por lo menos para MySQL funciona a la perfección.

ON DUPLICATE KEY UPDATE, es una propiedad el cual inserta un registro nuevo cuando no existe, cuando ese registro existe en la base de datos entonces hace un UPDATE a ese registro a través del id del registro, ya que encuentra una llave duplicada y reescribe ese registro, eh ahí la razón del nombre. Te invito a consultar la documentación para saber mas acerca de esta propiedad.

A continuación, te proporciono un ejemplo sencillo pero completamente funcional...

form.php
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
<html>
	<head>
		<title>Guardar Usuarios</title>
	</head>
	<body style="font: 12pt normal 'Arial';">
		<form action="controlador.php" method="post">
			<table>
				<tr>
					<td><b>Id:</b></td>
					<td><input type="text" name="id"></td>
				</tr>
				<tr>
					<td><b>Nombre:</b></td>
					<td><input type="text" name="nombre"/></td>
				</tr>
				<tr>
					<td><b>Apellidos:</b></td>
					<td><input type="text" name="apellidos"></td>
				</tr>
				<tr>
					<td><b>Edad:</b></td>
					<td><input type="text" name="edad"/></td>
				</tr>
				<tr>
					<td></td>
					<td><input type="submit" value="Guardar"></td>
				</tr>
			</table>
		</form>
	</body>
</html>

controller.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
	//Recuperamos los datos del formulario.
	$id=$_POST['id'];
	$nombre=$_POST['nombre'];
	$apellidos=$_POST['apellidos'];
	$edad=$_POST['edad'];
 
	//Realizamos la conexion a la base de datos.
	$conexion = mysqli_connect("localhost","root","","practicas");
 
	//Comenzamos la transaccion.
	$sql = "INSERT INTO usuario VALUES('".$id."','".$nombre."','".$apellidos."','".$edad."') ON DUPLICATE KEY UPDATE nombre='".$nombre."',apellidos='".$apellidos."',edad='".$edad."'";
	mysqli_query($conexion,$sql);
	if(mysqli_affected_rows($conexion) > 0){
		echo "REGISTRO GUARDADO CORRECTAMENTE";
	} else {
		echo mysqli_error($conexion);
	}
?>

Como podrás ver, realizamos un INSERT normal, sin embargo, lo importante de todo esto esta en la nueva propiedad la cual tiene la sintaxis de un UPDATE común, solo es cuestión de indicarle que campos tiene que actualizar. Es importante mencionarte que no actualices la llave primaria por dos razones; la primera se debe a que es mala práctica, y la segunda y mas importante que la primera es que puede tronar tu aplicación el reescribirla.

Con respecto a tu llave incremental, debes buscar la forma de cargar previamente el ID correspondiente al registro a editar.

Por el momento, si ejecutas el código que te pase pero cambiando la cadena de conexión así como la consulta a la base de datos, todo funcionara perfectamente.

Cualquier duda y/o inconveniente, aquí estamos. Suerte!

P.D.1. No utilizo el tradicional código de conexión a MySQL; es decir, mysql_connect(), debido a que esta siendo obsoleto para futuras versiones de PHP por lo que no permitirán implementar dicho código.
P.D.2. mysqli_connect(), recibe cuatro parámetros en el siguiente orden: Servidor,Usuario,Password,BD.
P.D.3. No puedes combinar las diferentes formas para interactuar con la base de datos; es decir, si trabajas con mysqli_ desde un principio entonces tendrás que seguir con esa forma, no puedes tener una parte en mysqli_ y otra en mysql_ tradicional o el mismo PHP te mostrara un error.
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

Un boton para diferentes funciones

Publicado por jose miguel (25 intervenciones) el 13/04/2015 21:49:59
me funciono, gracias por tu 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
sin imagen de perfil

Un boton para diferentes funciones

Publicado por Sebastian (11 intervenciones) el 10/02/2023 18:02:40
Excelente aporte la linea:

$sql = "INSERT INTO usuario VALUES('".$id."','".$nombre."','".$apellidos."','".$edad."') ON DUPLICATE KEY UPDATE nombre='".$nombre."',apellidos='".$apellidos."',edad='".$edad."'";
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