[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простая корзина покупок
freed-master
Решил написать простенькую корзину покупок. Но что-то пока не складывается. То что получилось:

<?php
session_start();
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];

foreach ($_SESSION['cart'] as $code => $qty) {
echo "Артикул: $code Количество: $qty";
}
?>
<form action="<? echo $PHP_SELF?>" method="POST">
Товар 1<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="001" />
<input name="submit" type="submit" value="Добавить" />
</form>
<form action="<? echo $PHP_SELF?>" method="POST">
Товар 2<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="002" />
<input name="submit" type="submit" value="Добавить" />
</form>

Дело вот в чем:

1) Добавляю сколько-нибудь штук товара 1 - Все замечательно: видно артикул товара и добавленное количество.
2) Добавляю сколько-нибудь штук товара 2 - И вот тут то начинается бяка: видно только артикул и добавленное количество товара 2, но исчезли данные по товару 1.

Как сделать так что бы при добавлении товара 2, данные о нем добавлялись ниже, а не заменяли уже имеющиеся?



Спустя 27 минут, 56 секунд (18.01.2009 - 22:28) sergeiss написал(а):
Я сначала написал ответ, потом его переделываю smile.gif У тебя же 2 формы!!! Поэтому, когда ты выбираешь данные в форме 2, то данные из формы 1 никуда не передаются. И наоборот.

В случае одной формы (наиболее разумный тут вариант), должны быть разные имена. А у тебя для разных товаров используются одни и те же имена: code, submit (это в случае, если ты объединишь их в одну форму). Последнее из введенных с одинаковым именем "перебивает" все ранее введенные. Т.е., если бы у тебя было 10 input с именем code, и во все были бы введены данные, то только последний реально работал бы.

Вывод:
1. Делай одну форму.
2. Делай уникальные имена и анализируй, что же было выбрано.

Спустя 11 минут, 50 секунд (18.01.2009 - 22:40) Adamant написал(а):
sergeiss а вот и нет. Когда данные приходят из первой формы создается $_SESSION['cart']['001']. Когда из второй создается $_SESSION['cart']['002']. И Данные ($_SESSION['cart']['001'] и $_SESSION['cart']['002']) друг друга никак не затирают и не исчезают. У меня все прекрасно работает (ради интереса проверил на локалке и у себя на сайте):
PHP
<?php
session_start
();
if (isset($_POST['qty'])) {
    $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
}
if (isset($_SESSION['cart'])) {
    foreach ($_SESSION['cart'] as $code => $qty) {
        echo "Артикул: $code Количество: $qty <br />\n";
    }
}
?>
<form method="POST">
Товар 1<input type="text" name="qty" />шт.
  <input type="hidden" name="code" value="001" />
  <input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">
  Товар 2<input type="text" name="qty" />шт.
  <input type="hidden" name="code" value="002" />
  <input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">
  Товар 3<input type="text" name="qty" />шт.
  <input type="hidden" name="code" value="003" />
  <input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">
  Товар 4<input type="text" name="qty" />шт.
  <input type="hidden" name="code" value="004" />
  <input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">
  Товар 5<input type="text" name="qty" />шт.
  <input type="hidden" name="code" value="005" />
  <input name="submit" type="submit" value="Добавить" />
</form>

Спустя 2 часа, 9 минут, 56 секунд (19.01.2009 - 00:50) freed-master написал(а):
Adamant, огромнейшая благодарность. Наконец-то можно двигаться дальше.

Пока вроде бы все отлично, кроме одной, даже не знаю как назвать, короче вот:

При просмотре корзины отображается следующее:

Артикул: Количество:
Артикул: 001 Количество: 12
Артикул: 002 Количество: 25
Артикул: 003 Количество: 34

Как можно избавиться от первой строки с пустыми значаниями?

Спустя 10 минут, 36 секунд (19.01.2009 - 01:01) freed-master написал(а):
Немного подумал, решение само пришло, аж сам удивился как все просто:

<?php
session_start();
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];
?>
<table>
<tr><td>Артикул</td><td>Количество</td></tr>
<?php
foreach ($_SESSION['cart'] as $code => $qty) {
echo "<tr><td>$code</td><td>$qty</td></tr>\n";
}
?>
</table>
<form method="POST">Товар 1
<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="001" />
<input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">Товар 2
<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="002" />
<input name="submit" type="submit" value="Добавить" />
</form>

Спустя 38 минут, 47 секунд (19.01.2009 - 01:39) freed-master написал(а):
Вот какой вопросик:

Как вывести сумму всех товаров корзины в нужном месте?

Спустя 6 часов, 56 минут, 9 секунд (19.01.2009 - 08:36) Sephiroth_Lukaw написал(а):

Спустя 5 часов, 10 минут, 25 секунд (19.01.2009 - 13:46) freed-master написал(а):
Sephiroth_Lukaw, пасиб огромное! Все получилось:

<?php
session_start();
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];
$a = $_SESSION['cart'];
?>
<table>
<tr><td>Артикул</td><td>Количество</td></tr>
<?php 
foreach ($_SESSION['cart'] as $code => $qty) {
    echo "<tr><td>$code</td><td>$qty</td></tr>\n";
}
?>
<tr><td colspan="2"><?php echo "товаров на сумму: " .array_sum($a); ?></td></tr>
</table>
<form method="POST">Товар 1
<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="001" />
<input name="submit" type="submit" value="Добавить" />
</form>
<form method="POST">Товар 2
<input type="text" name="qty" />шт.
<input type="hidden" name="code" value="002" />
<input name="submit" type="submit" value="Добавить" />
</form>

Тема на этом не закрывается. Вопросы еще возможно будут.

Если нет, то скоро выложу код готового скрипта, с возможностью настойки под любой дизайн. Быть может кому то еще пригодится!

Спустя 4 часа, 58 минут, 43 секунды (19.01.2009 - 18:45) freed-master написал(а):
Как и предполагалось вопросы не закончились. Столкнулся вот с чем:

Нужно передавать в $_SESSION не только Артикул, но и Название товара.
Т.е. получается такая форма:

HTML
<form method="POST">
<input type="text" name="qty" />
<input type="hidden" name="code" value="001" /> <!-- Артикул -->
<input type="hidden" name="ware" value="Ручка" /> <!-- Название -->
<input name="submit" type="submit" value="Добавить" />
</form>


Но вот никак не разбирусь как дополнить строку:

PHP
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];

Спустя 36 минут, 25 секунд (19.01.2009 - 19:21) Adamant написал(а):
PHP
<?php
session_start
();

if (isset($_POST['qty'])) {
    $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
    $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    
$a $_SESSION['cart'];
}
?>

<table>
  <tr>
    <td>Артикул</td>
    <td>Наименование товара</td>
    <td>Количество</td>
  </tr>

  <tr>
    <td colspan="3"><hr></td>
  </tr>

<?php
if 
(isset($_SESSION['cart'])) {
    foreach ($_SESSION['cart'] as $code => $qty) {
        echo "  <tr>\n";
        echo "    <td>$code</td>\n";
        echo "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
        echo "    <td>$qty</td>\n";
        echo "  </tr>\n";
    }
}
?>

  <tr>
    <td colspan="2"><?php echo "Общее количество товаров: " . array_sum($a); ?></td>
  </tr>
</table>

<br/>

<form method="POST">
  Товар 1  <input type="text" name="qty"/>  шт.
  <input type="hidden" name="code" value="001"/>   <!-- Артикул -->
  <input type="hidden" name="ware" value="Ручка"/> <!-- Название -->
  <input name="submit" type="submit" value="Добавить"/>
</form>

<form method="POST">
  Товар 2 <input type="text" name="qty"/> шт.
  <input type="hidden" name="code" value="002"/>
  <input type="hidden" name="ware" value="Карандаш"/>
  <input name="submit" type="submit" value="Добавить"/>
</form>


Не пойму, почему вы так упорно избегаете проверки существования переменных? У вас либо отключено в php.ini вывод ошибок, или вас устраивают сообщения в браузере например такие
Notice: Undefined variable: a in C:\wamp\www\temp\test.php on line 25

Для отладки советую в php.ini включить все ошибки. error_reporting = E_ALL
Или же в начале каждого скрипта писать - error_reporting(E_ALL);, что на мой взгляд не очень удобно.
В противном случаю вы не будете знать в чем же причина когда скрипт будет неправильно работать или вообще отказываться работать.

Спустя 58 минут, 34 секунды (19.01.2009 - 20:20) freed-master написал(а):
У меня в пхп.ини строка: "error_reporting = E_ALL & ~E_NOTICE" и при этом никаких ошибок не вылазело.

Не меняя эту строку, использовал приведенный выше код и теперь вылазиет это:

Warning: array_sum() [function.array-sum]: The argument should be an array in Z:\home\localhost\www\000.php on line 34

на сколько я понял не определена $a или я плохо понял?

Спустя 48 минут, 53 секунды (19.01.2009 - 21:09) Adamant написал(а):
Пардон, не заметил в вашем скрипте этой строчки
$a = $_SESSION['cart'];
И в предыдущем своем посте исправил код.
Но в таком случае, вам следовало бы написать не "товаров на сумму: ", а общее количество товаров: , потому как у вас подсчитывается их общее число, а не цена, о которой в скрипте просто нигде не упоминается!
Если же вы все таки хотите выводить именно сумму, тогда вопрос, а откуда будут браться цены на товар, нужно его будет суммировать и тогда только выводить на печать. Давайте подумаем и постараемся все это реализовать, сначала сами попытайтесь это сделать, а если будут вопросы, с удовольствие вам здесь помогут.
user posted image

Спустя 1 час, 35 минут, 19 секунд (19.01.2009 - 22:44) freed-master написал(а):
Нет все правильно, просто опечатка. Мне нужно именно общее количество товаров.

Но почему то мой браузер все равно выдает ту же ошибку.
А после добавления товара она исчезает.

Спустя 7 часов, 40 минут, 55 секунд (20.01.2009 - 06:25) Sephiroth_Lukaw написал(а):
Цитата ("Adamant")
if (isset($_POST['qty'])) {
    $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
    $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    $a = $_SESSION['cart'];
}
PHP
if (isset($_POST['qty'])) {
    $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
    $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
}
$a = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();

Спустя 2 часа, 59 минут, 5 секунд (20.01.2009 - 09:24) freed-master написал(а):
Sephiroth_Lukaw, Благодарю - все супер!

Спустя 9 часов, 15 минут, 6 секунд (20.01.2009 - 18:39) freed-master написал(а):
А можно ли в скрипт добавить какой-то счетчик для генерации номера заказа?

Спустя 1 час, 44 минуты, 44 секунды (20.01.2009 - 20:24) Adamant написал(а):
Цитата (freed-master @ 20.01.2009 - 22:39)
А можно ли в скрипт добавить какой-то счетчик для генерации номера заказа?

Что должен счетчик считать?
Каким образом генератор должен генерировать номера заказа.
Номер заказа - порядковый или...?

Вы бы лучше более конкретно объяснили что хотите получить в результате. Лично я вашу мысль не уловил.
user posted image

Спустя 1 час, 22 минуты, 38 секунд (20.01.2009 - 21:46) freed-master написал(а):
Ну, корзина уже есть. Данные из неё выводятся на страницу оформления заказа в виде таблицы. Теперь нужно присвоить этому заказу порядковый номер.

Попутно ещё вопросик: ниже этой таблицы есть форма обратной связи, данные с её полей отправляются на мыло. Как прикрепить к этой форме данные таблицы, что б они тоже высылались на мыло?

Спустя 2 часа, 33 минуты, 36 секунд (21.01.2009 - 00:20) Adamant написал(а):
PHP
<?php
session_start
();

if (!isset($_POST['order'])) {
    if (isset($_SESSION['error'])) {
        echo "<h4>" . $_SESSION['error'] . "</h4>";
        unset($_SESSION['error']);
    }   
 
    if 
(isset($_POST['qty'])) {
        $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
        $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    }

    $a = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
    ?>
 
<table>
  <tr>
    <td>Артикул</td>
    <td>Наименование товара</td>
    <td>Количество</td>
  </tr>

  <tr>
    <td colspan="3"><hr></td>
  </tr>

    <?php
    if 
(isset($_SESSION['cart'])) {
        foreach ($_SESSION['cart'] as $code => $qty) {
            echo "  <tr>\n";
            echo "    <td>$code</td>\n";
            echo "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
            echo "    <td>$qty</td>\n";
            echo "  </tr>\n";
        }
    }
    ?>

  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><?php echo "Общее количество товаров: " . $_SESSION['ammount_com'] = array_sum($a); ?></td>
  </tr>
</table>

<br/>

<form method="POST">
  Товар 1  <input type="text" name="qty"/>  шт.
  <input type="hidden" name="code" value="001"/>   <!-- Артикул -->
  <input type="hidden" name="ware" value="Ручка"/> <!-- Название -->
  <input name="submit" type="submit" value="Добавить"/>
</form>

<form method="POST">
  Товар 2 <input type="text" name="qty"/> шт.
  <input type="hidden" name="code" value="002"/>
  <input type="hidden" name="ware" value="Карандаш"/>
  <input name="submit" type="submit" value="Добавить"/>
</form>

<br />

    <h4>Форма обратной связи, данные с её полей отправляются на мыло</h4>

      <!--  Желательно сделать проверку данных формы с помощью jаvаscript   -->
      <form method="POST">
         Ваше имя <input type="text" name="user_name"/>
         <br />
         Ваш email <input type="text" name="user_email">
         <br />
         <input name="order" type="submit" value="Подтвердить заказ"/>

<?php
} else {
    if (//делаем проверку входящих данных) {
        //если проверка не пройдена 
        $_SESSION['error'] = 'Вы не указали .....';
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    } else {
        // считываем число произведенных заказов из файла 
        $order_number_file = 'Файл с числом произведенных регистраций';
        $order_num = file_get_contents($order_number_file) + 1;
        // перезаписываем файл нумерации заказов
        file_put_contents($order_number_file, $order_num);
        
        $email_message 
= "Номер заказа: " . $order_num . "\n";
        $email_message = $_POST['user_name'] . "\n";
        $email_message = $_POST['user_email'] . "\n";
        foreach ($_SESSION['cart'] as $code => $qty) {
            $email_message .=  "<table>\n";
            $email_message .= "  <tr>\n";
            $email_message .=  "    <td>$code</td>\n";
            $email_message .=  "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
            $email_message .=  "    <td>$qty</td>\n";
            $email_message .=  "  </tr>\n";
            $email_message .=  "  <tr>\n";
            $email_message .=  "    <td colspan=2> Общее количество товаров: " .  $_SESSION['ammount_com'] . "</td>\n";
            $email_message .=  "  </tr>\n";
            $email_message .=  "</table>\n";
         }
        mail('freed-master@phpforum.ru', 'Тема заказа', $email_message);
      
         echo 
"<h4>Поздравляем! Ваш заказ принят.</h4>\n";
         echo "Номер вашего заказа: <b> $order_num </b>\n"; 
         
// стираем данные сессии
         unset($_SESSION);
    }
}

Спустя 1 день, 20 часов, 50 минут, 12 секунд (22.01.2009 - 21:10) Guest написал(а):
Adamant, спасибочки. Щас чуток занят, на днях обязательно гляну код и напишу по этому оводу.

Спустя 14 часов, 42 минуты, 14 секунд (23.01.2009 - 11:52) Guest написал(а):
Почему то мой браузер выдает ошибку:

Parse error: syntax error, unexpected ';' in Z:\home\localhost\www\cart2.php on line 81

Странно...

Спустя 9 часов, 33 минуты, 23 секунды (23.01.2009 - 21:26) Adamant написал(а):
Все правильно, я же вам не полный код выложил! Вот здесь вы должны прописать сами, я же не знаю какие данные у вас в форме:
Цитата (freed-master @ 21.01.2009 - 01:46)
форма обратной связи, данные с её полей отправляются на мыло

Вот эти самые данные плюс данные сессии вам и нужно проверить.
PHP
if (//делаем проверку входящих данных) {
        //если проверка не пройдена 
        
$_SESSION['error'] = 'Вы не указали .....';


И еще я писал:
HTML
<h4>Форма обратной связи, данные с её полей отправляются на мыло</h4>

<!-- Желательно сделать проверку данных формы с помощью jаvаscript -->

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


Спустя 26 минут, 58 секунд (23.01.2009 - 21:53) freed-master написал(а):
Форма обратной связи у меня есть, я ее уже настроил. А вот насчет вышеупомянутой ошибки - моя вина, просто я еще не разбирал код (со временем напряг) а просто скопировал, вставил и посмотрел. Надеюсь ни сегодня - завтра разберусь.

Спустя 19 часов, 13 минут, 51 секунда (24.01.2009 - 17:07) freed-master написал(а):
Что-то я запутался.
1)
PHP
$order_number_file = 'Файл с числом произведенных регистраций';
- что это за файл? Ведь запись ведется в сессии?

2)
PHP
<h4>Форма обратной связи, данные с её полей отправляются на мыло</h4>

Т.е. здесь скрипт формы без полей для заполнения? У меня используется скрипт с полями такого типа:

PHP
<?php
$adresat 
= "my_mail@mail.ru";
$msg = "Заказ успешно отправлен. Благодарим за сотрудничество!";
if ($submit) {
   if(eregi("^[a-zA-Z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$",$email))
   {
   if(empty($addres)) echo "Не введен адрес доставки";
   else
   
{
   mail("$adresat", "Заказ", "Контактное лицо: $name\nОрганизация: $firm\nE-mail: $email\nТелефон: $phon\n Адрес доставки: $address\n");
   echo "$msg\n";
   }
   } else {
   echo "Не коректно введен E-mail";
   }
}
else {
?>
</p>
<form action="<? echo $PHP_SELF?>" method=POST>
<table id="feed" cellpadding="0" cellspacing="0">
<tr><td align="right">
Контактное лицо: <input type="text" name="name" size="80" /><br />
Организация: <input type="text" name="firm" size="80" /><br />
E-mail: <input type="text" name="email" size="80" /><br />
Телефон: <input type="text" name="phon" size="80" /><br />
Адрес доставки: <input type="text" name="address" size="80" /><br /><br />
</td></tr>
<tr><td align="center"><input name="submit" type="submit" value="Отправить заявку" /></td></tr>
</table>
</form>
<?php
}

Спустя 4 часа, 44 минуты, 25 секунд (24.01.2009 - 21:51) Adamant написал(а):
Вам нужно создать "секретную" директорию и в ней файл в который нужно сразу в начале записать цифру 0 - это количество ваших принятых заказов, в скрипте я написал
Код

// файл для записи количества произведенных заказов
$order_number_file = 'secret/order_number_file';

Название папки и файла можете обозвать и по другому. И нужно в эту "секретную" директорию вставить следующий файл (чтобы запретить доступ к папке из браузера)
.htaccess
Код

Order Deny, Allow
Deny from all


Хочу обратить внимание на вашу главную ошибку, вы по привычке "принимаете" данные в скрипт не через суперглобальные массивы ($_POST), а просто как например $email. Избавляйтесь от этой привычки.
http://phpfaq.ru/globals

В директорию (где находится директория secret) вставьте этот скрипт
PHP
<?php
session_start
();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title></title>
</head>

<body>
<script language="jаvаscript">
//<!--
function trim(str) {
    var s;
    s = str.replace(/^\s+/, '');
    s = s.replace(/\s+$/, '');
    
    return s;
}
function CheckForm(form_feedback)
{
    // проверка валидности емэйла
    var reg = /^[a-z\d\._-]+@{1}[a-z\d_-]+\.[a-z]{2,4}$/i

    if (!reg.exec(form_feedback['email'].value)) {
        alert('Email не проходит валидацию!');
        return false;
    }
    // проверка длины адреса число 5 поставил просто так уточни длину сам
    if (trim(form_feedback['address'].value).length < 5) {
        alert('Вы не указали адрес!');
        return false;
    }
    return true;
}
//-->
</script>

<?php
if 
(!isset($_POST['order_sent'])) {
    if (isset($_SESSION['error'])) {
        echo "<h4 align='center'>" . $_SESSION['error'] . "</h4>";
        unset($_SESSION['error']);
    }   
 
    if 
(isset($_POST['qty'])) {
        $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
        $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    }

    $a = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
    ?>
 
<table>
  <tr>
    <td>Артикул</td>
    <td>Наименование товара</td>
    <td>Количество</td>
  </tr>
  <tr>
    <td colspan="3"><hr></td>
  </tr>
    <?php
    if 
(isset($_SESSION['cart'])) {
        foreach ($_SESSION['cart'] as $code => $qty) {
            echo "  <tr>\n";
            echo "    <td>$code</td>\n";
            echo "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
            echo "    <td>$qty</td>\n";
            echo "  </tr>\n";
        }
    }
    ?>
  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><?php echo "Общее количество товаров: " . $_SESSION['ammount_com'] = array_sum($a); ?></td>
  </tr>
</table>

<br/>

<form method="POST">
  Товар 1  <input type="text" name="qty"/>  шт.
  <input type="hidden" name="code" value="001"/>   <!-- Артикул -->
  <input type="hidden" name="ware" value="Ручка"/> <!-- Название -->
  <input name="submit" type="submit" value="Добавить"/>
</form>

<form method="POST">
  Товар 2 <input type="text" name="qty"/> шт.
  <input type="hidden" name="code" value="002"/>
  <input type="hidden" name="ware" value="Карандаш"/>
  <input name="submit" type="submit" value="Добавить"/>
</form>
<br />

    <h4>Форма обратной связи, данные с её полей отправляются на мыло</h4>

    <form method=POST id="form_feedback" onsubmit="return CheckForm(this)">
      <table id="feed" cellpadding="0" cellspacing="0">
        <tr>
          <td align="right">
            Контактное лицо:
            <input type="text" name="name" size="80"/>
            <br/>
            Организация:
            <input type="text" name="firm" size="80"/>
            <br/>
            E-mail:
            <input type="text" name="email" size="80"/>
            <br/>
            Телефон:
            <input type="text" name="phon" size="80"/>
            <br/>
            Адрес доставки:
            <input type="text" name="address" size="80"/>
          </td>
        </tr>
        <tr>
          <td align="center">
            <br />
            <input name="order_sent" type="submit" value="Отправить заявку"/>
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

<?php
} else {      
    $adresat 
= "my_mail@mail.ru";
    $msg     = "Заказ успешно отправлен. Благодарим за сотрудничество!";
    // файл для записи количества произведенных заказов
    $order_number_file = 'secret/order_number_file';
             
    
/*      проверка входящих данных    */
    if (!$_SESSION['ammount_com']) {
        $_SESSION['error'] = "Вы не выбрали ни одного товара";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    } 
    if 
(!preg_match('/^[a-zA-Z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}$/i', trim($_POST['email']))) {
        $_SESSION['error'] = "Не коректно введен E-mail";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
    if (empty($_POST['address'])) {
        $_SESSION['error'] = "Не введен адрес доставки";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    } 
    
    
// считываем число произведенных заказов из файла 
    $order_num = file_get_contents($order_number_file) + 1;
    // перезаписываем файл нумерации заказов
    file_put_contents($order_number_file, $order_num);
        
    mail
($adresat,
         'Заказ',
         'Контактное лицо: ' . $_POST['name']    . "\n" .
         'Организация: '     . $_POST['firm']    . "\n" .
         'E-mail: '          . $_POST['email']   . "\n" .
         'Телефон: '         . $_POST['phon']    . "\n" .
         'Адрес доставки: '  . $_POST['address'] . "\n" .
         'Номер заказа'      . $order_num 
         
);
         
    echo 
"Номер заказа : $order_num <br />\n";     
    echo 
"$msg <br />\n";
    
    
// убиваем сессию
    session_destroy();
    // редиректим на эту же страницу 
    echo '<meta http-equiv="refresh" content="5" url="' . $_SERVER['PHP_SELF'] . '">';      
}

Спустя 16 часов, 43 минуты, 53 секунды (25.01.2009 - 14:35) freed-master написал(а):
Создаю "секретную" директорию в ней .htaccess с кодом и файл orders.txt со строчкой 0

А браузер пишет ошибка в строке
PHP
// считываем число произведенных заказов из файла 
    
$order_num file_get_contents($order_number_file) + 1;

Спустя 1 час, 24 минуты, 20 секунд (25.01.2009 - 15:59) twin написал(а):
Вот тут исправьте
PHP
// файл для записи количества произведенных заказов
    
$order_number_file 'secret/orders.txt';

Спустя 1 минута, 43 секунды (25.01.2009 - 16:01) Adamant написал(а):
freed-master Если вы переобозвали сам файл в секретной папке который я в скрипте назвал:
PHP
// файл для записи количества произведенных заказов
$order_number_file 'secret/order_number_file ';

, вы его в коде скрипта тоже переименовали?
PHP
// файл для записи количества произведенных заказов
$order_number_file 'secret/orders.txt';


Спустя 27 минут, 55 секунд (25.01.2009 - 16:29) freed-master написал(а):
Конечно, в коде я тоже исправил. Но в ответ:

Fatal error: Call to undefined function: file_put_contents() in ....../cart.php on line 159

Спустя 43 минуты, 31 секунда (25.01.2009 - 17:12) Adamant написал(а):
freed-master У вас PHP 4. Поэтому эта функция не объявлена (не существует) в 4-ке придется вам ее определить самому

PHP
if (!function_exists('file_put_contents')) {
    function 
file_put_contents($file$data$flag false) {
         
$mode = ($flag == 'FILE_APPEND') ? 'ab+' 'wb+';
         
         
$fp fopen($file$mode);
        if (!
$fp) {
            return 
false;
        }
        
fputs($fp$data);
        
fclose($fp);
    }
}


Спустя 4 минуты, 21 секунда (25.01.2009 - 17:17) lawbreaker написал(а):
Зарегись тут и тебе тут скажут

Спустя 8 минут, 46 секунд (25.01.2009 - 17:26) modobaks написал(а):
ты что ли подскажешь? blink.gif

Спустя 5 минут, 57 секунд (25.01.2009 - 17:31) Adamant написал(а):
Караул! ohmy.gif Дети перешли в спам атаку!!
user posted image Уважаемые модераторы у вас "банька" еще случаем не растоплена? Наша "форумная" лялька туда уже просится!

Спустя 12 минут, 48 секунд (25.01.2009 - 17:44) twin написал(а):
А мож батогами? smile.gif
Да пусть, кому он мешает то, вот если много таких, а этот парень уже за талисман может проканать biggrin.gif

Спустя 10 минут, 19 секунд (25.01.2009 - 17:55) lawbreaker написал(а):
ой сори! забыл! зарегитесь на форуме а не судите его smile.gif dry.gif rolleyes.gif biggrin.gif tongue.gif

Спустя 2 часа, 30 минут, 27 секунд (25.01.2009 - 20:25) freed-master написал(а):
Adamant, просто нет слов. Надеюсь я так тоже когда-нибудь буду шарить!

Но попутный вопрос остается в силе, более того выходит на первое место: Как же все-таки добавить в текст письма сам заказ (кто и куда заказал понятно а вот что было заказано)?

Спустя 3 часа, 11 минут, 27 секунд (25.01.2009 - 23:36) Adamant написал(а):
freed-master:
PHP
<?php
session_start
();

if (!function_exists('file_put_contents')) {
    function file_put_contents($file, $data, $flag = false) {
         $mode = ($flag == 'FILE_APPEND') ? 'ab+' : 'wb+';
         
         $fp 
= fopen($file, $mode);
        if (!$fp) {
            return false;
        }
        fputs($fp, $data);
        fclose($fp);
    }
}

if (!isset($_POST['order_sent'])) {
    if (isset($_SESSION['error'])) {
        echo "<h4 align='center'>" . $_SESSION['error'] . "</h4>";
        unset($_SESSION['error']);
    }   
 
    if 
(isset($_POST['qty'])) {
        $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
        $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    }

    $a = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title></title>
  </head>

<body>
<script language="JavaScript">
//<!--
function trim(str) {
    var s;
    s = str.replace(/^\s+/, '');
    s = s.replace(/\s+$/, '');
    
    return s;
}
function CheckForm(form_feedback)
{
    // проверка валидности емэйла
    var reg = /^[a-z\d\._-]+@{1}[a-z\d_-]+\.[a-z]{2,4}$/i

    if (!reg.exec(form_feedback['email'].value)) {
        alert('Email не проходит валидацию!');
        return false;
    }
    // проверка длины адреса число 5 поставил просто так уточни длину сам
    if (trim(form_feedback['address'].value).length < 5) {
        alert('Вы не указали адрес!');
        return false;
    }
    return true;
}
//-->
</script>
 
    <table>
      <tr>
        <td>Артикул</td>
        <td>Наименование товара</td>
        <td>Количество</td>
      </tr>
      <tr>
        <td colspan="3"><hr></td>
      </tr>
<?php
if 
(isset($_SESSION['cart'])) {
    foreach ($_SESSION['cart'] as $code => $qty) {
        echo "  <tr>\n";
        echo "    <td>$code</td>\n";
        echo "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
        echo "    <td>$qty</td>\n";
        echo "  </tr>\n";
    }
}
?>
      <tr>
        <td colspan="2">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="2"><?php echo "Общее количество товаров: " . $_SESSION['ammount_com'] = array_sum($a); ?></td>
      </tr>
    </table>

    <br/>

    <form method="POST">
      Товар 1  <input type="text" name="qty"/>  шт.
      <input type="hidden" name="code" value="001"/>   <!-- Артикул -->
      <input type="hidden" name="ware" value="Ручка"/> <!-- Название -->
      <input name="submit" type="submit" value="Добавить"/>
    </form>

    <form method="POST">
      Товар 2 <input type="text" name="qty"/> шт.
      <input type="hidden" name="code" value="002"/>
      <input type="hidden" name="ware" value="Карандаш"/>
      <input name="submit" type="submit" value="Добавить"/>
    </form>
    <br />

    <h4>Форма обратной связи, данные с её полей отправляются на мыло</h4>

    <form method=POST id="form_feedback" onsubmit="return CheckForm(this)">
      <table id="feed" cellpadding="0" cellspacing="0">
        <tr>
          <td align="right">
            Контактное лицо:
            <input type="text" name="name" size="80" value="<?=isset($_POST['name']) ? $_POST['name'] : ''?>"/>
            <br/>
            Организация:
            <input type="text" name="firm" size="80" value="<?=isset($_POST['firm']) ? $_POST['firm'] : ''?>"/>
            <br/>
            E-mail:
            <input type="text" name="email" size="80" value="<?=isset($_POST['email']) ? $_POST['email'] : ''?>"/>
            <br/>
            Телефон:
            <input type="text" name="phon" size="80" value="<?=isset($_POST['phone']) ? $_POST['phone'] : ''?>"/>
            <br/>
            Адрес доставки:
            <input type="text" name="address" size="80" value="<?=isset($_POST['address']) ? $_POST['address'] : ''?>"/>
          </td>
        </tr>
        <tr>
          <td align="center">
            <br />
            <input name="order_sent" type="submit" value="Отправить заявку"/>
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

<?php
} else {      
    $adresat 
= "my_mail@mail.ru";
    $msg     = "Заказ успешно отправлен. Благодарим за сотрудничество!";
    // файл для записи количества произведенных заказов
    $order_number_file = 'secret/order_number_file';
             
    
/*      проверка входящих данных    */
    if (!$_SESSION['ammount_com']) {
        $_SESSION['error'] = "Вы не выбрали ни одного товара";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    } 
    if 
(!preg_match('/^[a-zA-Z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}$/i', trim($_POST['email']))) {
        $_SESSION['error'] = "Не коректно введен E-mail";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    }
    if (empty($_POST['address'])) {
        $_SESSION['error'] = "Не введен адрес доставки";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
    } 
    
    
// считываем число произведенных заказов из файла 
    $order_num = file_get_contents($order_number_file) + 1;
    // перезаписываем файл нумерации заказов
    file_put_contents($order_number_file, $order_num);
        
    $email_message 
= 
        
'
        <table>
          <tr>
            <td>Артикул</td>
            <td>Наименование товара</td>
            <td>Количество</td>
          </tr>
          <tr>
            <td colspan="3"><hr></td>
          </tr>
        </table>
        '
;

    foreach ($_SESSION['cart'] as $code => $qty) {
        $email_message .=  "<table>\n";
        $email_message .= "  <tr>\n";
        $email_message .=  "    <td>$code</td>\n";
        $email_message .=  "    <td>" . $_SESSION['ware'][$code] . "</td>\n";
        $email_message .=  "    <td>$qty</td>\n";
        $email_message .=  "  </tr>\n";
        $email_message .=  "  <tr>\n";
        $email_message .=  "    <td colspan=2> Общее количество товаров: " .  $_SESSION['ammount_com'] . "</td>\n";
        $email_message .=  "  </tr>\n";
        $email_message .=  "</table>\n";  
    
}  
                
    mail
($adresat,
         'Заказ',
         'Контактное лицо: ' . $_POST['name']    . "\n" .
         'Организация: '     . $_POST['firm']    . "\n" .
         'E-mail: '          . $_POST['email']   . "\n" .
         'Телефон: '         . $_POST['phon']    . "\n" .
         'Адрес доставки: '  . $_POST['address'] . "\n" .
         'Номер заказа'      . $order_num        . "\n\n" .
         $email_message
         
);
             
    
// убиваем сессию
    session_destroy();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="refresh" content="5" url="<?=$_SERVER['PHP_SELF']?>'">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Подождите</title>
  </head>
  
  <body>
    <table width='100%' height='85%' align='center'>
      <tr>
        <td valign='middle'>
            <table align='center' cellpadding="4" bgcolor="#E0E0E0" border="1">
            <tr> 
              <td width="100%" align="center">
                <br /> 
                Номер заказа : <?=$order_num?> <br />
                <?=$msg?>
                <br /><br />
                Подождите, сейчас Вы будете перемещены...<br /><br />
                (<a href='<?=$_SERVER['PHP_SELF']?>'>Или нажмите сюда, если не хотите ждать</a>)
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
  </body>      
</html>
<?php   
}

Спустя 12 часов, 47 минут, 5 секунд (26.01.2009 - 12:24) freed-master написал(а):
Кажется все работает и не просто работает а так как надо!

Спустя 39 минут, 35 секунд (26.01.2009 - 13:03) twin написал(а):
Подскажите пожалуйста, никак не могу уловить смысл вот этого:
HTML
<meta http-equiv="refresh" content="5" url="<?=$_SERVER['PHP_SELF']?>'">
.
.
.
Подождите, сейчас Вы будете перемещены...<br /><br />
Для чего так делается?

Спустя 43 минуты, 3 секунды (26.01.2009 - 13:46) freed-master написал(а):
А действительно, зачем это?

Спустя 3 часа, 45 минут, 56 секунд (26.01.2009 - 17:32) freed-master написал(а):
Что-то я запутал свой код теперь сам никак не разберусь. Вот есть страничка оформления заказа (не пугайтесь, там много инклюдов):

PHP
<?php
session_start
();

if (!
function_exists('file_put_contents')) {
    function 
file_put_contents($file$data$flag false) {
         
$mode = ($flag == 'FILE_APPEND') ? 'ab+' 'wb+';
         
         
$fp fopen($file$mode);
        if (!
$fp) {
            return 
false;
        }
        
fputs($fp$data);
        
fclose($fp);
    }
}

if (!isset(
$_POST['order_sent'])) {
    if (isset(
$_SESSION['error'])) {
        echo 
"<h4 align='center'>" $_SESSION['error'] . "</h4>";
        unset(
$_SESSION['error']);
    }   
 
    if (isset(
$_POST['qty'])) {
        
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];
        
$_SESSION['ware'][$_POST['code']] = $_POST['ware'];
    }

    
$sum = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Корзина</title>
<link rel="stylesheet" href="styles.css" type="text/css" media="all" />
<script language="JavaScript" type="text/javascript" src="showhide.js"></script>
</head>

<body onLoad="MM_preloadImages('images/sub_btn_on.png','images/sub_btns_on.png')">
<?php include "inc_banner.php"?>
<script language="JavaScript">
//<!--
function trim(str) {
    var s;
    s = str.replace(/^\s+/, '');
    s = s.replace(/\s+$/, '');
    
    return s;
}
function CheckForm(form_feedback)
{
    var reg = /^[a-z\d\._-]+@{1}[a-z\d_-]+\.[a-z]{2,4}$/i

    if (!reg.exec(form_feedback['email'].value)) {
        alert('Email введен не корректно!');
        return false;
    }
    if (trim(form_feedback['address'].value).length < 10) {
        alert('Адрес доставки должен быть не мение 10 символов!');
        return false;
    }
    return true;
}
//-->
</script>
<div class="menu" id="menu_top">
<?php include "inc_main_menu.php"?>
</div>
<div id="content_order">
<h2>Бланк заказа</h2>
<table>
<tr>
<td width="10%"><p>Артикул</p></td>
<td width="75%"><p>Наименование товара</p></td>
<td width="10%"><p>Количество</p></td>
</tr>
</table>
<hr />
<table width="100%">
<tr>
<td width="10%"></td>
<td width="75%"></td>
<td width="10%"></td>
</tr>
<tr>
<td colspan="3"></td>
</tr>
<?php
if (isset($_SESSION['cart'])) {
    foreach (
$_SESSION['cart'] as $code => $qty) {
        echo 
"  <tr>\n";
        echo 
"    <td>$code</td>\n";
        echo 
"    <td>" $_SESSION['ware'][$code] . "</td>\n";
        echo 
"    <td>$qty</td>\n";
        echo 
"  </tr>\n";
    }
}
?>
<td colspan="3"></td>
</table>
<hr />
<table width="100%">
<tr>
<td width="10%"></td>
<td width="75%"></td>
<td width="10%"></td>
</tr>
<tr>
<td colspan="2" align="right"><p>Всего наименований: </p></td>
<td align="left"><?php echo count ($sum); ?></td>
</tr>
<tr>
<td colspan="2" align="right"><p>Всего товаров: </p></td>
<td align="left"><?php echo array_sum($sum); ?></td>
</tr>
</table>
<form method=POST id="form_feedback" onSubmit="return CheckForm(this)">
      <table id="feed" cellpadding="0" cellspacing="0">
        <tr>
          <td align="right">
            Контактное лицо:
            <input type="text" name="name" size="80" value="<?=isset($_POST['name']) ? $_POST['name'] : ''?>"/>
            <br/>
            Организация:
            <input type="text" name="firm" size="80" value="<?=isset($_POST['firm']) ? $_POST['firm'] : ''?>"/>
            <br/>
            E-mail:
            <input type="text" name="email" size="80" value="<?=isset($_POST['email']) ? $_POST['email'] : ''?>"/>
            <br/>
            Телефон:
            <input type="text" name="phon" size="80" value="<?=isset($_POST['phone']) ? $_POST['phone'] : ''?>"/>
            <br/>
            Адрес доставки:
            <input type="text" name="address" size="80" value="<?=isset($_POST['address']) ? $_POST['address'] : ''?>"/>
          </td>
        </tr>
        <tr>
          <td align="center">
            <br />
            <input name="order_sent" type="submit" value="Отправить заявку"/>
          </td>
        </tr>
      </table>
</form>
<?php
} else {      
    
$adresat "info@klyaksa.biz.ua";
    
$msg     "Заказ успешно отправлен. Благодарим за сотрудничество!";
    
// файл для записи количества произведенных заказов
    
$order_number_file 'tech/orders.txt';
             
    
/*      проверка входящих данных    */
    
if (!$_SESSION['ammount_com']) {
        
$_SESSION['error'] = "Вы не выбрали ни одного товара";
        
header('Location: ' $_SERVER['PHP_SELF']);
        exit;
    } 
    if (!
preg_match('/^[a-zA-Z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}$/i'trim($_POST['email']))) {
        
$_SESSION['error'] = "Не коректно введен E-mail";
        
header('Location: ' $_SERVER['PHP_SELF']);
        exit;
    }
    if (empty(
$_POST['address'])) {
        
$_SESSION['error'] = "Не введен адрес доставки";
        
header('Location: ' $_SERVER['PHP_SELF']);
        exit;
    } 
    
    
// считываем число произведенных заказов из файла 
    
$order_num file_get_contents($order_number_file) + 1;
    
// перезаписываем файл нумерации заказов
    
file_put_contents($order_number_file$order_num);
        
    
$email_message "Заказ\n\n";

    foreach (
$_SESSION['cart'] as $code => $qty) {
        
$email_message .=  "Артикул: $code\n";
        
$email_message .=  "Товар: " $_SESSION['ware'][$code] . "\n";
        
$email_message .=  "Количество: $qty\n\n";
    }
    
$email_message .=  "Общее количество товаров: " .  $_SESSION['ammount_com'] . "\n";
                
    
mail($adresat,
         
"Order",
         
'Контактное лицо: ' $_POST['name']    . "\n" .
         
'Организация: '     $_POST['firm']    . "\n" .
         
'E-mail: '          $_POST['email']   . "\n" .
         
'Телефон: '         $_POST['phon']    . "\n" .
         
'Адрес доставки: '  $_POST['address'] . "\n" .
         
'Номер заказа: '      $order_num        "\n\n" .
         
$email_message
         
);
             
    
// убиваем сессию
    
session_destroy();
?>
    <table width="100%" height="85%" align="center">
      <tr>
        <td valign="middle">
            <table align="center" cellpadding="4" bgcolor="#E0E0E0" border="1">
            <tr> 
              <td width="100%" align="center">
                <br /> 
                Номер заказа : <?=$order_num?> <br />
                <?=$msg?>
                <br /><br />
                Подождите, сейчас Вы будете перемещены...<br /><br />
                (<a href='<?=$_SERVER['PHP_SELF']?>'>Или нажмите сюда, если не хотите ждать</a>)
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
<?php   
}
?>
</div>
<div class="menu" id="menu_bottom">
<?php include "inc_main_menu.php"?>
</div>
<div id="copyright"></d


Товары в корзину заносятся с других страниц сайта и здесь выводятся в таблицу. Все вроде хорошо, но после нажатия кнопки "Отправить заявку" он выводит: "Не выбраны товары". Чего я тут напортачил не того?

Спустя 22 часа, 45 минут, 16 секунд (27.01.2009 - 16:17) freed-master написал(а):
Неужели нет шансов?

Спустя 23 часа, 32 минуты, 43 секунды (28.01.2009 - 15:50) freed-master написал(а):
Adamant, куда же вы пропали?

Спустя 20 минут, 59 секунд (28.01.2009 - 16:11) twin написал(а):
Ну подумайте маленько сами, почему такое может произойти? Поставьте себя на место скрипта, наконец. И прикиньте, по какой причине Вы могли бы такое заявить - "Не выбраны товары". Станет ясно, что только по одной причине:
PHP
if (!$_SESSION['ammount_com']) {
        $_SESSION['error'] = "Вы не выбрали ни одного товара";
        header('Location: ' . $_SERVER['PHP_SELF']);
        exit;
Перeвести?
if (Если) ! (нет, отрицание) $_SESSION['ammount_com'] (элемент массива $_SESSION) (то) $_SESSION['error'] = (вносим в массив с ошибками фразу "Вы не выбрали ни одного товара")
Что это значит? Значит сессионная переменная $_SESSION['ammount_com'] пуста или не существует. Сделайте так вначале скрипта:
PHP
<?
print_r($_SESSION);
И посмотрите, есть ли такой элемент и что в нем. Рискну предположить, что на остальных страницах нет session_start();

Спустя 1 час, 53 минуты, 5 секунд (28.01.2009 - 18:04) freed-master написал(а):
Что-то до меня туго доходит. Получается в $_SESSION['ammount_com'] не заносятся товары, хотя они у меня отображаются как занесенные.

В начало каждой страницы инклюдится:
PHP
<?php
session_start
();
if (isset(
$_POST['qty'])) {
    
$_SESSION['cart'][$_POST['code']] = $_POST['qty'];
    
$_SESSION['ware'][$_POST['code']] = $_POST['ware'];
}
$sum is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();

Наверно надо в этом коде что-то подправить чтоб товары попадали в $_SESSION['ammount_com']? Но как это сделать?

Спустя 1 день, 25 минут, 28 секунд (29.01.2009 - 18:30) freed-master написал(а):
Да, действительно все не так уж сложно. Всего навсего заменил $_SESSION['ammount_com'] на $_SESSION[cart]!

Но все-таки можно ли обойтись без:
HTML
<meta http-equiv="refresh" content="5" url="<?=$_SERVER['PHP_SELF']?>'">
.
.
.
Подождите, сейчас Вы будете перемещены...<br /><br />

Или куда вписать чтоб редиректился на главную страницу?

Спустя 11 минут, 16 секунд (29.01.2009 - 18:41) twin написал(а):
<meta http-equiv="refresh" content="0" url="<?=$_SERVER['PHP_SELF']?>'"> Зачем ждать у моря погоды?

Спустя 1 час, 10 минут, 14 секунд (29.01.2009 - 19:51) freed-master написал(а):
Это понятно, а можно так что бы редирект был после отправки заказа или после выполнения какой нибудь финкции, например отчистка сессий?

Или для этого и предназначено то о чем я спросил в предыдущем вопросе?

Спустя 1 час, 23 минуты, 25 секунд (29.01.2009 - 21:15) twin написал(а):

Спустя 1 час, 21 минута, 24 секунды (29.01.2009 - 22:36) freed-master написал(а):
Отлично, именно то что нужно!

Спустя 1 день, 11 часов, 48 минут, 48 секунд (31.01.2009 - 10:25) Adamant написал(а):
Цитата (twin @ 26.01.2009 - 16:03)
Подскажите пожалуйста, никак не могу уловить смысл вот этого:
HTML
<meta http-equiv="refresh" content="5" url="<?=$_SERVER['PHP_SELF']?>'">
.
.
.
Подождите, сейчас Вы будете перемещены...<br /><br />
Для чего так делается?

Юзер отправляет заявку заказа и если все прошло успешно (проверка данных пройдена и письмо отправлено) ему выдается информационное окошко об этом + (при желании программиста) номер его заказа.
Конечно вам, уважаемые профи виднее будет, но я, чайник, все таки считаю что юзер должен получить отчет об успешном завершении (оформлении) своего заказа, а не просто редиректить его на страницу заказа без извещения о результате всех манипуляций юзера, который может и не понять, отправил ли он заявку на заказ или нет.

Спустя 4 часа, 23 минуты, 27 секунд (31.01.2009 - 14:48) twin написал(а):
Цитата
считаю что юзер должен получить отчет об успешном завершении (оформлении) своего заказа, а не просто редиректить его на страницу заказа без извещения о результате всех манипуляций юзера, который может и не понять, отправил ли он заявку на заказ или нет.
Это правильно, юзер должен получить отчет о проделанной работе. Но зачем его заставлять ждать пять секунд, глядя на непонятную надпись -
Цитата
Подождите, сейчас Вы будете перемещены...

Ну устройте ему праздник с салютом и цыганами на странице, куда редерикт, если все удачно... Меня эти "Подождите..." ужасно раздражают к примеру. Это наверное для того, что бы юзер подумал: Оооооо! Работает техника! Только сейчас этим никого не купишь. И без этого нормально все работает, и все это знают...

Спустя 48 минут, 43 секунды (31.01.2009 - 15:37) Adamant написал(а):
Уважаемый twin, вас не раздражает такое же окно (его то я и взял для примера) которое вы уже видели примерно 250 раз после нажатия на кнопку "Отправить" - оставляя сообщение на форуме? И причем заметьте нет:
Цитата ("twin")

праздник с салютом и цыганами на странице, куда редирект, если все удачно

user posted image

Спустя 35 минут, 20 секунд (31.01.2009 - 16:12) twin написал(а):
Очень раздражжает, я и написал в тайне надеясь, что гостеприимные хозяева форума обратят внимание и как то пересмотрят этот момент smile.gif

Спустя 26 минут, 45 секунд (31.01.2009 - 16:39) Sylex написал(а):
biggrin.gif
header("Location: $url") конечно

Спустя -1 лет, 11 месяцев, 27 дней, 11 минут, 17 секунд (2.02.2009 - 16:50) freed-master написал(а):
А можно ли сделать так, что б заказ отправлялся в другой кодировке?

У меня на сайте все страницы: windows-1251, а сервер на utf. И когда письмо приходит на сервер отображаются иероглифы.

Спустя 1 час, 15 минут, 35 секунд (2.02.2009 - 18:06) twin написал(а):
Сервер не может быть на утф, просто такие настройки. Сделайте файл без названия, одно расширение .htaccess , напишите в него
HTML
AddDefaultCharset windows-1251
и положите в корень. Но это не поможет. Вам нужно отправить заголовок в функции mail

PHP
$header "Content-Type: text/html; charset=windows-1251 \r\n";
 
mail($adresat,
         
"Order",
         
'Контактное лицо: ' $_POST['name']    . "\n" .
         
'Организация: '     $_POST['firm']    . "\n" .
         
'E-mail: '          $_POST['email']   . "\n" .
         
'Телефон: '         $_POST['phon']    . "\n" .
         
'Адрес доставки: '  $_POST['address'] . "\n" .
         
'Номер заказа: '      $order_num        "\n\n" .
         
$email_message,
         
$header
         
);
Только это тоже полумера, потому что далеко не все почтовые сервера принимают виндовскую кодировку. И даже кирилицу под utf-8. П этому мой Вам совет - перекодируйте скрипт на utf и почитайте о правилах работы с почтовыми отправлениями. Допустим здесь.

Спустя 2 часа, 58 минут, 55 секунд (2.02.2009 - 21:05) freed-master написал(а):
А вот еще момент. У меня стоит Denwer3_Base_2008-01-13. Все работает хорошо, а в реалии что то не то:

PHP
if (isset($_SESSION['cart'])) {
    foreach (
$_SESSION['cart'] as $code => $qty) {
        echo 
"  <tr>\n";
        echo 
"    <td>$code</td>\n";
        echo 
"    <td>" $_SESSION['ware'][$code] . "</td>\n";
        echo 
"    <td>$qty</td>\n";
        echo 
"  </tr>\n";
    }
}

Не выводится название товара из $_SESSION['ware'][$code].

Спустя 13 минут, 38 секунд (2.02.2009 - 21:18) twin написал(а):
А напрямую выводится? Вот так:
PHP
<?
echo 
$_SESSION['ware'][1(или какой там реальный код)];

Спустя 23 дня, 23 часа, 55 минут, 54 секунды (26.02.2009 - 21:14) freed-master написал(а):
Возникла потребность функции "товаров на сумму", вот что получается:
Код
<?php
session_start();

if (isset($_POST['qty'])) {
   $_SESSION['cart'][$_POST['code']] = $_POST['qty'];
   $_SESSION['ware'][$_POST['code']] = $_POST['ware'];
   $_SESSION['price'][$_POST['code']] = $_POST['price'];
}
$sum = is_array($_SESSION['cart']) ? $_SESSION['cart'] : array();
$sum_p = is_array($_SESSION['price']) ? $_SESSION['price'] : array();
...

Но при таком раскладе, при выводе результата:
Код
<?php echo "На сумму: " . array_sum($sum_p); ?>
<?php echo "На сумму: " . array_sum($sum_p); ?>
Подсчитываются только цены разных товаров, без учета их количества. В чем ошибка?

Спустя 25 дней, 17 часов, 30 минут, 24 секунды (22.03.2009 - 14:45) freed-master написал(а):
Как можно дословно перевести строку:
Код
foreach ($_SESSION['cart'] as $code => $qty)
А именно, что означает "=>" ? - соответствие?


Спустя 24 минуты, 35 секунд (22.03.2009 - 15:09) sergeiss написал(а):
Цитата (freed-master @ 22.03.2009 - 14:45)
Как можно дословно перевести строку:
Код
foreach ($_SESSION['cart'] as $code => $qty)
А именно, что означает "=>" ? - соответствие?

Из хэлпа, который у меня в подписи:

Цитата
foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

Или, говоря по-русски, выбираем последовательно все элементы массива, записывая на каждом шаге текущий ключ в переменную $key, а соответствующую величину в $value.
Причем, если изначально array-expression двумерный массив, то в $value будет записан одномерный массив.
То есть, $value может быть любого типа, а вовсе не обязательно простой переменной.

Спустя 6 минут, 33 секунды (22.03.2009 - 15:16) freed-master написал(а):
Очень Спасибо!!!


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.