@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;
}


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

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

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

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

Войти через центр авторизации
Похожие вопросы