Отправка данных выбранного блока в БД без перезагрузки страницы

191
24 марта 2018, 17:17

Всем привет. Циклом foreach подгружаю из базы данных посты как на примере: "пост 1" "пост 2" "пост 3" и тд.

Задача отредактировать один пост, выставить нужную рубрику и т.д. после отправить в БД без перезагрузки страницы. Потом отредактировать второй пост и также отправить его в БД. Подскажите, пожалуйста, как лучше всего добиться: чтобы при нажатии кнопки "отправить" отправлялся только конкретны пост один раз (в моем коде когда нажимаешь кнопку "отправить" пост дублируется в БД несколько раз) без перезагрузки страницы а кнопка "отправить" становилась не активной?

Мой код:

//---------------*  Цикл подгрузки постов *---------------//
foreach($b['response'] as $value) :
if (!$value['text']) continue;
?>
<form method="post" action="parser.php">

      <div class="horisontal-container">
         <div class="full-block-1">
            <input type="text" name="title" placeholder="Заголовок" value="<? $title = explode(".", $text_clean)[0]; echo $title;  ?>" size="48"><!--explode — Разбивает строку с помощью разделителя-->
            <div class="photo"> 
                <? for($i = 0; $i < 6; $i++) { // переберает фотографии ?> 
               <img class="img_content" style="background-image: url(<?= $value['attachments'][$i]['photo']['src_big']?>);">
                <?php } ?>
            </div>
         </div>
         <div class="full-block-2">
            <textarea rows="17" cols="47" name="text" placeholder="Описание" ><? echo  $text_clean; ?></textarea>
         </div>
         <div class="vertical-container">
            <div class="row-item-1"><input type="text" name="name" placeholder="Имя" value="<? echo $first_name ?>" size="30"> </div>
            <div class="row-item-2"><input type="text" name="email" placeholder="id профиля" value="vk.com/id<?= strip_tags ($value['signer_id']); ?>" size="30"></div>
            <div class="row-item-2"><input type="text" name="phone" placeholder="Телефон" value="<? echo $phone ?>" size="30"> </div>
            <div class="row-item-2"><input type="text" name="price" placeholder="Цена" value="<? echo $price ?>" size="30"> </div>
            <div class="row-item-2"><input  type="text" name="region" placeholder="Город" disabled="disabled" value="<? echo $city ?>" size="30"> </div>

<?
//---------------*  Подгрузка городов из БД *---------------//

  $sql_region = "SELECT * FROM `regions`";
  $result_select = mysqli_query($on_link, $sql_region);
    echo "<select class='row-item-2' name = 'region'>";
    echo "<option value='0'>Город</option>";                             
        while($object = mysqli_fetch_object($result_select)){
            echo "<option value = '$object->id' > $object->name </option>";
        }
    echo "</select>";

//---------------*  Подгрузка Категорий из БД *---------------//
    echo $cat;

?>

<!--------------------- Блок с кнопками --------------------------->
   </div>
         <div class="vertical-container buttom-block">
            <input class="buttom"  type="submit" name="add" value="Отправить">
            <a href="#" class="buttom-delete" onclick="return deleteRow(this)">Удалить</a>
         </div>
         <hr align="center" width="95%" size="1" color="grey" />
      </div>
</form>
<?php

//---------------*  Отправка в  БД *---------------//
if(isset($_POST['add'])) {
$time = time();
$date_del = $time + 86400*30;
$ip = '111.111.111.111';
$status = 1;
$sendmail = 0;
$marked = 0;
$raised = 0;
$approved = 1;
$uid = '123123123';
$user_id = 0;
$text = $_POST['text'];
$user_name = $_POST['name'];
$email = $_POST['email'];
$title = $_POST['title'];
$cat_select = $_POST['cat'];
$region_select = $_POST['region'];


mysqli_query($on_link,"
INSERT INTO db(uid,ip,cat,user,region,date_add,date_del,user_id,status,sendmail,email,title,text,marked,approved,raised) 
VALUES('$uid','$ip','$cat_select','$user_name','$region_select','$time','$date_del','$user_id','$status','$sendmail','$email','$title','$text','$marked','$approved','$raised')");
mysqli_close();
}
?>


<!--------------------- Конец цикла --------------------------->
<?php endforeach; ?>




?>
Answer 1

Что бы сохранить запись в базе без перезагрузки страницы Вам нужно использовать AJAX запрос. Сейчас, судя по коду, у Вас одним скриптом обрабатывается и формирование формы, и сохранение.

READ ALSO
Вывод из бд на php

Вывод из бд на php

Требуется при нажатии на пункт меню "одежда-мужская", что бы открывал каталог и делал выборку из мужской одежды (category=1), при нажатии на "женскую-выборка"...

149
autoload в composer (psr-4)

autoload в composer (psr-4)

Ошибка: Fatal error: Uncaught Error: Class 'App\Core\DB' not found in

151