Я надеюсь, что это не плохой вопрос. Я пытался понять, что я делаю неправильно, но я не могу.
Я довольно новичок в php и mysql, поэтому я очень запутался …
У меня есть эта база данных (я прикреплю скриншот модели MySQL Workbench)
И я пытаюсь вставить продажи в таблицы sale и print_for_sale. Похоже, что запросы работают, и данные отображаются в phpmyadmin. Ошибка не появляется. Однако пользователь продажи в таблице продаж всегда имеет один и тот же идентификатор. Даже если я использую другой логин пользователя. А в таблице print_for_sale идентификатор fk_sale_id всегда имеет одинаковый идентификатор. И price_print_for_sale всегда одинакова. Этого не должно случиться. Что я делаю неправильно?
Может кто-нибудь мне помочь?
Спасибо!
Вот мой PHP-код:
<?php
session_start();
$user_id = $_SESSION['user_id'];
print_r($_POST);
$id_print= $_POST['print_id'];
include('database.php');
$bought_sizes=$_POST['sizes'];
$number_of_bought_sizes= count($bought_sizes);//header('location:index.php?area=printstore');$sqlinsertsale = "insert into sale
(fk_sale_user,
fk_payment_id)
values(".$user_id.", 1)";
// оплата еще не определена, поэтому я использую 1 только для того, чтобы попробовать.
mysql_query($sqlinsertsale);for($i=0; $i< $number_of_bought_sizes; $i++){
$selectmultiple = "select *
from print_has_size
inner join size on fk_size_id = size_id
inner join print on fk_print_id = print_id
where print_id =".$id_print."";
$resultmultiple = mysql_query($selectmultiple);
$linemultiple = mysql_fetch_assoc($resultmultiple);
$size_price = $linemultiple["size_price"];$selectsale = "select *
from sale";
$resultsale = mysql_query($selectsale);
$linesale = mysql_fetch_assoc($resultsale);
$sale_id = $linesale["sale_id"];
//$sale_id = mysql_insert_id();
/*PARA CADA 1 DOS TAMNHO*/
$sqlinsertprintforsale = "insert into print_for_sale
(fk_sale_id,
price_print_for_sale)
values(".$sale_id.", ".$size_price.")";
mysql_query($sqlinsertprintforsale);
}
?>
Я также собираюсь прикрепить скриншот страницы выбора, чтобы вы могли видеть разметку, если она поможет.
Редактировать:
(Я добавляю код php, откуда я проверяю логин пользователя)
<?php
session_start();
include('database.php');
$user=mysql_real_escape_string($_POST['user_login']);
$pass=mysql_real_escape_string($_POST['user_pass']);
$sql="select user_id, user_name
from user
where
user_login='".$user."'
and user_pass = MD5('".$pass."')";
echo $sql;
$result = mysql_query($sql);
$num_of_regs = mysql_num_rows($result);
echo "<br>".$num_of_regs;
if($num_of_regs!=1) {
header('location:index.php?login=done');
}
else {
$line = mysql_fetch_assoc($result);
$user_name = $line['user_name'];
$user_id = $line['user_id'];$_SESSION['user_name'] = $user_name;
$_SESSION['user_id'] = $user_id;
header('location:index.php');}
?>
И я сделал систему выхода тоже.
<?php
session_start();
session_destroy();
header('location:index.php');
?>
Теперь я заметил, что таблица продаж не получает данные ..
Только принт_ для продажи есть. Неверные данные до сих пор. Те же идентификаторы … Почему? 🙁
Это единственное сообщение об ошибке, которое я получаю при использовании кода
ini_set (‘display_errors’, true); error_reporting (E_ALL);
Устаревший: mysql_connect (): расширение mysql устарело и будет удалено в будущем: вместо этого используйте mysqli или PDO в /Applications/XAMPP/xamppfiles/htdocs/printstore/database.php в строке 7
добавленной
echo $_SESSION['user_id'];
И это мой вывод для пользователя 1:
И для пользователя 2:
кажется, что все в порядке, он распознает пользователя 1 и 2.
При совершении «новой покупки» продажа таблицы не обновляется, а таблица print_for_sale обновляется с тем же идентификатором продажи. Всегда 3 (как показано на скриншоте)
Дайте этому шанс. Кажется, что вы получаете тот же результат, потому что вы никогда не просматриваете свои результаты. Также убедитесь, что ваши имена полей в точности совпадают с именами полей в вашей БД.
$selectsale = "select *
from sale";
$resultsale = mysql_query($selectsale);
while($linesale = mysql_fetch_assoc($resultsale))
{
$sale_id = $linesale["sale_id"];
}
когда вы выходите из системы, вы должны уничтожить свои сессии
Я предполагаю, что у вас есть страница выхода из системы, например logout.php. В нем вы должны установить ниже строки. Если вы этого не сделаете, значения сеанса не могут измениться.
<?php
session_start();
session_destroy();
?>
Также, если вы сохраняете свой идентификатор пользователя в переменной сеанса, вам поможет только закрытие всех окон браузера, после чего вы снова откроете и войдите в систему.
Дополнительная информация для вас будущей жизни кода: ПОЧЕМУ ЗОП http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access—net-12059