База данных всегда получает одинаковые идентификаторы

Я надеюсь, что это не плохой вопрос. Я пытался понять, что я делаю неправильно, но я не могу.
Я довольно новичок в php и mysql, поэтому я очень запутался …

У меня есть эта база данных (я прикреплю скриншот модели MySQL Workbench)
база данных mysql

И я пытаюсь вставить продажи в таблицы sale и print_for_sale. Похоже, что запросы работают, и данные отображаются в phpmyadmin. Ошибка не появляется. Однако пользователь продажи в таблице продаж всегда имеет один и тот же идентификатор. Даже если я использую другой логин пользователя. А в таблице print_for_sale идентификатор fk_sale_id всегда имеет одинаковый идентификатор. И price_print_for_sale всегда одинакова. Этого не должно случиться. Что я делаю неправильно?
Может кто-нибудь мне помочь?
Спасибо!

стол для продажи
таблица 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:

user1

И для пользователя 2:
user2

кажется, что все в порядке, он распознает пользователя 1 и 2.
При совершении «новой покупки» продажа таблицы не обновляется, а таблица print_for_sale обновляется с тем же идентификатором продажи. Всегда 3 (как показано на скриншоте)

  • Я удалил все строки из продажи в phpmyadmin и попробовал еще раз. Работает. Продается стол вроде нормально. Единственная проблема в настоящее время — это таблица print_for_sale, которая, даже когда я использую другого пользователя (и она отображается нормально в таблице продаж), все равно показывает тот же sale_id и ту же price_print_price, которая всегда равна 25). И в этом случае я никогда не выбирал ничего, что стоило бы 25.

sale_now
print_for_sale_now

4

Решение

Дайте этому шанс. Кажется, что вы получаете тот же результат, потому что вы никогда не просматриваете свои результаты. Также убедитесь, что ваши имена полей в точности совпадают с именами полей в вашей БД.

$selectsale = "select *
from sale";

$resultsale = mysql_query($selectsale);

while($linesale = mysql_fetch_assoc($resultsale))
{
$sale_id = $linesale["sale_id"];
}
2

Другие решения

когда вы выходите из системы, вы должны уничтожить свои сессии

Я предполагаю, что у вас есть страница выхода из системы, например logout.php. В нем вы должны установить ниже строки. Если вы этого не сделаете, значения сеанса не могут измениться.

<?php

session_start();
session_destroy();

?>

Также, если вы сохраняете свой идентификатор пользователя в переменной сеанса, вам поможет только закрытие всех окон браузера, после чего вы снова откроете и войдите в систему.

Дополнительная информация для вас будущей жизни кода: ПОЧЕМУ ЗОП http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access—net-12059

1

По вопросам рекламы [email protected]