Задать вопрос
@Kristina8787

Почему не видит переменную, и не записывает в базу данные?

Изучаю php по видеоурокам Игоря Борисова, т.к. видела ,что здесь на форуме для изучения php советуют именно его уроки. Столкнулась с бедой критической, документации на 2й модуль нет,чтобы сравнить с исходниками, сначала при обработке данных нового заказа с помощью кода
require "inc/lib.inc.php";
require "inc/config.inc.php";

$name= clearStr($_POST["name"]);
$email= clearStr($_POST["email"]);
$phone= clearStr($_POST["phone"]);
$address= clearStr($_POST["address"]);
$oid = $basket["orderid"];
$dt = time();
$order = "$name|$email|$phone|$address|$oid|$dt\n";
file_put_contents("admin/".ORDERS_LOG, $order, FILE_APPEND);
saveOrder($dt);

возникла проблема, не выводит введенные данные кроме $oid и $dt , в orders.log выводит вот в таком виде ||||5e6f1405b1eef|1584430014

вот сама функция saveOrder()
function saveOrder($datetime){
	global $link, $basket;
	$goods = myBasket();
	$stmt = mysqli_stmt_init($link);
	$sql='INSERT INTO orders (title,author,pubyear,price,quantity,orderid,datetime)
	VALUES (?, ?, ?, ?, ?, ?, ?)';
	if(!mysqli_stmt_prepare($stmt, $sql))
	return false;
	foreach($goods as $item){
		mysqli_stmt_bind_param($stmt, "ssiiisi", $item['title'], $item['author'], $item['pubyear'], $item['price'], $item['quantity'], $item['orderid'], $datetime);
		mysqli_stmt_execute($stmt);
	}
	mysqli_stmt_close($stmt);
	removeBasket();
	return true;
}


сам $link и ORDER_LOG вот
const DB_HOST = "localhost";
const DB_LOGIN = "root";
const DB_PASSWORD = "";
const DB_NAME = "eshop";

const ORDERS_LOG = "orders.log";

$basket = [];
$count = 0;

$link=mysqli_connect(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME);

basketInit();

решила что продолжу пока не решив этой проблемы,но при добавлении новой функции,он ругается на то что не знает $link, вот сама функция
getOrders(){
	global $link;
	if(!is_file(ORDERS_LOG))
	return false;
	/* получаем в виде массива персональные данные пользователя из файла*/
	$orders = file(ORDERS_LOG);
	/*массив который будет возвращен функцией*/
	$allorders = [];
	foreach ($orders as $order){
		list($name, $email, $phone, $address, $orderid, $date) = explode("|", $order);
		/*Промежуточный массив для хранения информации о конкретном заказе */
		$orderinfo = [];
		/*сохранение информации о конкретном пользователе*/
		$orderinfo["name"] = $name;
		$orderinfo["email"] = $email;
		$orderinfo["phone"] = $phone;
		$orderinfo["address"] = $address;
		$orderinfo["orderid"] = $orderid;
		$orderinfo["date"] = $date;
		/* SQL-запрос на выборку из таблицы orders всех товаров для конкретного покупателя*/
		$sql = "SELECT title, author, pubyear, price, quantity FROM orders WHERE orderid = '$orderid' AND datetime = $date";
		/*Получение результата выборки*/
		if(!$result = mysqli_query($link, $sql))
		return false;
		$items = mysqli_fetch_all($result, MYSQLI_ASSOC);
		mysqli_free_result($result);
		/*Сохранение результата в промежуточном массиве*/
		$orderinfo["goods"] = $items;
		/*добавление промежуточного массива в возвращаемый массив*/
		$allorders[]=$ordersinfo;
	}
	return $allorders;
}


Помогите разобраться в чем дело((
  • Вопрос задан
  • 274 просмотра
Подписаться 1 Простой 11 комментариев
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
причин может быть две

1. Функция clearStr(). Выкинуть её на помойку в любом случае. Ничего нужного или полезного в такой функции не может быть по определению.
2. В $_POST["name"] пусто. Надо проверить форму.

Ну и судя по этому коду, видеоуроки Игоря Борисова рекомендовать не следует. Обычный говнокодер который возомнил себя звездой ютуба
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы