В сеансе PHP, как я повторяю заполненное значение формы? - PullRequest
0 голосов
/ 28 января 2012

- Решение найдено -

Правильный код PHP представляет собой комбинацию двух ответов, предоставленных пользователем user1175332 ниже и shanethehat:

Правильный код HTML:

<?php session_start() ?>

<form method="post"  action="session7.php" id="form1">
<input type="text" name="book" value="" id="book"/> Book Box

<input type="submit" value="submit" id="submit" name="submit"/>


</form>

Правильный код PHP:

<?php session_start();
if ($_POST && isset($_POST['book'])) { 
    $_SESSION['book'] = $_POST['book']; 
} 
?>



<?php 

if (isset($_SESSION['book']) && $_SESSION['book'] > 0)

{echo $_SESSION['book'] . ' Book Box(es)';}

else {echo '';}


?>

Это работает в изолированной тестовой среде.К сожалению, он все еще не работает с той формой, которую я использую, возможно, из-за содержащегося в нем javascript.

----- Исходное сообщение -----

У меня естьформа, в которой пользователь заполняет количество для различных позиций (1 из X, 4 из Y и т. д.). После отправки формы он переносится на следующую страницу, где отображается цена на основе общего количества /громкость (эта часть работает благодаря ребятам из StackOverflow).

На следующей странице я пытаюсь отобразить каждый заполненный элемент (т. Е. Каждый элемент с количеством больше 0).Например, если у клиента есть 1 из X, 4 из Y, но 0 из Z, я хочу, чтобы на следующей странице отображалось:

1 X4 Y

Форма можно увидеть здесь .По какой-то причине я получаю сообщение об ошибке «Неопределенный индекс».

Вот код PHP:

<?php session_start();
    if ($_POST && !empty($_POST['TOTAL'])) {
        $_SESSION['TOTAL'] = $_POST['TOTAL'];
    }

    /* this part is the first problematic part*/
    if ($_POST && !empty($_POST['PROD_SP_1.5'])) {
        $_SESSION['PROD_SP_1.5'] = $_POST['PROD_SP_1.5'];
    }
?>
/* end of the first problematic part*/


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <title>Untitled 1</title>

</head>

<body>

/* this part is the second problematic part*/
<?php
    if ($_SESSION['PROD_SP_1.5'] > 0) {
        echo $_SESSION['PROD_SP_1.5'] . 'Book Box';
    }
    else {
        echo '';
    }
?>
/* end of the second problematic part*/

<!-- This part posts the total volume in Cubic Feet-->
<?php

    if (isset($_SESSION['TOTAL'])) {
        echo 'Your total volume is ' . round($_SESSION['TOTAL']) . ' Cubic Feet.';
    } else {
        echo 'You did not fill out any details. Please go back.';
    }
?>

<!-- End of volume posting -->

<br/><br/>

<!-- This part posts the correct price based on the total volume -->
<?php
    if ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 250) {
        echo 'The guaranteed price for door to door service is $1,899.00 based on 1 Section (up to     250CF).';
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 500) {
        echo 'The guaranteed price for door to door service is $3,349.00 based on 2 Sections (up to 500CF).';
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 750) {
        echo 'The guaranteed price for door to door service is $4,899.00 based on 3 Sections (up to 750CF).';
    } elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1000) {
        echo 'The guaranteed price for door to door service is $5,999.00 based on an exclusive 20ft Container.';
    }
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1250) {
        echo 'The guaranteed price for door to door service is $7,499.00 based on 5 Sections (up to     1,250CF).';
    }
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1500) {
        echo 'The guaranteed price for door to door service is $8,599.00 based on 6 Sections (up to 1,500CF).';
    }
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 1750) {
        echo 'The guaranteed price for door to door service is $9,499.00 based on 7 Sections (up to     1,750CF).';
    }
    elseif ($_SESSION['TOTAL'] > 0 && $_SESSION['TOTAL'] <= 2000) {
        echo 'The guaranteed price for door to door service is $9,999.00 based on an exclusive 40ft     Container.';
    }
    else {
        echo 'Sorry, your total volume is too high to quote online. Please contact us to set up an on-    site survey: 1.877.430.1300';
    }
?>

<!-- end of price section -->


</body>

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 января 2012
  1. Вы включили <?php session_start();?> на каждой странице? Это необходимо, если вы хотите использовать сеансы
  2. Я вижу, что вы устанавливаете $_SESSION['PROD_SP_1.5'] только если он не пустой. Я предлагаю установить его на 0, если он пуст, или изменить тест на if (isset($_SESSION['PROD_SP_1.5']) && $_SESSION['PROD_SP_1.5'] > 0)
0 голосов
/ 28 января 2012

Вы должны убедиться, что значение сеанса установлено, потому что условие далее на странице означает, что $_SESSION['PROD_SP_1.5'] может не существовать:

/* this part is the second problematic part*/
<?php
if (isset($_SESSION['PROD_SP_1.5']) && $_SESSION['PROD_SP_1.5'] > 0) {
echo $_SESSION['PROD_SP_1.5'] . 'Book Box';
}

Вам также следует использовать isset вместо empty при проверке идентификатора в массиве POST существует значение:

if ($_POST && isset($_POST['PROD_SP_1.5'])) {
...