@Kristina8787

Какие значения вставлять в VALUE?

Я вам наверно уже надоела, но я перебрала все значения уже, мы имеем вот такую функцию сохранения данных и внесения их в БД
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;
}

в которую надо подставить значения, но чтобы я не подставляла будь то просто значения или переменные,в БД ничего не записывается, эта функция берет значения из функции
function myBasket(){
	global $link, $basket;
	$goods = array_keys($basket);
	array_shift($goods);
	if(!$goods)
		return false;
		$ids = implode(",", $goods);
		$sql = "SELECT id, author, title, pubyear, price FROM catalog WHERE id IN($ids)";
		if(!$result = mysqli_query($link, $sql))
		return false;
		$items = result2Array($result);
		mysqli_free_result($result);
		return $items;
}

в которой хранятся те значения которые и должны подставляться в первую функцию, вот код который обрабатывает введенные данные пользователем при оформлении заказа
$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);

который в свою очередь берет значения из кода
<form class="" action="saveorder.php" method="post">
      <label for="">Заказчик</label>
      <input type="text" name="name" id="name" value=""><br /><br />
      <label for="">Email заказчика: </label>
      <input type="text" name="email" id="email" value=""><br /><br />
      <label for="">Телефон для связи: </label>
      <input type="text" name="phone" id="phone" value=""><br /><br />
      <label for="">Адрес доставки: </label>
      <input type="text" name="address" id="address" value=""><br /><br />
      <input type="submit" name="" value="Заказать">
    </form>

Последняя форма успешно уходит в предпоследнюю, где она записывается в обьявленый константой файл,. После второй сверху функции, данные о том какие и сколько продуктов выбрал пользователь отображаются успешно в корзине,затем третья сверху форма успешно записывается в файл,а вот когда уже первая сверху функция начинает обрабатывать,то получается массив с данными пользователя,в котором помимо ячеек с данными имеется массив с продуктами который он выбрал,он пустой, получается вот такое
[1] => Array
        (
            [name] => petr
            [email] => petra@mail.ru
            [phone] => 12345
            [address] => gorod
            [orderid] => 5e7307f462384
            [date] => 1584597690

            [goods] => Array
                (
                )

        )

помогите разобраться и пофиксить,чтобы в массиве goods появились выбранные товары, заранее спасибо
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Я щас опять банальщину немного прогоню, но на будущее и в помощь:
1) Не надо использовать global, это плохо, это говорит о том, что вы что-то делаете не так, совсем не так, и скоро ваши проблемы усугубятся многократно. На этом этапе надо включить голову, подумать почему так вышло, и переделать, пока не слишком поздно и код не превратился в добротное гуано.

2) Пока вы учитесь и не можете "на глаз" прикинуть что и как работает и почему работает так, а не иначе - var_dump() - ваш рулевой, если что то не работает - начиная от точки отказа и назад к источнику по порядку - фигачете вардамп всего что движется. Так во первых вы найдете что не работает гораздо быстрее нежели на форумах или тут, а во вторых будете попутно делать для себя массу открытий, что все работает вовсе не так как вы думали и содержит не то что вы подразумевали.

Есть более продвинутые инструменты а ля xdebug, как созреете - можете на него переходить, это гораздо эффективнее. Но на первом этапе хватит и вардампа.
Ответ написан
Ваш ответ на вопрос

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

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