sana17 Ответов: 1

Нужно вставить несколько записей в базу данных с помощью PHP и javascripts


Эй,
Я начинающих изучать РНР. Я учусь самостоятельно для некоторых будущих выстроенных задач.
Прямо сейчас я в замешательстве, как решить свою проблему и продолжить (это мой первый проект на php).

Я создал отдельный файл dbconnect.php файл для обработки базы данных. Он имеет два метода: один для получения соединения, а другой для извлечения записей, которые будут отображаться.

В другом файле скажем inventory.php я добавил следующие элементы управления с помощью php-кода.
c1. поле combobox (Select) для отображения названия элементов.
c2. поле ввода только для чтения в виде номера для отображения цены соответствующего товара.
c3. поле ввода только для чтения в виде номера для отображения доступного количества товара.
С4. Поле ввода как количество ввести количество для покупки.
c5. поле ввода только для чтения в виде числа для отображения расчетной общей цены с использованием купленного кол-ва и цены товара. (используя значения поля#2 и поля#4)
С5. Кнопку "Отправить", "Добавить" с OnAddClick функцию onclick''.
С6. На кнопку 'Оформить заказ с OnCheckOutClick функцию onclick''.

Определены OnAddClick и OnCheckOutClick в Javascript ( теги скриптов ) в одном файле. (см. код ниже)

Пока что что работает:
1. элементы заполняются в combox элементов (cmbItems) из базы данных.
2. при выборе товара из cmbItems в поля ввода вводятся его соответствующая цена, доступное количество и другие поля, извлеченные из базы данных.
3. После ввода купленного количества общее количество рассчитывается нормально.
4. Функция OnAddClick (когда кнопка "Добавить" нажата) Я вставил деталь элемента в 2d-массив, определенный в php, но полученный в javascript. (Несколько ордеров успешно добавляются в массив)
5. (выпуск) Мне нужно добавить эту запись массива в таблицу базы данных. как получить доступ к соединению с базой данных и запросить его из OnCheckOutClick??

Запросы:
Q1. является ли мой подход правильным, поскольку я сам обучаюсь, и я чувствую что-то плохое в объявлении полей в php-коде вместо HTML-тегов.
Q2. как вставить записи массива в БД? ( я напишу запрос, но мне нужно руководство, где это сделать и как получить доступ к объектам базы данных, как упоминалось выше в пункте 5)

Что я уже пробовал:

// Кодекс поведения dbconnect.php

<?php
function getConnection()
{
    static $conn;
    if($conn == null)
    {
        $hostname = "localhost";
        $username = "root";
        $password = "";
        $dbname = "invoicesystem";
        $conn = mysqli_connect($hostname, $username, $password, $dbname);
    }

    return $conn;
}

<pre>//GET RECORDS FROM INVOICE TABLE
function getInventoryRecords($connstr, $tag, $clause)
{
    if ( $connstr == null)
        return null;
    
    $query = null;
    if ( $tag == 0) // Select All Records
    {
       $query = "SELECT * FROM inventory";       
    }
    else if ( $tag == 1) // Select All Records with Category
    {
       $query = "SELECT inventory.Item, inventory.Item_Id, inventory.Price, inventory.Avb_Qty, categories.CategoryName FROM inventory inner join categories on Category = CategoryId";       
    }
    
    $result = null;
    
    if ( $query != null)
    {
        if($result = mysqli_query($connstr, $query))
        {
            if (mysqli_num_rows($result) > 0)
                return $result;        
        }
    }
    
    return null;
}

?>




// PHP-код в inventory.php ()

<html>
<head>
    <title>My Test Inventory System</title>
<div>
<h1 align ="center"> <font size="15" color="blue">My Grocery Store</font></h1>
</div>
</head>
<body>
<?php
include ("helpingFunctions.php");
include ("dbConnect.php");
include("NewCustomer.php");

?>
<div>
<h2 align ="left"> <font size="10" color="blue">Inventory</font></h2>
</div>   
    <div>
<?php

/* Variables and Declarations */
$custDetail = array(
    "Name" => "",
    "Id" => ""  ); 

$itemDetail = array(
    "Name" => "",
    "Category" => "",
    "CategoryId" => "",
    "Id" => "",
    "Category" => "",
    "Price" => 0,
    "AvbQty" => 0,
    "PurQty" => 0,
    "RemQty" => 0,
    "TotalPrice" => 0); 

$purchasedItems = array();
/* *****************************  */

/***************** FETCHING RECORD FROM INVOICE TABLE ****************** */
$dbConn = getConnection();
// Check connection
if($dbConn === false)
{
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
else
{
    // Print host information
  //  echo "Connected Successfully. Host info: " . mysqli_get_host_info($dbConn);
    //console.log("Connected Successfully. Host info: " . mysqli_get_host_info($dbConn));
}
// $dbConn is a connection variable defined in "dbconnect.php" 
$qresult = getInventoryRecords($dbConn, 1, null);
if($qresult != null)
{
       // echo "Data fetched successfully from table Inventory.<br><br>";
      // console.log("Data fetched successfully from table Inventory");
       
    // Start combo-box
        echo "Item Name:<select Id='cmbItems' onchange='OnItemChange()' autofocus>";
        echo "<option>Select Item</option>";

        // For each item in the results...
        while ($row = mysqli_fetch_array($qresult))
        {
          // Add a new option to the combo-box
          echo "<option data-Price='$row[Price]' data-AvbQty='$row[Avb_Qty]' data-Category='$row[CategoryName]' data-CategoryId='$row[CategoryId]' data-ItemId='$row[Item_Id]'>$row[Item]</option>";
        }
        // End the combo-box
        echo "</select>";    
}
else
{
       // No results found in the database
        echo "<br><br> No matching results found.";  
}

/* ************************************************************** */
echo "                 Category:  <input Id='txtCategory' type='text' readonly />";
echo "<br><br>Price:  <input Id='txtPx' type='number' readonly value='0' />";
echo "<br><br>Quantity Purchased: <input Id='txtQty' type='number' min='1' max='100' value = '0' onchange='OnQtyChange()' />";
echo "            Available Quantity: <input Id='txtAvbQty' type='number' value='0' readonly />";
echo "<br><br>Total Price: <input Id='txtTotPx' type='number' value ='0' readonly/>";
echo "<br><br><br> <input Id='btnAdd' type='submit' value='Add Item' onclick='OnAddItemClick()'/>";
echo "    <input Id='btnCheckOut' type='submit' value='Check Out' onclick='OnCheckOutClick()'/>";
echo "    <input Id='btnClear' type='submit' value='Clear' onclick='OnClearClick()'/>";
 //close connection
 mysqli_close($dbConn);

 
 ?>
</div>
</body>

// JavaScript в inventory.php
<script>
    
var var_CustDetails = <?php echo json_encode($custDetail, JSON_PRETTY_PRINT) ?>;
var var_ItemDetails = <?php echo json_encode($itemDetail, JSON_PRETTY_PRINT) ?>;
var Arr_Records = <?php echo json_encode($purchasedItems, JSON_PRETTY_PRINT) ?>;
var var_clearOnDemand = 0;  // false
var var_counter = 0;

$comboItems = document.getElementById("cmbItems");
$txtBxPrice = document.getElementById("txtPx");
$txtBxAvbQty = document.getElementById("txtAvbQty");
$txtBxQty = document.getElementById("txtQty");
$txtBxCategory = document.getElementById("txtCategory");
$txtBxTotPx = document.getElementById("txtTotPx");

function OnAddItemClick()
{
    var_counter++;
    Arr_Records.push([var_ItemDetails.Id, var_ItemDetails.Item, var_ItemDetails.CategoryId, var_ItemDetails.Category, var_ItemDetails.Price, var_ItemDetails.AvbQty, var_ItemDetails.PurQty,
        var_ItemDetails.RemQty, var_ItemDetails.TotalPrice]);
  
   ClearFields(); 
}

function OnCheckOutClick()
{         
    // What to code to add records of array Arr_Records in database.
}

function ClearFields()
{
// some code to reset fields to default values.
}

</script>

1 Ответов

Рейтинг:
1

RickZeeland

Может быть, с помощью ОЗР чтобы все было проще, вот обзор: https://www.slant.co/topics/5639/~в PHP-платформы[^]

Вы также можете быть заинтересованы в: https://www.slant.co/topics/1059/~самое лучшее-ресурсы в освоении-на PHP[^]