Как исправить функцию добавления?

Я делаю проект на основе php. И я хочу добавить данные в базу данных. Я сделал это с помощью php, PDO. И я создал код с ООС. Но на главной HTML-странице есть часть if else. В этой части работает другая часть. Но я даже не нажал кнопку вставки. Когда страница загружается, выполняется другая часть. Я посмотрел видео, и этот код работает отлично. Вот код..

Insert.php - геттеры, сеттеры, SQL-запрос и т. д.

    class Stock
    {
        protected $ItemNo;
        protected $ItemName;
        protected $brand;
        protected $qty;
        protected $Description;
        protected $ItemDate;
        protected $SupplierName;
        protected $SupplierMail;
        private $tableName = 'StockDetails';
        private $dbconn;

        function setItemNo($ItemNo) { $this->ItemNo = $ItemNo; }
        function getItemNo() { return $this->ItemNo; }
        function setItemName($ItemName) { $this->ItemName = $ItemName; }
        function getItemName() { return $this->ItemName; }
        function setBrand($brand) { $this->brand = $brand; }
        function getBrand() { return $this->brand; }
        function setQty($qty) { $this->qty = $qty; }
        function getQty() { return $this->qty; }
        function setDescription($Description) { $this->Description = $Description; }
        function getDescription() { return $this->Description; }
        function setItemDate($ItemDate) { $this->ItemDate = $ItemDate; }
        function getItemDate() { return $this->ItemDate; }
        function setSupplierName($SupplierName) { $this->SupplierName = $SupplierName; }
        function getSupplierName() { return $this->SupplierName; }
        function setSupplierMail($SupplierMail) { $this->SupplierMail = $SupplierMail; }
        function getSupplierMail() { return $this->SupplierMail; }

        public function __construct()
        {
            require_once ('Database.php');
            $db = new Database();
            $this->dbconn = $db->connect();

        }
        public function insert(){

            $sql = "INSERT INTO $this->tableName VALUES (:ItemNo, :ItemName, :brand, :qty, :Description, :ItemDate, :SupplierName, :SupplierMail)";
            $stmt = $this->dbconn->prepare($sql);

            $stmt->bindParam(':ItemNo', $this->ItemNo);
            $stmt->bindParam(':ItemName', $this->ItemName);
            $stmt->bindParam(':brand', $this->brand);
            $stmt->bindParam(':qty', $this->qty);
            $stmt->bindParam(':Description', $this->Description);
            $stmt->bindParam(':ItemDate', $this->ItemDate);
            $stmt->bindParam(':SupplierName', $this->SupplierName);
            $stmt->bindParam(':SupplierMail', $this->SupplierMail);

            if ($stmt->execute()){

                return true;

            }else{

                return false;
            }}}  
?>

Action.php — действие формы на AddItem.php

    require_once ('Insert.php');

    class action{

        function __construct(){

            switch ($_POST['submit']) {
                case 'insert':
                    $obInsert = new Stock;

                    $obInsert->setItemNo($_POST['ItemNo']);
                    $obInsert->setItemName($_POST['ItemName']);
                    $obInsert->setBrand($_POST['brand']);
                    $obInsert->setQty($_POST['qty']);
                    $obInsert->setDescription($_POST['Description']);
                    $obInsert->setItemDate(date('Y-m-d H:i:s'));
                    $obInsert->setSupplierName($_POST['SupplierName']);
                    $obInsert->setSupplierMail($_POST['SupplierMail']);

                    if ($obInsert->insert()) {

                        header('location: AddItem.php?insert=1');

                    } else{

                        header('location: AddItem.php?insert=0');
                    }

                    break;      
                default:
                    header('location: AddItem.php');
                    break;
            }
        }
    }

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

        $object = new action;
    }

AddItem.php

Чтобы получить бренд и ItemName из базы данных. Бренд меняется в зависимости от ItemName.

<?php
require_once ('GetBrand.php');
$ItemName = LoadItemName();

?>

   $(document).ready(function(){
        $("#ItemName").change(function(){
          var aid = $("#ItemName").val();
          $.ajax({
             url: 'GetBrand.php',
             method: 'post',
             data: 'aid=' + aid
           }).done(function(brand){
             console.info(brand);
             brand = JSON.parse(brand);
             $('#brand').empty();
             brand.forEach(function(bnamee){
             $('#brand').append('<option>' + bnamee.brand + '</option>')
             })
           })
         })
        })

Форма

<form name = "form0" method = "post" action = "Action.php">
    <div class = "form-group">
         <label for = "text">Item No</label>
         <input type = "text" name = "ItemNo" id = "ItemNo" placeholder = "Item No" required>
     </div>
     <form name = "form1" action = "AddItem.php" method = "post">
          <div class = "form-group">
              <label for = "text">Item Name</label>
              <table>
                 <tr>
                    <td><select name = "ItemName" id = "ItemName" required>
                    <option value = "" disabled = "" selected>Select Name</option>
                    <?php foreach($ItemName as $iname)
                        echo "<option id='".$iname['ItemNo']."' value='".$iname['ItemNo']."'>".$iname['ItemName']."</option>";
                    ?>
                  </select></td>
                  <td><label for = "text">Add Item Name : </label></td>
                  <td><input type = "text" name = "name" id = "name"> </td>
                  <td><button>Add</button></td>
                </tr>
             </table>
         </div>
         <div class = "form-group">
             <label for = "text">Brand Name</label>
             <table>
                <tr>
                   <td><select name = "brand" id = "brand" required>
                   <option value = "">Select Brand</option>
                   </select></td>
                   <td<label for = "text">Add Brand : </label></td>
                   <td><input type = "text" name = "Bname" id = "Bname"  class = "form-control" > </td>
                   <td><button>Add</button></td>
               </tr>
           </table>
        </div>
     </form>
     <div class = "form-group">
        <label for = "text">Quantity</label>
        <input type = "text" name = "qty" id = "qty" placeholder = "Quantity" required>
     </div>
     <div class = "form-group">
        <label for = "text">Item Description</label>
        <input type = "text" name = "Description" id = "Description" placeholder = "Description" required>
      </div>
      <div class = "form-group">
          <label for = "text">Date</label>
          <input type = "date" name = "ItemDate" id = "ItemDate" required>
      </div>
      <div class = "form-group">
          <label for = "text">Supplier Name</label>
          <input type = "text" name = "SupplierName" id = "SupplierName"  placeholder = "Supplier Name" required>
      </div>
      <div class = "form-group">
          <label for = "text">Supplier Mail</label>
          <input type = "text" name = "SupplierMail" id = "SupplierMail" placeholder = "Supplier Mail" required>
       </div><br/>
       <div class = "form-group">
           <button id = "submit" name = "submit" value = "insert">Insert</button>
           <?php 
              if (isset($_GET['insert']) && ($_GET['insert'] == 1)){
                echo "Inserted Successfully ";
              }else // This else part is running when the page is loading 
                echo "Ooops..! Something went wrong.";
              }
           ?>
       </div>
     </form> 

Пожалуйста, добавьте минимальный код

Zain Farooq 26.04.2019 09:33

Как говорит @ZainFarooq, пожалуйста, смотрите здесь

TessavWalstijn 26.04.2019 09:34

Хорошо, я отредактирую это

user9282052 26.04.2019 09:39

@GaganiSenarathne, что именно ты хочешь здесь сделать? этот код беспорядочный и слишком много. Вы сделали базовую отладку? какие-либо ошибки?

Vishwa 26.04.2019 09:47

На самом деле я понятия не имею, как это сказать. Я новичок в php. И нет, я не занимался отладкой. Я пытался сказать, что в моем коде есть проблема, и я не знаю, как ее решить. И это заняло у меня 3 дня.. Но это не решило. Дело в том, что есть еще часть (я тоже это прокомментировал), когда AddItem.php запускает эту часть else.

user9282052 26.04.2019 09:52

Итак, если вы не знаете, почему этот код не работает должным образом, и вы не можете сказать, что точно должен делать этот код, откуда нам знать?

Nico Haase 26.04.2019 10:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
      <?php 
          if (isset($_GET['insert']) && ($_GET['insert'] == 1)){
            echo "Inserted Successfully ";
          }else // This else part is running when the page is loading 
            echo "Ooops..! Something went wrong.";
          }
       ?>

вы удивлены, что это работает?

Здесь вы сказали, что если есть параметр $_GET, называемый вставкой, и он равен 1, то эхо "вставлено..." в любой другой ситуации, которая может существовать, эхо "упс..."

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

if (isset($_POST['submit'])) {
///add in your checks to
}

или, возможно, более подходящим для вас будет

if (isset($_GET['insert']) {

          if ($_GET['insert'] == 1)){
            echo "Inserted Successfully ";
          } else {// you're missing a brace here 
            echo "Ooops..! Something went wrong.";
          }
}

дело в том, что ваш код всегда будет работать, независимо от того, в данный момент, потому что это if/else, то есть сделай это или сделай это, но вы хотите сказать, что iф а - делайте б или с, иначе ничего не делать. Я думаю, вам нужно попытаться понять, как именно работают условные выражения.

Другие вопросы по теме