За последние 24 часа нас посетили 6490 программистов и 497 роботов. Сейчас ищут 232 программиста ...

Внести изменение в строку таблицы БД при нажатии на кнопку

Тема в разделе "PHP и базы данных", создана пользователем Тер1, 11 фев 2019 в 01:11.

  1. Тер1

    Тер1 Новичок

    С нами с:
    Понедельник
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте. Подскажите, пожалуйста, как можно сделать так, чтобы при нажатии на кнопку "Отправить" на страничке oform, правильно срабатывал файл action_oform, т.е, проверял для пользователя существование значения в столбце "status" и, если оно не существует или "Отклонена", создавал значение в столбце "date"(ставил текущую дату), оставляя статус пустым, а если значение "Принята", то выводил сообщение "Заявка уже была создана и принята".

    Я понимаю, что в общих чертах в файле action_oform должно быть:
    1. Подключение к базе данных(есть).
    2. Проверка на то, авторизован ли пользователь(есть).
    3. Получение данных из таблицы statem(есть).
    4. Работа с данными таблицы(нет).
    Вот, что у меня есть:
    Файл connection.php:
    PHP:
    1. <?php
    2. $host = 'localhost'; // адрес сервера
    3. $database = 'insurance'; // имя базы данных
    4. $user = 'root'; // имя пользователя
    5. $dbpassword = ''; // пароль
    6. ?>
    Файл oform.php:

    PHP:
    1. <?php
    2.     require_once 'connection/connection.php';
    3.     if(empty($_SESSION['id'])) {
    4.         header("Location: http://passport/auth.php");
    5.     } else {
    6.         $id = $_SESSION['id'];
    7.         $conn = mysqli_connect($host, $user, $dbpassword, $database);
    8.         if (!$conn) {
    9.             die("Connection failed: " . mysqli_connect_error());
    10.         }
    11.         $sql = "SELECT * FROM client WHERE id='$id'";
    12.         $result = mysqli_query($conn, $sql);
    13.         $myrow = mysqli_fetch_array($result, MYSQLI_ASSOC);
    14.         $sql = "SELECT DISTINCT District FROM localitycoef";
    15.         $districts = mysqli_query($conn, $sql);
    16.        
    17.     }
    18. ?>
    19. <div class="container">
    20. <script type="text/javascript" src="js\form-disable.js"></script>
    21. <script type="text/javascript" src="js\price.js"></script>
    22. <form enctype="multipart/form-data" id="ajax_form" method="post" action="action_oform.php">
    23.     <div class="form-block">
    24.         <h3>Получатель паспорта</h3>
    25.         <small>Данные можно изменить в личном кабинете</small>
    26.         <ul class="input-inline">          
    27.             <li><label for="surname">Фамилия:</label>
    28.             <input class="form-input" name="surname" type="text" value=<?php echo $myrow['Surname'];?> disabled></li>
    29.             <li><label for="name">Имя:</label>
    30.             <input class="form-input" name="name" type="text" value=<?php echo $myrow['Name'];?> disabled></li>
    31.             <li><label for="patr">Отчество:</label>
    32.             <input class="form-input" name="patr" type="text" value=<?php echo $myrow['Patronymic'];?> disabled></li>
    33.         </ul>
    34.         <ul class="input-inline">          
    35.             <li><label for="date">Дата рождения:</label>
    36.             <input class="form-input" name="date" type="date" value=<?php echo $myrow['BirthDate'];?> disabled></li>
    37.             <li><label for="passport">Номер свидетельства о рождении:</label>
    38.             <input class="form-input" name="passport" type="text" value=<?php echo $myrow['Passport'];?> disabled></li>
    39.         </ul>
    40.         <h4>Адрес постоянной регистрации:</h4>
    41.         <ul class="input-inline">
    42.             <li><label for="town">Регион:</label>
    43.             <input class="form-input" name="region" type="text" value="<?php echo $myrow['Region'];?>" disabled></li>
    44.             <li><label for="town">Город:</label>
    45.             <input class="form-input" name="town" type="text" value=<?php echo $myrow['Town'];?> disabled></li>
    46.             <li><label for="street">Улица:</label>
    47.             <input class="form-input" name="street" type="text" value=<?php echo $myrow['Street'];?> disabled></li>
    48.         </ul>
    49.         <ul class="input-inline">
    50.             <li><label for="house">Номер дома:</label>
    51.             <input class="form-input" name="house" type="text" value=<?php echo $myrow['HouseNumber'];?> disabled></li>
    52.             <li><label for="corpus">Корпус:</label>
    53.             <input class="form-input" name="corpus" type="text" value=<?php echo $myrow['Corpus'];?> disabled></li>
    54.             <li><label for="apartm">Квартира:</label>
    55.             <input class="form-input" name="apartm" type="text" value=<?php echo $myrow['Apartm'];?> disabled></li>
    56.     </div>
    57.     <ul class="input-inline">
    58.         <li>
    59.             <input class="price-left-btn" id="payment_btn" type="submit" name="payment_btn" value="Отправить">
    60.         </li></ul>
    61. </form>
    62. </div>
    Файл action_oform.php с моей попыткой вывести хоть что-нибудь:


    PHP:
    1. <?php
    2.     require_once 'connection/connection.php';
    3.     if(empty($_SESSION['id'])) {
    4.         header("Location: http://passport/auth.php");
    5.     }
    6.         $id = $_SESSION['id'];
    7.         $conn = mysqli_connect($host, $user, $dbpassword, $database);
    8.         if (!$conn) {
    9.             die("Connection failed: " . mysqli_connect_error());
    10.         }
    11.         $sql_state = "SELECT * FROM statem WHERE id_state='$id_state'";
    12.         $result_state = mysqli_query($conn, $sql_state);
    13.         $myrow_state = mysqli_fetch_array($result_state, MYSQLI_ASSOC);
    14.         if ($myrow_state['status'] == 'Принята') {
    15.         echo "123";
    16.          }
    17.     }
    18. ?>
    И запросы для таблиц базы данных(делаю в phpMyadmin)
    Таблица client:
    Код (Text):
    1. CREATE TABLE `client` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT,
    3. `Email` varchar(50) NOT NULL,
    4. `Password` varchar(255) NOT NULL,
    5. `Surname` varchar(35) NOT NULL,
    6. `Name` varchar(20) NOT NULL,
    7. `Patronymic` varchar(22) DEFAULT NULL,
    8. `Phone` varchar(11) NOT NULL,
    9. `BirthDate` date NOT NULL,
    10. `Passport` text NOT NULL,
    11. `Region` varchar(35) NOT NULL,
    12. `Town` varchar(70) NOT NULL,
    13. `Street` varchar(115) NOT NULL,
    14. `HouseNumber` int(11) NOT NULL,
    15. `Corpus` int(11) DEFAULT NULL,
    16. `Apartm` int(11) NOT NULL,
    17. PRIMARY KEY (`id`)
    18. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
    Таблица statem:

    Код (Text):
    1. CREATE TABLE `statem` (
    2. `id_state` int(11) NOT NULL AUTO_INCREMENT,
    3. `id` int(11) NOT NULL,
    4. `status` varchar(10) DEFAULT NULL,
    5. `date` date DEFAULT NULL,
    6. PRIMARY KEY (`id_state`),
    7. KEY `id` (`id`),
    8. CONSTRAINT `statem_ibfk_1` FOREIGN KEY (`id`) REFERENCES `client` (`id`)
    9. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
     
  2. miketomlin

    miketomlin Активный пользователь

    С нами с:
    9 авг 2016
    Сообщения:
    1.123
    Симпатии:
    176
    Когда я вижу плохо сочетаемые вещи без должного объяснения, я обычно пропускаю такие посты. Пример:
    ajax_form и header("Location: http://passport/auth.php"); – даже если у вас универсальный обработчик, перед редиректом должна быть проверка, что это не AJAX-запрос.

    Проставить кавычки у значения хватило сил только в одном месте. Про HTML-кодирование я уже молчу. Да, бывает, что в БД хранится уже закодированный текст, но уверен, что это не ваш случай.

    Короче в топку :)
    --- Добавлено ---
    Код (Text):
    1. <?php echo "123";
    или даже
    Код (Text):
    1. 123
     
  3. Тер1

    Тер1 Новичок

    С нами с:
    Понедельник
    Сообщения:
    2
    Симпатии:
    0
    Извините, пожалуйста, я совсем начинающая.
     
  4. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    451
    Симпатии:
    103
    девушка изучается рнр? интересный выбор, я за два года видел только одну рнр разработчицу и она код нибарал только левой рукой и правой голову подпирала...

    а с чем связан ваш выбор?
     
  5. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    378
    Симпатии:
    57
    У вас какая-то странная страница oform.php - обычно, на таких самописных страницах с формами идет проверка на $_POST, вида:

    PHP:
    1. if (!empty($_POST)) {
    2.     // Дополнительная валидация данных
    3.     // Обрабатываем данные из формы
    4. }
    А у вас там зачем-то проверка на сессию идет. При этом, если говорить об SQL - то видно только два SELECT, но ни одного INSERT (который собственно бы добавлял данные из формы в базу)

    Поток сознания.
    Или уж напишите полное ТЗ (в чем суть вообще?), или опишите именно тот пункт, который у вас не получается.