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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: <form> внутри <form> как обыграть

Сообщения:  [1-10]    [11-20]  [21-27] 

 
 автор: Lotanaen   (28.12.2011 в 16:58)   письмо автору
 
   для: RuslanBLR   (28.12.2011 в 13:18)
 

Да... в Вашей функции удаления позиции перед foreach делайте проверку на существования массива например так:


function remove_from_cart($delete_key) { 
if (sizeof($_SESSION['product_id'])) {
 foreach ($_SESSION['product_id'] as $key=>$value) {  

     if ($value == $delete_key) { 
       unset($_SESSION['product_id'][$key]);  
       unset($_SESSION['product_price'][$key]); 
       unset($_SESSION['product_count'][$key]); 
       return true;
    } 

}
return false;
}
else
    return false;

 } 

  Ответить  
 
 автор: RuslanBLR   (28.12.2011 в 13:18)   письмо автору
 
   для: Lotanaen   (28.12.2011 в 12:57)
 

ОГРОМНОЕ ВАМ СПАСИБО!!!!!!!! СПАСИБО!!!!!!!!!!! СПАСИБО ЗА ТЕРПЕНИЕ!!!!!!!!!

  Ответить  
 
 автор: Lotanaen   (28.12.2011 в 12:57)   письмо автору
 
   для: RuslanBLR   (28.12.2011 в 12:36)
 

вот этот фрагмент :


for ($i=0; $i<$_SESSION['prod_count']; $i++) {
 /* получаем информацию о товаре из базы данных */
 $q="SELECT * FROM CLIPS WHERE id='".$_SESSION[product_id][$i]."'"; 


замените на :


foreach ($_SESSION[product_id] as $key=>$value) {
 /* получаем информацию о товаре из базы данных */
 $q="SELECT * FROM CLIPS WHERE id='".$value."'"; 


а еще лучше в один запрос к БД загнать все ИД товара и затем по циклу выводить:


 <?php
 
include "setup/options.php";  
  if(!
mysql_connect($host,$USER,$PASSWD)) exit(@mysql_error());  
  if(!
mysql_select_db($DB)) exit(@mysql_error());  
 if (
sizeof($_SESSION['product_id'])) {
     
/* получаем информацию о товаре из базы данных */
     
$q="SELECT * FROM CLIPS WHERE id in (".implode(",",$_SESSION['product_id']).");";
     
$query=mysql_query($q);
     while (
$prod_in_cart=mysql_fetch_array($query)) {
         
?>
         <tr>
        
        <td align=center><? echo "$prod_in_cart[kod]"?></td>
         <td align=center><img src='clips/<?php echo $prod_in_cart['image'] ;?>' width=50px height=50px></td>
         <td align=center>
        
         
        <input type="text" name="kol[<?=$prod_in_cart['id'];?>]" size="3" value="" /></td>
        
         <td align=center><?php echo prod_in_cart['product_price'];?></td>
        
        <td align=center>
        <a href='<?php echo $_SERVER['REQUEST_URI'];?>?action=delete&del_id=<?php echo $prod_in_cart['id'];?>' title='удалить'>удалить</a>
        </td>
        
         </tr>
         <?php
     
}
}
else
    echo 
"Корзина пуста!";

 
?>

  Ответить  
 
 автор: RuslanBLR   (28.12.2011 в 12:36)   письмо автору
 
   для: Lotanaen   (28.12.2011 в 12:25)
 

не удалило поля из таблицы. из массива товар удалило с этим все отлично - спасибо еще раз большое!! у меня ссылка и ссылается на эту же страницу - разве она не должна удалить поля товара из таблицы -товар же уже удален. Извините немного не понял. Вот мой вывод:

<? session_start(); 

function 
remove_from_cart($delete_key) { 
 foreach (
$_SESSION['product_id'] as $key=>$value) {  

     if (
$value == $delete_key) { 
       unset(
$_SESSION['product_id'][$key]);  
       unset(
$_SESSION['product_price'][$key]); 
       unset(
$_SESSION['product_count'][$key]); 
    } 

}

 }

 if (isset(
$_GET['del_id'])) {
 
remove_from_cart($_GET['del_id']);
 }

  <
div class="content">
<
br>
    <
table border=1 width=100%>
    <
tr><td align=center bgcolor=#000000><font color=white>код</font></td><td bgcolor=#000000><font color=white></font></td><td  align=center bgcolor=#000000><font color=white>количество</font></td><td bgcolor=#000000 align=center><font color=white>цена за шт</font></td><td bgcolor=#000000 align=center><font color=white>удалить товар</font></td></tr>
 
<?php
 
include "setup/options.php";  
  if(!
mysql_connect($host,$USER,$PASSWD)) exit(@mysql_error());  
  if(!
mysql_select_db($DB)) exit(@mysql_error());  
 for (
$i=0$i<$_SESSION['prod_count']; $i++) {
 
/* получаем информацию о товаре из базы данных */
 
$q="SELECT * FROM CLIPS WHERE id='".$_SESSION[product_id][$i]."'";
 
$query=mysql_query($q);
 
$prod_in_cart=mysql_fetch_assoc($query);
 
?>
 <tr>

<td align=center><? echo "$prod_in_cart[kod]"?></td>
 <td align=center><img src='clips/<?php echo $prod_in_cart['image'] ;?>' width=50px height=50px></td>
 <td align=center>

 
<input type="text" name="kol[<?=$prod_in_cart['id'];?>]" size="3" value="" /></td>

 <td align=center><?php echo $_SESSION['product_price'][$i];?></td>

<td align=center>
<a href='<?php echo $_SERVER['REQUEST_URI'];?>?action=delete&del_id=<?php echo $_SESSION[product_id][$i];?>' title='удалить'>удалить</a>
</td>

 </tr>
 <?php
 
}


 
?>
 </table>
?>

  Ответить  
 
 автор: Lotanaen   (28.12.2011 в 12:25)   письмо автору
 
   для: RuslanBLR   (28.12.2011 в 12:01)
 

Какие поля не удалило? У Вас обновление страницы происходит по ссылке на удаления из корзины? Если да, то сначала удаляйте позицию из корзины, а потом вывод самой страницы делайте.

  Ответить  
 
 автор: RuslanBLR   (28.12.2011 в 12:01)   письмо автору
 
   для: Lotanaen   (28.12.2011 в 11:08)
 

спасибо - вроде все хорошо - с массива удаляет, но поля удаляемого товара остаются ну а значения удалены. Почему поля не удалило? Может не правильно записал что?:

правильно ли я записал?

<?
function remove_from_cart($delete_key) { 
 foreach (
$_SESSION['product_id'] as $key=>$value) {  

     if (
$value == $delete_key) { 
       unset(
$_SESSION['product_id'][$key]);  
       unset(
$_SESSION['product_price'][$key]); 
       unset(
$_SESSION['product_count'][$key]); 
    } 

}

 }


if (isset(
$_GET['del_id'])) {
 
remove_from_cart($_GET['del_id']);
 }
?>

передаю что удалить:
<?
<a href='<?php echo $_SERVER['REQUEST_URI'];?>?action=delete&del_id=<?php echo $_SESSION[product_id][$i];?>' title='удалить'>удалить</a>
?>

  Ответить  
 
 автор: Lotanaen   (28.12.2011 в 11:50)   письмо автору
 
   для: RuslanBLR   (28.12.2011 в 11:29)
 

А как у Вас схема работает, если покупатель например добавил одну позицию в корзину, а потом решил еще раз добавить ту же позицию в корзину? Или у Вас можно только по одной позиции каждого товара в корзину класть?

  Ответить  
 
 автор: RuslanBLR   (28.12.2011 в 11:29)   письмо автору
 
   для: DJ Paltus   (28.12.2011 в 00:01)
 

я не понимаю - что значит зачем счетчик, а как я положу несколько товаров?

вот как я передаю товар в корзину:

<? session_start(); 

function 
addtocart($product_id$product_price) { 

if(
is_array($_SESSION['product_id']) && in_array($product_id$_SESSION['product_id'])){


  echo 
"<p class=contGLAV2><font color=#BEBEBE><strong>товар уже есть в корзине</font></strong></p>"

}  

else   
{   
 
$_SESSION['prod_count']++; 
 
$incart=$_SESSION['prod_count'] - 1
 
$_SESSION['product_id'][$incart] = $product_id
 
$_SESSION['product_price'][$incart] = $product_price
 
$_SESSION['product_count'][$incart] = 1
 } 
 
}
?>


Первая строчка $_SESSION['prod_count']++ добавляет единицу к переменной $_SESSION['prod_count'], которая представляет собой счетчик товаров в корзине.
$incart=$_SESSION['prod_count']-1 – индекс массива, содержащего информацию о продукте в корзине. $_SESSION['product_id'][$incart] – идентификатор продукта, $_SESSION['product_price'][$incart] – цена продукта, $_SESSION['product_count'][$incart] – количество единиц продукта в корзине.


почему я не правильно делаю???

вывод из БД:

<?



if(!empty($_POST)){    

    
    
addtocart($_POST["product_id"],$_POST["product_price"]);  

}
  include 
"setup/options.php";  
  if(!
mysql_connect($host,$USER,$PASSWD)) exit(@mysql_error());  
  if(!
mysql_select_db($DB)) exit(@mysql_error());  

  
$r mysql_query("SELECT * FROM CLIPS WHERE kod = {$_GET['kod']}");  

  
$page "<form id='form1' name='form1' method='post' action='{$_SERVER["REQUEST_URI"]}'>";  
  while(
$f mysql_fetch_array($r)){ 
    
$page .= "<table border=1 width=100%> 
    <tr><td align=center bgcolor=#000000><font color=white>код: 
{$f['kod']}</font></td> 
    <td align=center bgcolor=#000000><font color=white>место установки:</font></td> 
    <td align=center bgcolor=#000000><font color=white>тип: 
{$f['tip']}</font></td></tr> 
    <tr><td width=5% align=left bgcolor=#FFFFFF height=5px><img src='clips/
{$f['image']}' width=120px height=120px></td> 
    <td align=center>
{$f['setup']}</td><td width=120px height=120px>картинка</td></tr> 
    <tr><td align=center bgcolor=#000000><font color=white>OEM:</font></td> 
    <td align=center bgcolor=#000000><font color=white>марка автомобиля:</font></td> 
    <td align=center bgcolor=#000000><font color=white>размеры:</font></td></tr> 
    <tr><td bgcolor=#E8E8E8 align=center>
{$f['original']}</td> 
    <td align=center>
{$f['marka']}</td> 
    <td>T= 
{$f['T']} <br>H= {$f['H']}<br>F= {$f['F']}<br>D= {$f['D']}<br>T1= {$f['T1']}<br> 
    T2= 
{$f['T2']}<br>L= {$f['L']}<br>G= {$f['G']}<br>S1= {$f['S1']}<br>S= {$f['S']}<br> 
    S min= 
{$f['Smin']}<br>S max= {$f['Smax']}</td></tr></table><br>
<p class=contGLAV2><strong>Цена: 
{$f['price']} бел.руб.</strong></p>
    <input type=hidden name='product_price' value="
.$f[price]." /> 
    <input type=hidden name='product_id' value="
.$f[id]." /> 
    <input type=hidden name='tocart' value=tocart /> 
<table border=0 width=100%><tr><td align=center>
    <input type=submit name='sub' value='В корзину' id='korz' />  
</td></tr></table>"
;
$f['price']=$_SESSION['price'];
echo 
"$f[price]";


  }  
  
$page .= "</label></form>";  
   
  echo 
$page;
  
?>

  Ответить  
 
 автор: Lotanaen   (28.12.2011 в 11:08)   письмо автору
 
   для: RuslanBLR   (27.12.2011 в 17:45)
 

как вариант:


<?
foreach ($_SESSION['product_id'] as $key=>$value) { 

     if (
$value == $delete_key) {
       unset(
$_SESSION['product_id'][$key]); 
       unset(
$_SESSION['product_price'][$key]);
       unset(
$_SESSION['product_count'][$key]);
    }

}
?> 

  Ответить  
 
 автор: DJ Paltus   (28.12.2011 в 00:01)   письмо автору
 
   для: RuslanBLR   (27.12.2011 в 17:16)
 

Вот. Вотвотвотвотвоот.
На кой леший этот счетчик? Если Вы мне это сумеете объяснить, то или у меня, или у Вас случится просветление. Сатори. А следующие Ваши 4 комментария я читать не стану, потому что многовато информации ради плёвого дела.

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-27] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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