Cómo obtener ID al enviar a MySQL desde formulario PHP

  • Autor Autor kanikase
  • Fecha de inicio Fecha de inicio
kanikase

kanikase

Préstamo impago
1
Xi
Programador
Verificación en dos pasos activada
Suscripción a IA
Necesito ayuda, como hago para saber el id que de cuando se envia a mysql, esto es lo que tengo:

PHP:
<?php
						if (isset($_POST['enviar'])) {
							if ($_POST['nombre'] && $_POST['edad'] && $_POST['genero']) {
									mysqli_query($conexion, 'INSERT INTO contenido (nombre, edad, genero, carta)
									VALUES ("'.$_POST['nombre'].'", "'.$_POST['edad'].'", "'.$_POST['genero'].'", "'.$_POST['carta1'].'")');
							} else {
								echo 'Error, tienes que llenar todos los campos.';
							}
						}
					?>


HTML:
<form action="" method="post">
						<input class="texto" type="text" name="nombre" placeholder="Escribe tu nombre" />
						<input class="texto" type="number" name="edad" placeholder="Escribe tu edad" />
						<select name="genero">
							<option selected>Seleccionar</option>
							<option id="hombre">Hombre</option>
							<option id="mujer">Mujer</option>
						</select>
						<input type="text" name="carta1" placeholder="Carta" />
						<input class="boton" type="submit" name="enviar" value="Enviar" />
					</form>

Por si no me entendieron explico mejor.
Lo que quiero es que al hacer clic en "Enviar" se valla a la página donde ya tengo el código para obtener los datos de mysql, pero no puedo, que haga clic y en vez de salir la misma pagina valla a páginax.php?id= ?? 😕
 
[MENTION=81006]kanikase[/MENTION] proba con esto:

PHP:
<?php 
                        if (isset($_POST['enviar'])) { 
                            if ($_POST['nombre'] && $_POST['edad'] && $_POST['genero']) { 
                                    mysqli_query($conexion, 'INSERT INTO contenido (nombre, edad, genero, carta) 
                                    VALUES ("'.$_POST['nombre'].'", "'.$_POST['edad'].'", "'.$_POST['genero'].'", "'.$_POST['carta1'].'")'); 
                                    $idscons = mysqli_query($conexion,"SELECT COUNT(*) FROM contenido");
                                    $ids = $idscons->fetch_row();
                                    header('Location: pagina.php?id='.$ids[0]);
                            } else { 
                                echo 'Error, tienes que llenar todos los campos.'; 
                            } 
                        } 
                    ?>
 
Gracias a los dos por responder, lo que yo tenía al principio funcionaba :distant: pero e la página de destino tenía una redirección al index :fatigue:
 
PHP:
<?php

if ($_POST) {
	if (isset($_POST['enviar'])) {
		$nombre = empty($_POST['nombre']) ? NULL : mysqli_real_escape_string($conexion,$_POST['nombre']);
		$edad = empty($_POST['edad']) ? NULL : mysqli_real_escape_string($conexion,$_POST['edad']);
		$genero = empty($_POST['genero']) ? NULL : mysqli_real_escape_string($conexion,$_POST['genero']);
		$carta1 = empty($_POST['carta1']) ? NULL : mysqli_real_escape_string($conexion,$_POST['carta1']);

			if(isset($nombre) and !empty($nombre) and isset($edad) and !empty($edad) and isset($genero) and !empty($genero) and isset($carta1) and !empty($carta1)){

					$insert = mysqli_query($conexion,"INSERT INTO contenido (nombre, edad, genero, carta) VALUES ('$nombre','$edad','$genero','$carta1')");
					if (!$insert) {
						echo "Algo salio mal al guardar su registro,  intentelo nuevamente, si el error consiste reportelo a un administrador";
					}else{
						echo "Registro guardado, seras redirigido en un momento...";
						$lastid = mysqli_insert_id($conexion);
						header('Location: REGISTRADO.php?id='.$lastid);
					}

			}else{
				echo "Por favor completa todos los campos";
			}


	}
}

?>
 
Última edición:
PHP:
<?php

if ($_POST) {
	if (isset($_POST['enviar'])) {
		$nombre = empty($_POST['nombre']) ? NULL : mysqli_real_escape_string($conexion,$_POST['nombre']);
		$edad = empty($_POST['edad']) ? NULL : mysqli_real_escape_string($conexion,$_POST['edad']);
		$genero = empty($_POST['genero']) ? NULL : mysqli_real_escape_string($conexion,$_POST['genero']);
		$carta1 = empty($_POST['carta1']) ? NULL : mysqli_real_escape_string($conexion,$_POST['carta1']);

			if(isset($nombre) and !empty($nombre) and isset($edad) and !empty($edad) and isset($genero) and !empty($genero) and isset($carta1) and !empty($carta1)){

					$insert = mysqli_query($conexion,"INSERT INTO contenido (nombre, edad, genero, carta) VALUES ('$nombre','$edad','$genero','$carta1')");
					if (!$insert) {
						echo "Algo salio mal al guardar su registro,  intentelo nuevamente, si el error consiste reportelo a un administrador";
					}else{
						echo "Registro guardado, seras redirigido en un momento...";
						$lastid = mysqli_insert_id($conexion);
						header('Location: REGISTRADO.php?id='.$lastid);
					}

			}else{
				echo "Por favor completa todos los campos";
			}


	}
}

?>

Eso es lo que tenía, pero el destino teníauna redireccion al index y por eso crei qu no estaba funcionando :witless:
 
Eso es lo que tenía, pero el destino teníauna redireccion al index y por eso crei qu no estaba funcionando :witless:

Eso ademas evita xss por la funcion mysqli_real_escape_string... en la linea 33 encuentras
PHP:
header('Location: REGISTRADO.php?id='.$lastid);

cambias "REGISTRADO" por la pagina que quieras
 
Atrás
Arriba