Intentar usar Javascript para pasar el valor de un botón para ejecutar un script PHP (el script simplemente cambió una columna booleana a 1 / True.
Sin embargo, no puedo hacer que el código funcione, no estoy seguro de si es mi formato, pero no estoy muy familiarizado con Javascript
simplemente estoy tratando de cambiar el valor en la base de datos SQL en una columna sin ninguna redirección.
índice.php
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script language="javascript"> $("body").on("click","button", function(ev){ ev.preventDefault(); // prevent submitting a form ... let data={id: $(this).data("id")} $.post("viewed.php",data) .done(function (result) { console.log("Message:",result); }); }); </script>Mi botón index.php
<div><button name="Delete" data-id='<?echo $data['orderReference']?>'">Delete</button></div>y Visto.php
$orderID = $_POST['id'] ; if ($_POST) { try { $sqlOrderviewed = "UPDATE `Order_Header` SET `orderViewed` = '1' WHERE `Order_Header`.`orderReference` IN ($orderID) "; $resultOrderupdate = $products->conn->query($sqlOrderviewed); // Execute Statement echo $count = $resultOrderupdate->rowCount(); } catch (PDOException $e) { // If error in SQL echo "One or more errors occurred saving to database This transaction will be rolled back:" . $e->getMessage(); // Display Message on End Point // $products->conn->rollback(); // Rollback SQL } }Soy consciente de la inyección de SQL en este ejemplo, esto no es producción, solo intento que un ejemplo funcione
Para hacer esto, sugeriría hacer un comportamiento de tipo REST API en su PHP que acepte JSON (como ejemplo) que puede definir con encabezados. Para que su JavaScript pueda permanecer casi igual, solo asegúrese de estar apuntando a la URL correcta. Pero creo que tu PHP debería parecerse más a esto:
<?php // Headers header('Access-Control-Allow-Origin: *'); header('Content-Type: application/json'); header('Access-Control-Allow-Methods: POST'); //maybe make this an update to be Semantic with the SQL operation you are doing // Get raw data from the post you made in JavaScript $data = json_decode(file_get_contents("php://input")); $id = $data.id; // Use the data in your SQL $sqlOrderviewed = "UPDATE `Order_Header` SET `orderViewed` = '1' WHERE `Order_Header`.`orderReference` IN ($id) "; ?>Si necesita más información sobre la creación de API con PHP, le sugiero estos recursos:
No estoy seguro de que $(this).data("id") obtenga los datos que desea. Supongo que desea obtener el valor de identificación de datos en su botón. Si es así, cambiaría tu JavaScript a algo más como esto:
<script language="javascript"> $("body").on("click","button", function(ev){ ev.preventDefault(); // prevent submitting a form ... let id = ev.target.getAttribute("data-id"); let data={id: id}; $.post("http://localhost:{port}/viewed.php",data) .done(function (result) { console.log("Message:",result); }); }); </script>¡Espero que esto ayude!
PD: así es como podría haber escrito el JS para esto, simplemente lo encuentro un poco más legible (no probado, solo escrito en el editor MD al responder la pregunta):
let buttons = document.querySelectorAll("button"); buttons.forEach((button) => { button.addEventListener("click", (e) => { e.preventDefault(); let id = e.target.getAttribute("data-id"); let data = { id: id }; $.ajax({ type: 'POST', url: '/viewed.php', data: data, success: function(result){ console.log( "result: " + result ); } }) }) });