Обновить содержимое страницы, без зарядить его


работаю над проектом для колледжа, где я хотел бы обновить содержимое страницы, без перезагрузить его. Страница, на вопрос его содержания, полученного сценария PHP, что в свою очередь забирает содержимое в базе данных MySQL.

это мой сценарий PHP:

<?php
    include "php/conn.php";

    function lerNotas() {   
        global $conn;
        $query = mysqli_query($conn, "SELECT * FROM notas");                

        if (!$query) {
            die('A consulta falhou:' . mysqli_error($conn));
            } else {
            while($linha = mysqli_fetch_assoc($query)) {                
                echo "<div class=\"nota\">";
                echo "<input type=\"checkbox\" name=\"ids[]\" value=\"" . $linha['id'] . "\"><br>";
                echo "<span class=\"titulo\">". $linha['titulo'] . "</span><br>";
                echo nl2br($linha['conteudo']) . "<br><br>";
                echo "<span class=\"textoPequeno\">Criado em " . $linha['data_criacao'] . "</span><br/>";
                echo "<span class=\"textoPequeno\">Atualizado pela última vez em " . $linha['data_atualizacao'] . "</span>";
                echo "</div>";
            }
        }
    }           

    function apagarNotas() {
        global $conn;
        foreach($_POST['ids'] as $x) {
            $query = mysqli_query($conn, "DELETE FROM notas WHERE id=".$x );
            if (!$query) {
                die('A consulta falhou:' . mysqli_error($conn));
                } else {                
            }
        }
    }

?>

И это содержание моей странице:

<html>
    <head>
        <title>Notas</title>
        <link rel="stylesheet" type="text/css" href="css/styles.css">
        <meta charset="utf8">
    </head>
    <body>
        <nav id="menu">
            <ul>
                <li><a href="./nova_nota.php">Adicionar nota</a></li>
                <li><a href="./ler_notas.php">Listar notas</a></li>
                <li><a href="./exclui_notas.php">Excluir notas</a></li>
            </ul>
        </nav>
        <form action="" method="post">
            <?php           
                echo lerNotas();            
            ?>
            <input type="submit" name="apagar" value="Apagar notas selecionadas" class="buttonEnviar">
            <?php
                if(isset($_POST['apagar'])){
                    echo apagarNotas();                 
                }
            ?>
        </form>     
    </body>
</html>

обратите внимание, что форма заполняется за PHP/MySQL. То, что я хочу, что, когда я нажал на кнопка query для удаления была выполнена, и содержание веб-страницы, было обновление без обновления страницы. Мне даже удалось сделать это во времени, чтобы вставить данные в базу данных, но чтобы удалить и обновить страницу, я стучать.

Edit: Дополнить пунктом выше, так что я сделал вставки данных без перезагрузки страницы:

<html>
    <head>
        <title>Notas</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script src="js/novaNota.js"></script>
        <link rel="stylesheet" type="text/css" href="css/styles.css">
        <meta charset="utf8">

    </head>
    <body>
        <nav id="menu">
            <ul>
                <li><a href="./nova_nota.php">Adicionar nota</a></li>
                <li><a href="./ler_notas.php">Listar notas</a></li>
                <li><a href="./exclui_notas.php">Excluir notas</a></li>
            </ul>
        </nav>
        <div class="formulario">
            <form id="form" name="form">
                <input id="titulo" type="text" name="titulo" placeholder="Título" class="inputTexto"><br>
                <textarea id="conteudo" name="conteudo" placeholder="Conteúdo" class="textarea"></textarea><br>
                <input type="submit" value="Salvar nota" class="buttonEnviar" id="submit">
            </form>
        </div>
    </body>
</html> 

это страница, где есть ссылка на скрипт, который несет ответственности вставить данные в базу данные:

NovaNota.js

$(document).ready(function() {
    $("#submit").click(function() {
        var titulo = $("#titulo").val();
        var conteudo = $("#conteudo").val();
        if (titulo == '' || conteudo == '') {
            alert("Nenhum campo pode ser deixado em branco!");
            } else {
            // Returns successful data submission message when the entered information is stored in database.
            $.post("php/adicionarNota.php", {
                titulo1: titulo,
                conteudo1: conteudo
                }, function(data) {
                alert(data);
                $('#form')[0].reset(); // To reset form fields
            });
        }
    });
});

, Который, в свою очередь, использует этот скрипт:

AdicionarNota.php

<?php
    include "conn.php";

    define('NOME_TABELA', 'notas');
    $titulo = $_POST['titulo1'];
    $conteudo = $_POST['conteudo1'];
    $data = date("Y-m-d H:i:s");

    $query = mysqli_query($conn, "INSERT INTO " . NOME_TABELA . " (titulo, conteudo, data_criacao, data_atualizacao) VALUES (\"" . $titulo . "\", \"" . $conteudo . "\",\"" . $data . "\", null)");

    if ($query) {
        echo "Nota criada com sucesso!";
    }
    mysqli_close($conn);
?>

Надеюсь, что это ясно, и это помогает!

Author: Renan Lazarotto, 2014-09-18

2 answers

Я не сегодня, не нужно много времени, чтобы создать код, но я думаю, что обязанность иметь знания, чтобы сделать это:

1) добавьте код для checkbox:

echo "<input type=\"checkbox\" name=\"ids[]\" value=\"" . $linha['id'] . "\" id='i:$linha['id']'>"

2) создайте событие onsubmit, как когда-то делали для записи. Перед сохраните массив из checkbox

var ch = document.getElementsByTagName("checkbox");

3) сделать функцию ajax для отправки этих данных на сервер (функция apagarNotas() в php-файл.

4) В функции php apagarNotas() создать ответ, который удалил с нотами успеха:

foreach($_POST['ids'] as $x) {
            $query = mysqli_query($conn, "DELETE FROM notas WHERE id=".$x );
            if (!$query) {
                 $control = false;
                } else {
                 $control =true;
            }
        }

if(!control)
die('A consulta falhou:' . mysqli_error($conn));

return '{"result":"ok"}';

5) Если вы получили "ОК" возьмите в checbox, сохраненные в папке var ch, и удалите все элементы, которые embrulham ноты:

for (var b=0; ch.length; b++){
  if(ch.checked){ 
      c=document.getElementByID("i:"+ch).parentNode();
      c.parentNode.remove(c)
 }
}

Я публикую без проверки кода, но я думаю, что этот рецепт server за то, что вы хотите сделать.

 3
Author: Manuel Gerardo Pereira, 2014-09-18 13:54:55

Все хорошо до момента SUBMIT, который, когда используется в form, управляется очень конкретно, то есть является одним из элементов которой, как ожидается, действие "по умолчанию", и почему это происходит "перезагрузка" или, как descreves тебя...

Была выполнена, и содержание веб-страницы, было обновление без обновления страница.

Тем не менее действия, которые "захватили" click, а не действия SUBMIT... чтобы решить мое решение заключается в использовании:

event.preventDefault();

Как я уже упоминал, и, чтобы "захватить" SUBMIT ФОРМЫ, а не "click" решение:

Form добавляет ID:

<form id="exemplo">

После того, как в javascript:

$(document).ready(function() {
    $("form#exemplo").submit(function() {
        event.preventDefault();
        [o teu código]
    });
});
 2
Author: chambelix, 2014-09-18 21:25:06