|
|
|
|
|
для: Nadyusha
(14.10.2007 в 20:25)
| | Ну тогда дальнейших успехов!
В каждом скрипте работающем с сессией, надо прописывать session_start(), чтобы продливать открытую сессию, если ваши скрипты вызываются индивидуально. А если вызов страниц идет через индексный файл с параметрами, например: index.php/orders?p=12, то достаточно session_start() прописать один раз, в файле index.php. Вот о чем я говорил. А $session['summa'] - это неверная запись получения переменной из сессии.
Да это и есть цикл (FOR), в нем последовательно перебираются все элементы формы, и если элементом оказывается элемент типа checkbox и он будет отмечен (checked), то его значение суммируется к переменной 'с'. После цикла эта переменная суммируется со значением выбранного опшена элемента SELECT. Вот и все. | |
|
|
|
|
 11.8 Кб |
|
|
для: sim5
(14.10.2007 в 08:18)
| | Да, я теперь многое поняла и запомню на долго! Хороший урок! Спасибо.
Вроде бы все сделала....
>когда прописываю этот же скрипт в форме, появляется сверху на странице скрипт в таком виде: $session['summa']
Писала потому, что Вы говорили,что надо прописывать в каждом скрипте. Но когда убрала написанное, ошибка пропала.
А функция подсчета суммы get_sum() в таком виде намного меньше места занимает и спокойнее работает! Это и есть цикл?
В файле Servers\usr\local\php\php.ini - register_globals = 0, ничего не меняла. | |
|
|
|
|
|
|
|
для: Nadyusha
(14.10.2007 в 07:09)
| | Это сообщение говорит: "Синтаксическая ошибка, неизвестная переменная в строке 10 файла delivery.php." Скорее это потому, что вы просто копируете себе в код то, что я вам пишу как пример.:) У вас ведь элементом в форме, который хранит сумму выбранных услуг, является:
<input type="hidden" name="result" value="">
|
Значит вы должны в скрипте, который принимает данные из формы записать:
<?php
session_start(); //помните о недопустимом выводе в браузер
if (isset($_POST['result'])) $_SESSION["summa"] = $_POST['result'];
?>
|
А мой пример $_POST['summa'] удалите. Теперь у вас в сессии будет находится сумма за выбранные услуги - $_SESSION["summa"], и вы можете вывести это значение на любой странице. Но перед выводом проверяйте, существует ли эта переменная:
<?php
session_start();
if (isset($_SESSION["summa"])) //ваши действия
?>
|
Теперь о $session["summa"] - найдите в файле Servers\usr\local\php5\php.ini строчку register_globals, проверьте, если она равна on или 1, то поставьте ей значение off или 0. Сохраните файл и если у вас был запущен сервер, то перезапустите его (чтобы изменения вступили в силу).
После этого всегда обращайтесь к сессии, как к элементу суперглобального массива:
$_SESSION["summa"] - как отмечено жирным.
Обратите внимание, у вас еще ошибка в записи - $POST_['summa'], вы должны писать так:
$_POST['summa'] - это тоже элемент суперглобального массива.
>когда прописываю этот же скрипт в форме, появляется сверху на странице скрипт в таком виде: $session['summa']
Про $session['summa'] я уже сказал, а вот что значит прописываю в форме, не понял, зачем? Прикрепите код вашей страницы полностью, чтобы посмотреть.
Функцию подсчета суммы get_sum() перепешите так:
<script>
function get_sum(f) {
var c = 0;
var s = eval(f.service.options[f.service.selectedIndex].value);
for (i=0; i<f.length; i++) {
if (f.elements[i].type == 'checkbox' && f.elements[i].checked)
c = c + eval(f.elements[i].value);
}
f.result.value = c + s;
}
</script>
|
Ну и добавить в каждый чекбокс вызов этой функции onclick="get_sum(this.form)", ну это у вас видимо наверняка сделано. Теперь вы можете в форму еще добавить (при необходимости) чекбоксов, при этом саму функцию редактировать не надо будет. | |
|
|
|
|
|
|
|
для: sim5
(13.10.2007 в 19:26)
| | Спасибо.
Такой вопрос: что может означать ошибка
Parse error: syntax error, unexpected T_VARIABLE in /home2/e4914306/public_html/delivery.php on line 10
|
в 10 строке:
$session["summa"] = $POST_['summa'];
|
Чтобы я не делала, не меняла, ошибка не исправляется...
И еще один вопрос: когда прописываю этот же скрипт в форме, появляется сверху на странице скрипт в таком виде: '.$session['summa'].''; ?>, почему, тоже не могу понять где искать ошибку....
PS. Я еще не научилась работать с CSS, и не умею пока создавать циклы, к сожалению, хотя знаю, что намного облегчает работу.... научусь обязательно, не все сразу. | |
|
|
|
|
|
|
|
для: Nadyusha
(13.10.2007 в 19:00)
| | Да нет, причина не в сессии, где то до этой строки вы допустили ошибку. Проверьте все внимательно. А эту строку в чистом виде РНР выведет без проблем.
PS. У вас в этой строке не закрыт тег FONT. Да и вообще, ну их к ляху на страницах, лучше тегу P указать необходимый стиль в CSS. | |
|
|
|
|
|
|
|
для: sim5
(13.10.2007 в 11:29)
| | Спасибо за четкие советы!
Голова уже кругом идет... сейчас ругается :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home2/e4914306/public_html/delivery.php on line 18
где в строке 18 стоит
print "<P ALIGN=CENTER><font color=#9900CC size=3 face=Tahoma> Hello! </P><BR>";
|
получается, когда я стартую сессию, я не могу ничего писать? | |
|
|
|
|
|
|
|
для: bronenos
(13.10.2007 в 12:17)
| | Почему, просто ляпсусов с передачей заголовков гораздо больше, и связаны они скорее не с тем, что первой строкой не прописаны.) | |
|
|
|
|
|
|
|
для: sim5
(13.10.2007 в 11:29)
| | я сидел с телефона и просто вот так высказал
а что, скажете, неправильно? ) | |
|
|
|
|
|
|
|
для: Nadyusha
(13.10.2007 в 07:06)
| | bronenos - ну че так скупо?))
Nadyusha - session_start() не обязательно первой строкой в скрипте должно быть прописано, главное чтобы до этой записи не было никакого вывода, например, echo, print, лементов HTML и прочее. И кроме того, даже пустых строк в коде, а так же пустых строк, пробелов перед <?php.
$_SESSION['summa'] выводится на старнице потому, что у вас сессия не рабоатет (вы ее стартуете не правильно, см. выше), нет такой переменной $_SESSION['summa'], вот вы и получаете это на странице. При правильном старте сессии, вы сможете увидеть ее запись в папке установленного Денвера. Они хранятся в папке tmp под такими именами, например, sess_1baff5e9f299f318eac761ca84ea8390. Это обычный текст и вы можете посмотреть его Блокнотом, возможно это вам потребуется когда либо.
Вы, как я вижу, добавили еще в форму чекбоксов. Можно конечно и так, как вы пишите, добавлять к общей сумме их значения, но если вы еще будете добавлять элементы, то лучше проверять отмеченные чекбоксы в цикле, суммировать значения выбранных, добавив затем их к общей сумме. | |
|
|
|
|
|
|
|
для: Nadyusha
(13.10.2007 в 07:06)
| | session start первой строчкой | |
|
|
|
|