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


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

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

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

sale tableprint_for_sale table

Вот мой 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);

} 

?>

Я также собираюсь прикрепить скриншот страницы выбора, чтобы вы могли увидеть разметку на случай, если она помогает.

markup

Редактировать: (Я добавляю 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');
 ?> 

Теперь я заметил, что в таблицу продаж не поступают данные.. Есть только print_for для продажи. Все еще неверные данные. Те же удостоверения личности... Почему? :(

Это единственное сообщение об ошибке, которое я получаю, когда использую код ini_set('отображение_ошибок', true); сообщение об ошибке (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, которая, даже когда я использую другого пользователя (и она отображается нормально в таблице продаж), все равно показывает тот же идентификатор продаж и ту же цену print_price, которая всегда равна 25). И в этом случае я никогда не выбирал ничего стоимостью 25 долларов. -

sale_nowprint_for_sale_now

Author: Isaac Bennetch, 2015-02-19

2 answers

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

$selectsale = "select * 
from sale";

$resultsale = mysql_query($selectsale);

while($linesale = mysql_fetch_assoc($resultsale))
{
 $sale_id = $linesale["sale_id"];
}
 2
Author: Fata1Err0r, 2015-02-19 17:14:16

При выходе из системы вы должны уничтожить свои сеансы

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

<?php 

session_start();
session_destroy();

?>

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

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

 1
Author: hakiko, 2015-02-19 17:18:59