2016-05-27 4 views
1

Это код. Я знаю, что это не очень безопасно для инъекций, я позабочу об этом позже.Почему моя корзина покупок является товаром того же типа?

, но моя проблема в том, что моя корзина добавляет продукт, но иногда я получаю:

неподдерживаемых типов операндов в E: \ HostingSpaces \ Knoppers1 \ topjop.nl \ Wwwroot \ портал \ сердцевиной \ tj_functions.php на line 358

Ошибка, и я не могу добавить несколько элементов того же типа.

line 358: $_SESSION['cart'][$uid] += 1;//

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

function toevoegen(){ 
    session_start(); 
    if(!isset($_SESSION['cart'])){ 
     $_SESSION['cart'] = array(); 
    } 
    if(isset($_GET['add'])) { 
     $info = 'U heeft een product toegevoegd <META HTTP-EQUIV=REFRESH CONTENT="1; URL=http://topjop.nl/portal/winkelmandje.php">'; 
     $uid = 0; //update id 
     foreach($_SESSION['cart'] as $id => $data){ 
      if($data[0]==$_GET['add']){ 
       $uid = $id;// 
      } 
     } 
     if($uid == 0){ 
      array_push($_SESSION['cart'],array($_GET['add'],1));// 
     }else{ 
      $_SESSION['cart'][$uid] += 1;// 
     } 
    } 
    else { 
     $info = ''; 
    } 
    return $info; 
} 

function winkelmandje(){ 
    mysql_connect("mysql8.mijnhostingpartner.nl","",""); 
    mysql_select_db("Knoppers1_portal"); 
    session_start(); 
    $mand = '<table id="winkelmandje_tabel"><tr><td>Product</td> 
    <td>Stukprijs</td><td>Aantal</td><td>Totaal bedrag</td><td></td></tr>'; 
    foreach($_SESSION['cart'] as $data){ 
     $id = $data[0];// 
     $value = $data[1];// 
     if($value>0){ 
      $get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id)); 
      while ($get_row = mysql_fetch_assoc($get)) { 
       $totaal = $get_row['price']*$value; 
       $totaalprijs = number_format($totaal,2,',','.'); 
       $mand .= '<tr><td>'.$get_row['name'].'</td> 
       <td>&euro;'.$get_row['price'].'</td><td>'. $value .'</td> <td>&euro;'.$totaalprijs.'</td></tr>'; 
      } 
     } 
     else{ 
     } 
    } 
    $aantal = ''; 
    $kosten = ''; 
    return $mand.'<tr><td><b>Totaal:</b></td><td></td><td><b>'. $aantal .'</b></td><td><b>'. $kosten .'</b></td></tr></table>'; 
} 
toevoegen = ADD<br> 
winkelmandje = SHOPPINGCART 
+0

Вы уверены, что '$ _SESSION [ 'телега'] [$ UID]' является тип переменной, которую вы ожидаете, что это будет? Вы [обычно получаете эту ошибку] ​​(http://stackoverflow.com/questions/2108875/php-fatal-error-unsupported-operand-types), если вы попытаетесь сделать что-то вроде разделения массива на int ... – Henders

+0

@ Henders, так что будет после этого код? –

+0

Если вы делаете что-то вроде 'var_dump ($ _ SESSION ['cart'] [$ uid]), вы должны увидеть, что это за значение. Похоже, что это то, что вы не можете добавить 1 (например, boolean/array/etc) – Henders

ответ

0

Похоже $ _SESSION [ 'телега'] [$ UID] представляет собой массив, содержащий идентификатор и значение, как вы читаете это, как что происходит некорректно сниппета:

$id = $data[0];// 
$value = $data[1];// 
0

кажется $ _SESSION [ 'cart'] [$ uid] - массив. так что вы не можете сделать + = 1

возможно сделать

$_SESSION['cart'][$uid][1] += 1; // increment $value 
+0

Почему вы предполагаете, что мы хотим добавить что-то, чтобы индексировать один из массива? Конечно, это просто рискует «неопределенным уведомлением об индексах», если я не пропущу что-то ... – Henders

+0

@Henders Я понимаю, что $ _SESSION ['cart'] [$ uid] [0] => id продукта, $ _SESSION ['cart'] [$ uid] [1] => количество продукта , если я прав, $ _SESSION ['cart'] [$ uid] [1] является initialyse, когда $ uid равен 0 – billyjoe25

+0

Достаточно честно! Я не знал, что '[1]' всегда будет установлен :) – Henders