Нужно вставить несколько записей в базу данных с помощью 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>