ВСТАВИТЬ в базу данных с помощью выпадающего меню - PullRequest
0 голосов
/ 07 июня 2018

Проблема в том, чтобы сделать ВСТАВКУ в выпадающий список.Мне удалось заполнить данные из БД в раскрывающемся списке.Проблема вставляется в таблицу из раскрывающегося списка.

HTML (созданный раскрывающийся список из базы данных)

<div class="group">
    <label>Subject</label>
    <input type="text" name="subject">
</div> 
<div class="group">
    <label>Group</label>                    
    <select id="ministry" name="group">                        
        <option style="font-family: century gothic">---Select Ministry---</option>
        <?php // populate dropdown ?>
        <?php foreach($groups as $group): ?>
            <option value="<?= $group['group_id'] ?>"><?= $group['groupname'] ?></option>
        <?php endforeach; ?>
    </select>
</div>

PHP (код для вставки в базу данных)

<?php

$date = "";
$subject = "";
$group = "";
$message = "";  

$sql= "SELECT * FROM groups";
$stmt = $db->prepare($sql);
$stmt->execute();
$groups = $stmt->fetchAll();

if (isset($_POST['sendSMS'])) {
    $date = (isset($_POST['date']));
    $subject = $_POST['subject'];
    $group = $_POST['group'];
    $message = $_POST['message'];

    $sql = "INSERT INTO message (date, subject, group, message) 
            VALUES 
           (:date, :subject, :group, :message)";

    $stmt->execute(array(
        ':date' => $_POST['date'],
        ':subject' => $_POST['subject'],
        ':group' => $_POST['group'],
        ':message' => $_POST['message']));

    $result = $sql->execute();
    echo "SMS sent successfully";
}

?>

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

<?php
    
    //---session start---
    session_start();

     //---variables iniatiated and set to empty---
    $date = "";
    $subject = "";
    $group = "";
    $message = ""; 
    
    //--try begins here---
    //---include db connection---
    require 'db.php';        
    $sql= "SELECT * FROM groups";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $groups = $stmt->fetchAll();
        
    if(isset($_POST['sendSMS'])){
       
        //insert into database 
        $query = "INSERT INTO member(date, subject, group, message) VALUES (:date, :subject, :group, :message)";
        
        $stmt = $db->prepare($query); 

        $stmt->bindParam(":date",    $_POST['date']);
        $stmt->bindParam(":subject", $_POST['subject']);
        $stmt->bindParam(":group",   $_POST['group']);
        $stmt->bindParam(":message", $_POST['message']);

        $stmt->execute();
            
        echo "SMS sent successfully";
        
        header('location: SMSsent.php');
     }        
        
//--close connection---
unset($db);
   <form>     
        <div class="group">
              <label>Group</label>
                   <select id="ministry" name="group">
                    <?php 
                       foreach($groups as $group){
                          echo '<option value="' . $group['group_id'] . '">' . $group['groupname'] . '</option>';
                          }
                     ?>
                    </select>                 
         </div> 
         <div class="group">
            <label>Message</label>
                 <textarea 
                        style="text-align: left; vertical-align: middle;" 
                        cols="25" rows="7" name="message" id="clear">
                 </textarea>
         </div> 
         <button type="submit" class="btn" name="sendSMS">Send SMS</button>
                </div>    
      
   </form>
0 голосов
/ 07 июня 2018

Я переместил ваш первый запрос в начало вашей страницы.Мне кажется, это то, что собирается заполнить ваш HTML с данными группы.

Я немного почистил твой HTML.Хорошо отформатированный код намного проще для чтения и устранения проблем при возникновении проблем.Мне нравится избегать взлома и выхода php.

Ваш запрос на вставку близок, но я сделал очень четкий пример для вас.Это должно показать вам путь вперед.Помните: готовьтесь, привязывайте и выполняйте.

<?php

//DB select statement  - This should probably go before your select html
$sql= "SELECT * FROM groups";
$stmt = $db->prepare($sql); //Prepare
//Nothing to bind
$stmt->execute(); //Execute
$groups = $stmt->fetchAll();

echo
'<div class="group">
  <label>Subject</label>
  <input type="text" name="subject">
</div> 

<div class="group">

  <label>Group</label>                    

    <select id="ministry" name="group">                        
      <option style="font-family: century gothic">---Select Ministry---</option>';

      foreach($groups as $group){
        echo
        '<option value="' . $group['group_id'] . '">' . $group['groupname'] . '</option>';
      }

   echo 
   '</select>

</div>';

if(isset($_POST['sendSMS'])){

  //insert into database 
  $query = "INSERT INTO `message` 
  (
     `date`,
     `subject`,
     `group`,
     `message`
   )

VALUES

  (
    :date,
    :subject,
    :group,
    :message

  )";

  //Remember these three steps.  1.)Prepare, 2.)Bind, 3.)Execute

  $stmt = $db->prepare($query); //Prepare

  //Bind
  $stmt->bindParam(":date",    $_POST['date']);
  $stmt->bindParam(":subject", $_POST['subject']);
  $stmt->bindParam(":group",   $_POST['group']);
  $stmt->bindParam(":message", $_POST['message']);

  //Execute 
  $stmt->execute();


  echo "SMS sent successfully";

}

?>

Вот два источника для чтения на PDO.Я настоятельно рекомендую просмотреть их оба и добавить в закладки, чтобы вы могли ссылаться, когда они вам нужны.

https://phpdelusions.net/pdo

https://websitebeaver.com/php-pdo-prepared-statements-to-prevent-sql-injection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...