2015-02-19 3 views
4

Надеюсь, это не плохой вопрос. Я пытался понять, что я делаю неправильно, но не могу. Я довольно новый для PHP и MySQL, так что я действительно путает ...База данных всегда получает одинаковые идентификаторы

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

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

sale table print_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

Edit: (я добавляю код 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 ('display_errors', TRUE); error_reporting (E_ALL);

Запрещены: mysql_connect(): Расширение MySQL является устаревшим и будут удалены в будущее: использовать MySQLi или ПДО вместо этого в /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

+1

Можете ли вы показать нам, где вы устанавливаете '$ _SESSION [ 'user_id'];' –

+0

уже сделал @ CᴴᵁᴮᴮʸNᴵᴺᴶᴬ, спасибо! – Owly

+1

Поместите это в начало своего PHP, и это поможет сгенерировать некоторые сообщения об ошибках. Опубликуйте ошибки, которые вы получаете. 'ini_set ('display_errors', true); error_reporting (E_ALL); ' Кроме того, в вашем запросе на продажу я вижу, что вы устанавливаете переменную, но выполняете ли вы этот запрос? – Fata1Err0r

ответ

2

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

$selectsale = "select * 
from sale"; 

$resultsale = mysql_query($selectsale); 

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

Это определенно решило все мои проблемы! Спасибо огромное! :) Я использовал то же самое для цены ($ selectmultiple), и она отлично работала! – Owly

+1

Очень хорошо! :) Потому что 'mysql_fetch_assoc()' представляет собой массив, вы хотите, чтобы вы всегда бросали его в цикл, чтобы получить каждую строку (и выполнять любые другие функции, которые вы хотите в каждой строке), иначе она вернет один ряд для вас. Хотя это, похоже, не слишком много, YET, я бы рекомендовал читать mysqli vs mysql, поскольку mysqli предназначен для замены mysql. – Fata1Err0r

1

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

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

<?php 

session_start(); 
session_destroy(); 

?> 

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

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

+0

Спасибо @hakkikonu. Я попробовал это, и он по-прежнему делает то же самое. Но теперь я заметил, что таблица продажи больше не получает данные. Только print_for_sale – Owly

Смежные вопросы