Tengo una forma larga. Por una parte el usuario tiene que elegir entre diferentes opciones antes de introducir alguna información y luego crear la cuenta.
Intenté hacer algo como
<form> <input type="button" value="0" name="button"> <input type="button" value="1" name="button"> <input type="button" value="2" name="button"> </form> <button>Create account</button> <?php if(!empty['button']){ $btn_val = $_POST['button']; $sql = "INSERT INTO table btn_value VALUES :value"; $stmt = $conn->prepare($sql) $stmt->bindParam(':value', $btn_val); $stmt->execute(); } ?>pero cuando intento enviarlo, PHP no recupera esos valores. He probado esta solución con Javascript pero no funciona. Algunas otras respuestas que funcionan es usar una radio pero eso afectará la interfaz ya que necesito mostrar un botón.
La única forma de enviar información a una base de datos sin enviar realmente el archivo es con javascript asíncrono.
para obtener la información con el clic de un botón, debe crear un evento onclick en el botón que activará una función para obtener la información que desea enviar. Después de eso, abrirá una conexión a php para enviar la información a la base de datos.
Dado que PHP solo funciona cuando se carga la página, debe enviar la información a un script PHP diferente para enviar los datos a la base de datos.
Mira en XMLHttpRequest
Eventualmente, obtendrás algo como:
xml = new XMLHttpRequest();crear objeto AJAX
xml.open("POST",'yourphpscript.php',true)configure la conexión al script php con el método de publicación y el valor booleano para asíncrono
xml.send();Enviar petición.
para más información: https://www.w3schools.com/js/js_ajax_intro.asp
Puede usar Jquery para obtener el valor del botón en el que se hizo clic y enviarlo en un campo de entrada oculto al servidor.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <form method="POST"> <input type="button" id="mybutton1" name="mybutton1" value="0"> <input type="button" id="mybutton2" name="mybutton2" value="1"> <input type="button" id="mybutton3" name="mybutton3" value="2"> <input type="hidden" id="selectedButtonValue" value="" name="selectedButtonValue"> <button>Create account</button> </form> <script> $("input").click(function() { var clickedButton=$(this).val(); document.getElementById("selectedButtonValue").value=clickedButton; }); </script> <?php if(isset($_POST["selectedButtonValue"])) { echo $_POST["selectedButtonValue"]; } ?> </body> </html>