Diana Madeira Posted April 23, 2017 at 01:21 PM Report #603766 Posted April 23, 2017 at 01:21 PM Olá, estou a criar um site onde o adminstrador pode mudar o estado de uma encomenda: criei uma form onde tenho o dropdown menu: <form name="changestatus" id="changestatus" action="status_update.php" method="POST"> <td> <input type="text" name="orderID" value=" <?php echo $row['order_id'];?>" readonly></td> <td> <?php echo $row['ISBN'];?></td> <td> <?php echo $row['quantity']; ?></td> <td> <?php echo $row['customer_id'];?></td> <td> <?php echo $row['created']; ?></td> <td> <select name="status" onchange="change()"> <option <?php echo (strcmp($row['status'], 'Shipped') == 0 ? 'selected' : '');?> value="Shipped">Shipped</option> <option <?php echo (strcmp($row['status'], 'Cancelled') == 0 ? 'selected' : '');?> value="Cancelled">Cancelled</option> <option <?php echo (strcmp($row['status'], 'Refunded') == 0 ? 'selected' : '');?> value="Refunded">Refunded</option> <option <?php echo (strcmp($row['status'], 'Completed') == 0 ? 'selected' : '');?> value="Completed">Completed</option> <option <?php echo (strcmp($row['status'], 'Progress') == 0 ? 'selected' : '');?> value="Progress">In progress</option> </select></td> </form> Depois usando Jquery, tentei fazer que ao selecionar a opção pretendida a pagina fosse redirecionada para a pagina status_update.php. Jquery código: <script> function change(){ $.post("status_update.php", $("#changestatus").serialize()); } </script> Código status_update.php: <?php $_SESSION['message'] =''; include("config.php"); if($_SERVER['REQUEST_METHOD'] == 'POST') { $sql= "UPDATE orders SET status = 'a'";.//mysqli_escape_string($_POST['status'])."'where"; if($conn->query($sql)===TRUE) { echo "<script>window.location.href='showOrders.php';</script>"; } else { echo 'Error'; echo $sql; } } ?> Infelizmente ainda não consegui perceber muito o que não esta funcionando aqui, se e o Jquery ou o PHP. Talvez o problema seja aqui nesta linha:"$.post("status_update.php", $("#changestatus").serialize());" Alguem que possa ajudar?
devgoncalo Posted April 23, 2017 at 06:35 PM Report #603768 Posted April 23, 2017 at 06:35 PM ola bem, tens de seguir o fluxo da informação. F12 no browser -> Tab Console e/ou Tab Network aí consegues ver o que se está a passar cumps
José Esteves Posted April 23, 2017 at 09:04 PM Report #603770 Posted April 23, 2017 at 09:04 PM Olá Diana, mas tu não dissestes que problema está a acontecer!! Como poderemos ajudar-te? Peço-te por favor que expliques melhor o quê significa "o que não esta funcionando aqui".
Diana Madeira Posted April 23, 2017 at 09:10 PM Author Report #603771 Posted April 23, 2017 at 09:10 PM o que não funciona é ao selecionar a opçao que pretendo no dropdown menu simplesmte nao faz o que php pede. faço me entender?
José Esteves Posted April 24, 2017 at 11:40 AM Report #603779 Posted April 24, 2017 at 11:40 AM Diana, vejo vários problemas no seu código. Mas irei apenas corrigir o que me parece mais óbvio e imediato: serialize não funciona em campos que não sejam input! Portanto transforme todos aqueles <td> em <input> assim como tu fizeste com 'order_id'. Exemplo: <td> <?php echo $row['ISBN'];?></td> ficará assim: <input type="text" name="ISBN" value=" <?php echo $row['ISBN'];?>"> . E fique atenta ao atributo "name"!! Sem ele serialize também não funcionará. Se quiseres posso ajudar-te a reestructurar teu código para implementer o padrão MVC. Diga se funcionou a alteração que te sugeri.
Diana Madeira Posted April 24, 2017 at 12:19 PM Author Report #603780 Posted April 24, 2017 at 12:19 PM Ola José Seria muito bom se me ajudasse a restruturar o codigo mas a verdade é que nao posso estar alterar os tds por input pois isso iria alterar todo o meu codigo! nao havera outra solucao? Obrigado
José Esteves Posted April 24, 2017 at 12:50 PM Report #603781 Posted April 24, 2017 at 12:50 PM Olá Diana, Claro que existe outra solução e não somente uma única, mas sim muitas outras! Como sempre, gosto de iniciar pelo mais fácil e mais óbvio: ao invés de substituir os <td> por <input>, apenas coloca <input>s dentro dos <td>s. Outra solução seria utilizar <div> ao invés de input, dar ID a cada <div> e acessá-las vida jQuery assim: $('#ISBN').html(); E depois, ao invés de chamar $.post() por quê não chamas $.ajax()? Existe alguma restrição? Mais tarde hoje irei executar teu código aqui e ver o que posso fazer. Saudações!
Diana Madeira Posted April 24, 2017 at 02:11 PM Author Report #603782 Posted April 24, 2017 at 02:11 PM José se logo me puderes ajudar ficaria muito grata.
José Esteves Posted April 25, 2017 at 04:09 AM Report #603795 Posted April 25, 2017 at 04:09 AM Olá Diana, Como prometido, executei e testei teu código aqui. Fi-lo funcionar também. Coloquei o código fonte à disposição no Google Drive pois não encontrei nenhuma opção de anexar ficheiros aqui no site: https://drive.google.com/file/d/0B0yKRF3F7Ge6SGpNUjhjVmtWM2s/view?usp=sharing Basicamente tens que desistir da idéia de redirecionar a página diretamente do PHP. Ao invés disto, é melhor passar uma função callback para o $.post() do jQuery. Tenho certeza que se leres o código que preparei entendê-lo-ás perfeitamente, porém fico à tua disposição para qualquer pergunta que ainda tiveres. Happy coding! 🙂
Diana Madeira Posted April 25, 2017 at 09:01 AM Author Report #603797 Posted April 25, 2017 at 09:01 AM Olá José entretanto ontem a noite consegui, de qualquer das formas obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now