如何通过href将+1添加到var?

时间:2019-06-13 09:21:48

标签: php html

我在购物车中显示了此数量(变量名称:$ Quantidade),需要添加+和-href以使其增加/减少值。

数量: quantity

完整表格: table

数量var始终从1开始。

我所有的尝试都失败了。

以下是该表的一些代码(如果删除+ href,则可以使用):

<table class="cart" width=700px cellpadding="0" cellspacing="0" style="border: 1px;" rules="none" align="center">
    <tr height=40px align="center">
        <td>Product</td>
        <td>Price</td>
        <td></td>
        <td>Quantity</td>
        <td></td>
        <td>Delete</td>
    </tr>
    <?php
    // Carrinho
        $total=0;
        foreach($_SESSION['venda'] as $Prod => $Quantidade):
            $SqlCarrinho = mysqli_query($conect,"SELECT * FROM produto WHERE id= '$Prod'");
            $ResAssoc = mysqli_fetch_assoc($SqlCarrinho);
            echo '<tr height=40px align="center">';
                echo '<td>'.$ResAssoc['descricao'].'</td>';
                echo '<td>'.number_format($ResAssoc['preco'],2,",",".").'€</td>';
                echo '<td>-</td>';
                echo '<td>'.$Quantidade.'</td>';
                echo '<td><a href="#?more=true&par='.$Prod.'">+</a></td>';
                echo '<td><a href="index.php?del='.$ResAssoc['id'].'#carrinho" style="text-decoration:none; color:black;">x</a></td>';

                $total += $ResAssoc['preco'] * $Quantidade;
            echo '</tr>';   
        endforeach;

        echo '<tr height=40px>';
            echo '<td colspan="6" align="right">Total: '.number_format($total,2,",",".").'€</td>';
        echo '</tr>';
        echo'</table>';

以下是我使用的会话的一些代码:

session_start();

if(isset($_POST['more'])){ $_SESSION['venda'] [$_GET['par']] = $_GET['par'] + 1 ; }

if(isset($_SESSION['venda'])){}
else{ $_SESSION['venda'] = array(); }

if(isset($_GET['par'])){ $_SESSION['venda'] [$_GET['par']] = 1 ; }

if(isset($_GET['del'])){ 
$Del = $_GET['del'];
unset($_SESSION['venda'][$Del]);

一切正常,直到我添加+ href,然后它才对表格进行格式化: broken table

我已经确认这不是CSS错误,href带有/不带有CSS都消失了。

1 个答案:

答案 0 :(得分:0)

您需要删除链接中的#

<a href="?more=true&par='.$Prod.'>+</a>

代替

<a href="#?more=true&par='.$Prod.'>+</a>

向服务器发送请求时,浏览器会忽略第一个#之后的所有内容。您的GET参数当前未随请求一起发送。


更新

签出标记的行。每次设置par时,它都会重置venda→par(如果要增加值,通常是这种情况)。也许您还希望它初始化var。在这种情况下,您需要修复if语句(if(!isset($_GET['par'])){ /* ... */ })。 Venda也被重置。

session_start();

if(isset($_POST['more'])){ $_SESSION['venda'] [$_GET['par']] = $_GET['par'] + 1 ; }

if(isset($_SESSION['venda'])){}
else{ $_SESSION['venda'] = array(); }

// This line
if(isset($_GET['par'])){ $_SESSION['venda'] [$_GET['par']] = 1 ; }

if(isset($_GET['del'])){ 
$Del = $_GET['del'];
unset($_SESSION['venda'][$Del]);

更新2

我认为您想要这样的代码:

session_start();

// First, check if all vars are initialized

//  Init if 'venda' is NOT set
if (!isset($_SESSION['venda'])) {
  $_SESSION['venda'] = array();
}

// Init if 'venda['par'] is not set
if (isset($_GET['par']) && !isset($_SESSION['venda'][$_GET['par']])) {
  $_SESSION['venda'][$_GET['par']] = 1;
}

// Run the updates/deletions

// Increase if 'more' is set
if (isset($_POST['more']) && isset($_GET['par'])) {
  $_SESSION['venda'][$_GET['par']] += 1;
}

// Delete
if (isset($_GET['del'])) {
  $Del = $_GET['del'];
  unset($_SESSION['venda'][$Del]);
}