Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2023, 15:57   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос Обновление данных и открытие модального окна

всем привет.

возникла такая проблема.
сделал форму где посетитель сайта может обновлять свои данные.
форма в модальном окне:

Код:
<div class='modal fade' id='edit-my-data' tabindex='-1'>
  <div class='modal-dialog modal-xg'>
    <div class='modal-content'>
      <div class='modal-header'>
        <h5 class='modal-title'>Редактировать мои данные</h5>
        <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
      </div>
      <div class='modal-body'>      
<?php 
// Проверяем, пусты ли переменные логина и id пользователя
    //echo "TEST:".$_SESSION['id'];
    if (empty($_SESSION['mail']) or empty($_SESSION['id']))
    {}
    else
    {
 
    if (!isset($name,$phone)) {
    echo "
    <form action='' method='post'>
    <input class='input_text' type='text' name='name' value='".$users_db_row['name']."' placeholder='Ваше имя'>
    <input class='input_text' type='text' name='phone' value='".$users_db_row['phone']."' placeholder='Телефон'>
    <input class='input_text' type='text' name='mail' value='".$users_db_row['mail']."' placeholder='Эл. почта' readonly>
    <input class='btn btn-outline-primary me-2' type='submit' value='Редактировать' data-bs-toggle='modal' data-bs-target='#edit-my-data'>
    </form>
    ";}
    else {
    $users_update_db = mysqli_query($db,"SELECT * FROM `users` WHERE `mail`='".$users_db_row['mail']."'");
    if (!$users_update_db)
    {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
    }
    if (mysqli_num_rows($users_update_db) > 0){
    $users_update_db_row = mysqli_fetch_array($users_update_db);
    $update = mysqli_query($db,"UPDATE `users` SET `mail`='".$users_update_db_row['mail']."',`password`='".$users_update_db_row['password']."',`phone`='".$_POST['phone']."',`name`='".$_POST['name']."',`activation`='".$users_update_db_row['activation']."',`date`='".$users_update_db_row['date']."',`date_stop`='".$users_update_db_row['date_stop']."',`privileges`='".$users_update_db_row['privileges']."',`bonus`='".$users_update_db_row['bonus']."' WHERE `id`='".$users_update_db_row['id']."'");
    echo "
        <div align='center'><img src='../../image/checked.png'></div>
        <div align='center'>Вы успешно обновили</div>
        <div align='center'>свои данные.</div>
        <div align='center'></div>
        <div align='center'></div>
    ";
    }
    }
    
    }
?>
      </div>
    </div>
  </div>
</div>
после нажатия кнопки - Редактировать, ничего не обновляется и модальное окно закрывается.
подскажите как сделать - чтобы модальное окно было открытым и данные обновились.
заранее благодарю за помощь
kuzmich вне форума Ответить с цитированием
Старый 23.05.2023, 16:46   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

чтоб сохранять/редактировать/удалять данные без перезагрузки страницы - нужно ajax использовать
ну и смешивать оформление (html итд) и бэк код -(php) такое себе занятие.... чуть че посложнее - обязательно поставит в тупик...
ADSoft вне форума Ответить с цитированием
Старый 23.05.2023, 16:50   #3
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
чтоб сохранять/редактировать/удалять данные без перезагрузки страницы - нужно ajax использовать
ну и смешивать оформление (html итд) и бэк код -(php) такое себе занятие.... чуть че посложнее - обязательно поставит в тупик...
а без AJAX обойтись? у меня с ним трудности
kuzmich вне форума Ответить с цитированием
Старый 23.05.2023, 21:12   #4
Килобайт
Новичок
Пользователь
 
Регистрация: 23.05.2023
Сообщений: 13
По умолчанию

Чтобы решить эту проблему, вам нужно добавить проверку на успешное обновление данных и, если обновление прошло успешно, показать сообщение об успехе и оставить модальное окно открытым.

Вот пример кода, который должен решить эту проблему:

Код:
```
if (!isset($name, $phone)) {
  echo "
  <form action='' method='post'>
    <input class='input_text' type='text' name='name' value='".$users_db_row['name']."' placeholder='Ваше имя'>
    <input class='input_text' type='text' name='phone' value='".$users_db_row['phone']."' placeholder='Телефон'>
    <input class='input_text' type='text' name='mail' value='".$users_db_row['mail']."' placeholder='Эл. почта' readonly>
    <input class='btn btn-outline-primary me-2' type='submit' value='Редактировать' data-bs-toggle='modal' data-bs-target='#edit-my-data'>
  </form>
  ";
}
else {
  $users_update_db = mysqli_query($db, "SELECT * FROM `users` WHERE `mail`='".$users_db_row['mail']."'");

  if (!$users_update_db) {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
  }

  if (mysqli_num_rows($users_update_db) > 0) {
    $users_update_db_row = mysqli_fetch_array($users_update_db);
    $update = mysqli_query($db, "UPDATE `users` SET `mail`='".$users_update_db_row['mail']."',`password`='".$users_update_db_row['password']."',`phone`='".$_POST['phone']."',`name`='".$_POST['name']."',`activation`='".$users_update_db_row['activation']."',`date`='".$users_update_db_row['date']."',`date_stop`='".$users_update_db_row['date_stop']."',`privileges`='".$users_update_db_row['privileges']."',`bonus`='".$users_update_db_row['bonus']."' WHERE `id`='".$users_update_db_row['id']."'");

    if ($update) {
      echo "
      <div class='modal fade show' id='edit-my-data' tabindex='-1'>
        <div class='modal-dialog modal-xg'>
          <div class='modal-content'>
            <div class='modal-header'>
              <h5 class='modal-title'>Редактировать мои данные</h5>
              <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
            </div>
            <div class='modal-body'>
              <div align='center'><img src='../../image/checked.png'></div>
              <div align='center'>Вы успешно обновили</div>
              <div align='center'>свои данные.</div>
              <div align='center'></div>
              <div align='center'></div>
            </div>
          </div>
        </div>
      </div>
      ";
    }
  }
}

```
Цитата:
Этот код добавляет проверку на успешное обновление данных и, если обновление прошло успешно, показывает сообщение об успехе и оставляет модальное окно открытым.
Килобайт вне форума Ответить с цитированием
Старый 24.05.2023, 08:32   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

при этом - перезагрузка окна все же происходит...
ADSoft вне форума Ответить с цитированием
Старый 24.05.2023, 08:36   #6
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от Килобайт Посмотреть сообщение
Чтобы решить эту проблему, вам нужно добавить проверку на успешное обновление данных и, если обновление прошло успешно, показать сообщение об успехе и оставить модальное окно открытым.

Вот пример кода, который должен решить эту проблему:

Код:
```
if (!isset($name, $phone)) {
  echo "
  <form action='' method='post'>
    <input class='input_text' type='text' name='name' value='".$users_db_row['name']."' placeholder='Ваше имя'>
    <input class='input_text' type='text' name='phone' value='".$users_db_row['phone']."' placeholder='Телефон'>
    <input class='input_text' type='text' name='mail' value='".$users_db_row['mail']."' placeholder='Эл. почта' readonly>
    <input class='btn btn-outline-primary me-2' type='submit' value='Редактировать' data-bs-toggle='modal' data-bs-target='#edit-my-data'>
  </form>
  ";
}
else {
  $users_update_db = mysqli_query($db, "SELECT * FROM `users` WHERE `mail`='".$users_db_row['mail']."'");

  if (!$users_update_db) {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
  }

  if (mysqli_num_rows($users_update_db) > 0) {
    $users_update_db_row = mysqli_fetch_array($users_update_db);
    $update = mysqli_query($db, "UPDATE `users` SET `mail`='".$users_update_db_row['mail']."',`password`='".$users_update_db_row['password']."',`phone`='".$_POST['phone']."',`name`='".$_POST['name']."',`activation`='".$users_update_db_row['activation']."',`date`='".$users_update_db_row['date']."',`date_stop`='".$users_update_db_row['date_stop']."',`privileges`='".$users_update_db_row['privileges']."',`bonus`='".$users_update_db_row['bonus']."' WHERE `id`='".$users_update_db_row['id']."'");

    if ($update) {
      echo "
      <div class='modal fade show' id='edit-my-data' tabindex='-1'>
        <div class='modal-dialog modal-xg'>
          <div class='modal-content'>
            <div class='modal-header'>
              <h5 class='modal-title'>Редактировать мои данные</h5>
              <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
            </div>
            <div class='modal-body'>
              <div align='center'><img src='../../image/checked.png'></div>
              <div align='center'>Вы успешно обновили</div>
              <div align='center'>свои данные.</div>
              <div align='center'></div>
              <div align='center'></div>
            </div>
          </div>
        </div>
      </div>
      ";
    }
  }
}

```
сделал как советовали вы:

Код:
<div class='modal fade' id='edit-my-data' tabindex='-1'>
  <div class='modal-dialog modal-xg'>
    <div class='modal-content'>
      <div class='modal-header'>
        <h5 class='modal-title'>Редактировать мои данные</h5>
        <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
      </div>
      <div class='modal-body'>      
<?php 
// Проверяем, пусты ли переменные логина и id пользователя
	//echo "TEST:".$_SESSION['id'];
    if (empty($_SESSION['mail']) or empty($_SESSION['id']))
    {}
    else
    {

if (!isset($name, $phone)) {
  echo "
  <form action='' method='post'>
    <input class='input_text' type='text' name='name' value='".$users_db_row['name']."' placeholder='Ваше имя'>
    <input class='input_text' type='text' name='phone' value='".$users_db_row['phone']."' placeholder='Телефон'>
    <input class='input_text' type='text' name='mail' value='".$users_db_row['mail']."' placeholder='Эл. почта' readonly>
    <input class='btn btn-outline-primary me-2' type='submit' value='Редактировать' data-bs-toggle='modal' data-bs-target='#edit-my-data'>
  </form>
  ";
}
else {
  $users_update_db = mysqli_query($db, "SELECT * FROM `users` WHERE `mail`='".$users_db_row['mail']."'");

  if (!$users_update_db) {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
  }

  if (mysqli_num_rows($users_update_db) > 0) {
    $users_update_db_row = mysqli_fetch_array($users_update_db);
    $update = mysqli_query($db, "UPDATE `users` SET `mail`='".$users_update_db_row['mail']."',`password`='".$users_update_db_row['password']."',`phone`='".$_POST['phone']."',`name`='".$_POST['name']."',`activation`='".$users_update_db_row['activation']."',`date`='".$users_update_db_row['date']."',`date_stop`='".$users_update_db_row['date_stop']."',`privileges`='".$users_update_db_row['privileges']."',`bonus`='".$users_update_db_row['bonus']."' WHERE `id`='".$users_update_db_row['id']."'");

    if ($update) {
      echo "
      <div class='modal fade show' id='edit-my-data' tabindex='-1'>
        <div class='modal-dialog modal-xg'>
          <div class='modal-content'>
            <div class='modal-header'>
              <h5 class='modal-title'>Редактировать мои данные</h5>
              <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
            </div>
            <div class='modal-body'>
              <div align='center'><img src='../../image/checked.png'></div>
              <div align='center'>Вы успешно обновили</div>
              <div align='center'>свои данные.</div>
              <div align='center'></div>
              <div align='center'></div>
            </div>
          </div>
        </div>
      </div>
      ";
    }
  }
}
	
	}
?>
      </div>
    </div>
  </div>
</div>
к сожалению обновление не проходит и таким образом диолалоговое окно не отображается.
kuzmich вне форума Ответить с цитированием
Старый 24.05.2023, 08:57   #7
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

проблема в условии:
Код:
if (!isset($name, $phone)) {}
хотя у меня в начале странице стоит:
Код:
 if (isset($_POST['name']))         {$name = $_POST['name']; if ($name == '') {unset($name);}}
 if (isset($_POST['phone']))        {$phone = $_POST['phone']; if ($phone == '') {unset($phone);}}
временно сделал так:
Код:
     
<?php 
// Проверяем, пусты ли переменные логина и id пользователя
	//echo "TEST:".$_SESSION['id'];
    if (empty($_SESSION['mail']) or empty($_SESSION['id']))
    {}
    else
    {

if (!isset($_POST['name'], $_POST['phone'])) {
  echo "
<div class='modal fade' id='edit-my-data' tabindex='-1'>
  <div class='modal-dialog modal-xg'>
    <div class='modal-content'>
      <div class='modal-header'>
        <h5 class='modal-title'>Редактировать мои данные</h5>
        <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
      </div>
      <div class='modal-body'>
  <form action='' method='post'>
    <input class='input_text' type='text' name='name' value='".$users_db_row['name']."' placeholder='Ваше имя'>
    <input class='input_text' type='text' name='phone' value='".$users_db_row['phone']."' placeholder='Телефон'>
    <input class='input_text' type='text' name='mail' value='".$users_db_row['mail']."' placeholder='Эл. почта' readonly>
    <input class='btn btn-outline-primary me-2' type='submit' value='Редактировать' data-bs-toggle='modal' data-bs-target='#edit-my-data'>
  </form>
      </div>
    </div>
  </div>
</div>
  ";
}
else {
  $users_update_db = mysqli_query($db, "SELECT * FROM `users` WHERE `mail`='".$users_db_row['mail']."'");

  if (!$users_update_db) {
    echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
    exit(mysqli_error());
  }

  if (mysqli_num_rows($users_update_db) > 0) {
    $users_update_db_row = mysqli_fetch_array($users_update_db);
    $update = mysqli_query($db,"UPDATE `users` SET `mail`='".$users_update_db_row['mail']."',`password`='".$users_update_db_row['password']."',`phone`='".$_POST['phone']."',`name`='".$_POST['name']."',`activation`='".$users_update_db_row['activation']."',`date`='".$users_update_db_row['date']."',`date_stop`='".$users_update_db_row['date_stop']."',`privileges`='".$users_update_db_row['privileges']."',`bonus`='".$users_update_db_row['bonus']."' WHERE `id`='".$users_update_db_row['id']."'");
	  
	//echo $update;

    if ($update) {
      echo "
<div class='modal fade' id='edit-my-data' tabindex='-1'>
  <div class='modal-dialog modal-xg'>
    <div class='modal-content'>
      <div class='modal-header'>
        <h5 class='modal-title'>Редактировать мои данные</h5>
        <button type='button' class='btn-close' data-bs-dismiss='modal'></button>
      </div>
      <div class='modal-body'>
              <div align='center'><img src='../../image/checked.png'></div>
              <div align='center'>Вы успешно обновили</div>
              <div align='center'>свои данные.</div>
              <div align='center'></div>
              <div align='center'></div>
      </div>
    </div>
  </div>
</div>
      ";
    }
  }
}
	
	}
?>


данные теперь успешно обновляются, но модальное окно не открывается
kuzmich вне форума Ответить с цитированием
Старый 24.05.2023, 18:13   #8
Килобайт
Новичок
Пользователь
 
Регистрация: 23.05.2023
Сообщений: 13
Сообщение

Возможно, проблема заключается в том, что не установлены необходимые библиотеки для работы модального окна. Попробуйте добавить следующий код в раздел
Цитата:
`<head>`
вашей страницы:

Код:
```
<link rel="stylesheet" href="<https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css>" integrity="sha384-bwu6p4Hw2C+4Y8LZgrQF8t/5r9eJG9Jv1YDQoV+9YA+5A3iBfDx1uYbQ5AUnlqM8" crossorigin="anonymous">
<script src="<https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.min.js>" integrity="sha384-xvZFJl6zKz4aS8J5Ubi1c3rG8k8lJb9U1T6Bd8a2X+MgJlBb8g7BmZ3v+Xw8V7L0" crossorigin="anonymous"></script>

```
Если это не поможет, попробуйте проверить консоль браузера на наличие ошибок и сообщите их мне.
Килобайт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать модального окна Alex-2 HTML и CSS 0 14.03.2017 12:29
Открытие модального окна при нажатии на ссылку ~>>>Dron<<<~ JavaScript, Ajax 2 09.04.2015 08:02
Оформление модального окна Predator199 C# (си шарп) 3 15.02.2015 12:54
WinAPI модального окна в IE Fordros Microsoft Office Excel 7 06.02.2014 17:25
Периодический показ модального окна поверх основного окна приложения Curvelaker Windows Forms 0 01.05.2013 15:24