Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выводится Array() вместо элемента массива
 
 автор: JESS   (05.08.2008 в 02:44)   письмо автору
 
 

Здравствуйте!
У меня есть массив который делит сессию на две части и выводит данные в формы

\<?php
    
foreach($_SESSION['goods'] as $key => $val)
    {
    echo 
'<form name="form1" method="GET"><input type="hidden" name="id[]" value="'.$key.'">
      <p>info <input type="text" name="number[]" value="'
.$val.'" maxlength="2" size="2" style="text-align:center;"></p>';
    }
    echo 
'<p><input type="submit" name="formbutton1" value="Update"></p></form>';
?>


И отправляет через GET обновление, но массив который изменяет сессию, что то глючит:

<?php
    
for($i=0;$i<=count(($_GET['id']) && ($_GET['number'])) ;$i++){
    
$_SESSION['goods'][$_GET['id'][$i]] = $_GET['number'];
     }
?>
А делаю я корзину для магазина!

  Ответить  
 
 автор: DDK   (05.08.2008 в 02:50)   письмо автору
 
   для: JESS   (05.08.2008 в 02:44)
 

Не понятно в чем проблема.

P.S.
count(($_GET['id']) && ($_GET['number']))

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

[поправлено модератором]

  Ответить  
 
 автор: JESS   (05.08.2008 в 03:13)   письмо автору
 
   для: DDK   (05.08.2008 в 02:50)
 

В корзине выводитья товар, и рядом форма с количеством, и снизу кнопка обновить, то при измненинии того или иного товара, соответственно и меняеться сессия, но при нажатии до 3 раз пишется Array не первых друх товаров, и довабляеться довар, сессия без id и количества...

  Ответить  
 
 автор: DDK   (05.08.2008 в 03:29)   письмо автору
 
   для: JESS   (05.08.2008 в 03:13)
 

count(($_GET['id']) && ($_GET['number']))

А что Вы хотели подсчитать конкретно этой конструкцией ?

  Ответить  
 
 автор: JESS   (05.08.2008 в 03:35)   письмо автору
 
   для: DDK   (05.08.2008 в 03:29)
 

ничего не хотел так то подсчитать, хотел просто вывести при помощи это го скрипта изменить количество нужного нам товара, и если у товара количество равно 0 то сессия удаляеться, вот в этом я нуждаюсь в помощи. =)
$_session['goods']['Id товара'] = "количество";

  Ответить  
 
 автор: DDK   (05.08.2008 в 10:59)   письмо автору
 
   для: JESS   (05.08.2008 в 03:35)
 

Ммм...мда. Ну хорошо. А что хотя бы хранится в $_GET['id'] и $_GET['number'] ?

  Ответить  
 
 автор: JESS   (05.08.2008 в 15:37)   письмо автору
 
   для: DDK   (05.08.2008 в 10:59)
 

в $_GET['id] id номер товара, $_GET['number'] количество товара =)

  Ответить  
 
 автор: Саша   (05.08.2008 в 15:45)   письмо автору
 
   для: JESS   (05.08.2008 в 15:37)
 

Так а в чем проблема? Что не работает то? :-)

  Ответить  
 
 автор: JESS   (05.08.2008 в 16:24)   письмо автору
 
   для: Саша   (05.08.2008 в 15:45)
 

Ну этот код должен изменять количество товара под нужным id, но вместо этого происходит добавлентие пустой сессии и за место 2 двух товаров пишется array.

ну а сосчитать я ничего не хотел, у меня был похожый код для удаления с чекбоксами для одной GET или POST

  Ответить  
 
 автор: DDK   (05.08.2008 в 16:32)   письмо автору
 
   для: JESS   (05.08.2008 в 16:24)
 

Я сдаюсь! :)))

  Ответить  
 
 автор: t3ma   (05.08.2008 в 16:37)   письмо автору
 
   для: JESS   (05.08.2008 в 16:24)
 

[поправлено модератором]

  Ответить  
 
 автор: JESS   (05.08.2008 в 16:53)   письмо автору
 
   для: t3ma   (05.08.2008 в 16:37)
 

да, я пытаюсь, кка то не идет...

У меня из базы воводяться товары, кнопочкой добавить в корзину,(создается сессия $_SESSION['goods'][' id товара'] = количество ) мы добавляем корзину, а так же и другие товары, потом переходитм в корзину, там сессии делятсья массивом и выводяться id товара и количество, но количество надо изнемить как покупатель пожилает,

<?php
foreach($_SESSION['goods'] as $key => $val)
    {
    echo 
'<form name="form1" method="GET"><input type="hidden" name="id[]" value="'.$key.'">
      <p>info# '
.$key.'
      <input type="text" name="number[]" value="'
.$val.'" maxlength="2" size="2" style="text-align:center;">
      &nbsp;<a href="?delete_it='
.$key.'">X</a></p>';
    }
    echo 
'<p><input type="submit" name="formbutton1" value="Uppdatera"></p></form>';
?>

Вот этот массив, выводит инфо о товаре и количество в форме, и снизу кнопка обновить если количство изменинено, ... вот я не могу написать скрипт на что бы сессию можно было изнеменить ,
как бы сказать количество товара в нужном товаре...

  Ответить  
 
 автор: DDK   (05.08.2008 в 17:08)   письмо автору
 
   для: JESS   (05.08.2008 в 16:53)
 

Передаваю форму через GET имена полей нельзя делать массивами, такое возможно только через POST.

Тобиш это должно быть примерно так:

Вывод:
<?php 
echo '<form name="form1" method="POST">';
foreach(
$_SESSION['goods'] as $key => $val
{
    echo 
'<input type="hidden" name="id[]" value="'.$key.'">
    <p>info# '
.$key.
    <input type="text" name="number[]" value="'
.$val.'" maxlength="2" size="2" style="text-align:center;"> 
    &nbsp;<a href="?delete_it='
.$key.'">X</a></p>'

echo 
'<p><input type="submit" name="formbutton1" value="Uppdatera"></p></form>'
?>

Пересчёт:
<?php 
for($i=0;$i<count($_GET['id']) ;$i++)

    if((int) 
$_GET['number'][$i] > 0$_SESSION['goods'][$_GET['id'][$i]] = $_GET['number'][$i];
}
?>

  Ответить  
 
 автор: BinLaden   (05.08.2008 в 15:53)   письмо автору
 
   для: JESS   (05.08.2008 в 15:37)
 

> count(($_GET['id']) && ($_GET['number']))

А что это?

  Ответить  
 
 автор: sim5   (05.08.2008 в 17:04)   письмо автору
 
   для: JESS   (05.08.2008 в 02:44)
 

По поводу последнего вопроса к вашей теме "Корзина" из раздела MySQL. Вот пример корзины - добавление товара в нее, редактирование (изменение количества товаров в корзине), удаление корзины. В примере предполагается, что добаление товара со страницы происходит по 1 штук"а".

<?
session_start
();
//это будет имитировать таблицу товаров 
$cat = array(
79  => array('name'=>'Топор','mony'=>120),
102 => array('name'=>'Молоток','mony'=>60),
89  => array('name'=>'Стаместка','mony'=>35),
211 => array('name'=>'Ножовка','mony'=>86)
);
//тут добавляем товар в корзину,
//а так как добавляем по 1,
//проверку на наличие не делаем
if (isset($_GET['add'])) {
  
//если корзина не создавалась, создаем 
  
if (!isset($_SESSION['goods'])) $_SESSION['goods'] = array();
  
//проверяем на всякую лажу и добавление товара в корзину
  
$id intval($_GET['add']);
  if (
$id 0$_SESSION['goods'][$id] = 1;
}
//работаем с корзиной
if (isset($_POST['update'])) { //если запрос на обновление корзины
  
foreach($_POST['prod'] as $key => $val) {
    
$key intval($key); //получаем id товара
    
if ($key 0) { //если все ОК
      
$val intval($val); //чтобы не было лажи 
      
if (isset($_POST['del']) && in_array($key$_POST['del']) || !$val) {
        
//ели выбран чекбокс на удаление товара или поле количества пустое
        //находим такой товар в корзине и удаляем его
        
if (array_key_exists($key$_SESSION['goods'])) unset($_SESSION['goods'][$key]);
      } else 
$_SESSION['goods'][$key] = $val//иначе новое количество товара
    
}
  }
}
//если запрос на удаление корзины, удаляем
if (isset($_POST['clear'])) unset($_SESSION['goods']);
//типа получаем товары из базы и выводим на страницу
foreach($cat as $id => $val) {
  echo 
$val['name'] . ", цена: " .$val['mony']. " руб. <a href=\"?add=" .$id"\">Добавить в корзину</a><br>";
}
//для красоты )
echo "<hr width=\"100%\" size=\"1\">";
//проверяем корзину, и если не пуста, выводим ее на страницу
//без комментов, смотрите сами
if (!empty($_SESSION['goods'])) {
  echo 
"<form method=\"post\">
    <input type=\"submit\" name=\"clear\" value=\"Очистить корзину\">
    <table bgcolor=\"#696969\" cellspacing=\"1\" cellpadding=\"4\" width=\"100%\">
    <tr bgcolor=\"#f5f5f5\">
    <td>Товар</td>
    <td>Цена, руб</td>
    <td>Выбрано, шт</td>
    <td>Стоимость, руб</td>
    <td>Удалить</td>
    </tr>"
;
  
$k 0;
  
$m 0;
  foreach(
$_SESSION['goods'] as $key => $val) {
    
$k += $val;
    
$m += $cat[$key]['mony']*$val;
    echo 
"<tr bgcolor=\"#ffffff\">
      <td><a href=\"goods.php?id=" 
.$key"\">" .$cat[$key]['name']. "</a></td>
      <td>" 
.$cat[$key]['mony']. "</td>
      <td><input type=\"text\" name=\"prod[" 
.$key"]\" value=\"" .$val"\"></td>
      <td>" 
.$cat[$key]['mony']*$val"</td>
      <td><input type=\"checkbox\" name=\"del[]\" value=\"" 
.$key"\"></td>
      </tr>"
;
  }
  echo 
"<tr bgcolor=\"#ffffff\">
    <td colspan=\"2\">Всего</td>
    <td>" 
.$k"</td>
    <td>" 
.$m"</td>
    <td>&nbsp;</td>
    </tr>
    </table>
    <input type=\"submit\" name=\"update\" value=\"Обновить корзину\">
    </form>"
;
} else print 
"Ваша корзина пуста!";
?>

Как же вы собираетесь магазин написать?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования