Estoy usando códigos PHP para crear productos en el panel de control de mis productos en una franja como esta:
\Stripe\Stripe::setApiKey('sk_test_51JxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJhn'); $product = \Stripe\Product::create([ 'name' => 'test', ]);Entonces, lo que estoy tratando de hacer aquí es cada vez que hago clic en el botón Enviar, debo tener creado el producto en mi panel de control:
<button id="submit-button" type="submit" class="btn btn-primary" >Submit</button> <script> const btn = document.getElementById("submit-button"); btn.addEventListener("click", e => { e.preventDefault(); <?php \Stripe\Stripe::setApiKey('sk_test_51JxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJhn'); $product = \Stripe\Product::create([ 'name' => 'test', ]); ?> }) </script>Pero en cambio, cada vez que se vuelve a cargar la página, se crea el producto. ¡Solo quiero que se cree el producto cuando se hace clic en el botón!
En este momento, su código PHP se ejecuta cada vez que se carga la página con el botón porque tanto el código del botón como el código PHP están en el mismo lugar, y no tiene ninguna lógica para evitar que se ejecute el código de creación del producto. Es probable que desee separar los dos.
Por ejemplo, en button.php podrías tener algo como esto:
<a href="create-product.php">Create Product</a> Y luego en create-product.php tendrías el código que crea el producto.
Puede usar JavaScript para hacer esto sin navegar a otra página, que se vería así:
<button id="submit-button" type="button" class="btn btn-primary">Submit</button> <script> const btn = document.getElementById("submit-button"); btn.addEventListener("click", e => { e.preventDefault(); fetch('create-product.php').then( /* Handle response */ ); }); </script>El código para crear el producto también estaría en un archivo separado en este ejemplo. Consulte la Guía de uso de recuperación de MDN para obtener más información.