Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2019, 12:41
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

не работает ajax-запрос
Всем привет.
Хочу сделать страницу, на которой можно было бы отображать записи из БД MySQL, а также добавлять новые записи, удалять записи и изменять.

Есть в БД вот такая вот таблица (на скриншоте).

получение данных работает нормально, но вот удалить запись при клике на иконку с крестиком почему то не получается. Посмотрите пожалуйста, что не так?

index.php:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>test</title>
    <link rel="stylesheet" href="css/style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<?
require_once 'connection.php'; // ïîäêëþ÷àåì ñêðèïò

//mb_internal_encoding("cp-1251");

$link = mysql_connect('localhost', $user, $password);
if (!$link) {
    die('Îøèáêà ñîåäèíåíèÿ: ' . mysql_error());
}
echo 'Success connection<br/>';

$selected = mysql_select_db($database,$link) 
or die("Could not select databasename");

$query = "Select * FROM test";
$result = mysql_query($query) or die(mysql_error()); 


$table = '<table border="1" cellspacing ="0" cellpadding="0">';
$table.=    '<tr>';
$table.=        '<td>ID</td>';
$table.=        '<td>Name</td>';
$table.=        '<td>Address</td>';
$table.=        '<td>Phone</td>';
$table.=    '</tr>';
$table.=    '<tbody>';

while ($row = mysql_fetch_assoc($result)){
    $table.='<tr><td>'.$row['ID'].'</td><td>'.$row['NAME'].'</td><td>'.$row['ADDRESS'].'</td><td>'.$row['PHONE'].'<img src="img/remove.png " /></td></tr>';
}
$table.=    '</tbody>';

$table.=    '</table>';
echo $table;?>


<form class="add" id="submit-form" method="post" action="script.php">
    <input type="text" name="name" placeholder="Ð


get_data.php:

<?
    require_once 'connection.php';
    $link = mysql_connect('localhost', $user, $password);
    if (!$link) {
        die('Îøèáêà ñîåäèíåíèÿ: ' . mysql_error());
    }

    $selected = mysql_select_db($database,$link) 
        or die("Could not select databasename");


    $query = "Select * FROM test";
    $result = mysql_query($query) or die(mysql_error());

    $table = '<table border="1" cellspacing ="0" cellpadding="0">';
    $table.=    '<tr>';
    $table.=        '<td>ID</td>';
    $table.=        '<td>Name</td>';
    $table.=        '<td>Address</td>';
    $table.=        '<td>Phone</td>';
    $table.-    '</tr>';

    while ($row = mysql_fetch_assoc($result)){
        $table.='<tr><td>'.$row['ID'].'</td><td>'.$row['NAME'].'</td><td>'.$row['ADDRESS'].'</td><td>'.$row['PHONE'].'<img src="img/remove.png " /></td></tr>';
    }

    $table.= '</tbody>';

    $table.= '</table>';

    echo $table;
?>



del_data.php:

<?
require_once 'connection.php';
    
    echo $_POST['id'];

    $link = mysql_connect('localhost', $user, $password);
    if (!$link) {
        die('Îøèáêà ñîåäèíåíèÿ: ' . mysql_error());
    }

    $selected = mysql_select_db($database,$link) 
        or die("Could not select databasename");

    $query = "Delete FROM test Where ID=".$_POST["id"];
    echo $query;

    $result = mysql_query($query) or die(mysql_error());

    if($result){
        echo 'delete is success ';
    }

?>



script.php:


<?
echo "test";

var_dump($_POST['name']);
var_dump($_POST['address']);
var_dump($_POST['phone']);

require_once 'connection.php';



if(  (isset($_POST['name']) && $_POST['name']!='') && (isset($_POST['address']) && $_POST['address']!='') && (isset($_POST['phone']) && $_POST['phone']!='') ){


    $link = mysql_connect('localhost', $user, $password);
    if (!$link) {
        die('Îøèáêà ñîåäèíåíèÿ: ' . mysql_error());
    }

    $selected = mysql_select_db($database,$link); 

    //echo 'name='.$_POST['name'].' '.' address='.$_POST['address'].' phone='.$_POST['phone'];
    $query = 'Insert Into test(NAME,ADDRESS, PHONE) VALUES("'.$_POST["name"].'", "'.$_POST["address"].'", "'.$_POST["phone"].'")';
     //$query = 'Insert Into test(NAME,ADDRESS, PHONE) VALUES("Юра","Москва", "89771604797")';
     $result = mysql_query($query);

    if (!$result) {
        die('Неверный запрос: ' . mysql_error());
    }
}


?>
Изображения:
Тип файла: jpg 1.jpg (22.1 Кб, 2 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 02.02.2019, 12:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Это все РНР код, причем дырявый на все 100%. А где же сам Ajax?
Ответить с цитированием
  #3 (permalink)  
Старый 02.02.2019, 13:07
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

<script>
    $(document).ready(function(){
        $('form#submit-form').submit(function(e) {

            //отмена действия по умолчанию для кнопки submit
            e.preventDefault(); 

            var $form = $(this);
            $.ajax({
              type: $form.attr('method'),
              url: $form.attr('action'),
              data: $form.serialize()
            }).done(function(msg) {
              console.log('success', msg);
                
                $('table').remove();

                  $.ajax({
                    type: 'GET',
                    url: 'get_data.php',
                    success: function(msg){
                        //alert('Âñòàâëÿåì íîâóþ òàáëèöó ñ íîâûìè äàííûìè');
                        $('form.add').before(msg);
                    },
                    error: function(msg){
                        alert('error');
                    }
                  });

            }).fail(function(msg) {
              console.log('fail');
              console.log(msg);
            });
            
        });

        $('table tbody tr').on('click', 'td img', function(){
          console.log($(this));

          $td = $(this).closest('td');
          $tr = $td.closest('tr');
          $id = $tr.find('td:first-child').text();
          console.log($id);
          $.ajax({
            type: 'POST',
            data: $id,
            url: 'del_data.php?id=' + parseInt($id),
            success: function(msg){
              console.log('delete is success', msg);
            },
            error: function(msg){
              console.log('error delete data', msg);
            }
          });
        });
    });
</script>


походу форум не дал длинный код вставить
Ответить с цитированием
  #4 (permalink)  
Старый 02.02.2019, 13:08
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

для удаления почему то в php-скрипт не передаётся id и из-за этого sql-запрос не срабатывает, я вот и пытаюсь понять, почему id не передаётся.
Ответить с цитированием
  #5 (permalink)  
Старый 02.02.2019, 13:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от fenix_63
почему то в php-скрипт не передаётся id
А где у вас вообще поле с ID в форме? У вас код с формой вообще обрывается на пол форме.
Ответить с цитированием
  #6 (permalink)  
Старый 02.02.2019, 14:19
Аватар для fenix_63
Аспирант
Отправить личное сообщение для fenix_63 Посмотреть профиль Найти все сообщения от fenix_63
 
Регистрация: 05.06.2014
Сообщений: 92

Вот сюда этот пример выложил: http://v9061216.bget.ru/

У меня есть картинка, при клике на которую определяется ID записи, напротив которой эта картинка находится.

Я пробовал сначала без формы делать - не получается, но и с формой пока тоже не получается.
Ответить с цитированием
  #7 (permalink)  
Старый 02.02.2019, 15:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

1) Зайти обязательно сюда - http://php.net/manual/ru/security.database.php, изучить и впредь такого дырявого кода не писать. Кроме того, обязательно прочесть о рекомендации "похоронить оригинальное расширение MySQL" и использовать либо mysqli, либо PDO. Никогда не выводить на страницы вот это mysql_error(), если используете die ... mysql_error(), то только в режиме отладки.

2) Логика. Если начать с добавления данных в базу, то с учетом того, что данные содержат телефонный номер, добавление имеет серьезный недостаток - не проверяется занятость номера. То есть в базу можно спокойно записывать дубликаты. А такого допускать нельзя, да и само это поле в таблице должно иметь уникальный индекс.

3) Удаление. ID, это уникальный идентификатор, помнить его да и выводить требуется только тогда, когда он имеет значение. Например, это продажа квартир, и может быть много предложений с заголовками по сути идентичными, но ID этих объектов уникальны. А зачем в вашем случае смотреть на ID? Если удаление "поштучно" ну так определите ID записей как значение кнопкам удаления, тогда в обработчике кнопок удаления нужно будет отправлять в запросе ее значение. Форма при этом не нужна.
А можно удалять сразу выбранную группу, то есть для каждой записи флажок, их значения, это ID записей. На сервер будут отправляться выбранные флажки - ID записей, которые надо удалить. Здесь проще решение с формой, но можно и без нее.

Можно одним и тем же Ajax кодом отправлять запросы как на добавление, так и на удаление.

Последний раз редактировалось laimas, 02.02.2019 в 15:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax запрос через метод submit() n0kkw1n AJAX и COMET 12 16.12.2016 22:47
Ajax get запрос RageXL AJAX и COMET 4 08.04.2014 18:52
Ajax запрос не работает в IE holop AJAX и COMET 1 10.05.2013 07:16
LightBox + ajax = Не работает ((( xmartinesx jQuery 2 11.10.2010 16:32
При наборе адреса с www не работает AJAX (JQuery)! madmis AJAX и COMET 3 23.11.2009 19:03