Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据情况保留所有以前的数据_Php - Fatal编程技术网

Php 根据情况保留所有以前的数据

Php 根据情况保留所有以前的数据,php,Php,我试图根据计数器显示两个产品名称。我已经声明了一个会话变量“counter”。如果单击按钮,我想显示第一个产品名称,如果再次单击按钮,我想显示两个产品名称 戴尔 苹果 但是,如果我第二次单击该按钮,则第二个产品名称将替换第一个产品名称;我想展示这两种产品 我该如何解决这个问题 我的代码: <?php session_start(); include('connect.php'); // if counter is not set, set to zero if (!isset($_SES

我试图根据计数器显示两个产品名称。我已经声明了一个会话变量“counter”。如果单击按钮,我想显示第一个产品名称,如果再次单击按钮,我想显示两个产品名称

戴尔

苹果

但是,如果我第二次单击该按钮,则第二个产品名称将替换第一个产品名称;我想展示这两种产品

我该如何解决这个问题

我的代码:

<?php
session_start();
include('connect.php');

// if counter is not set, set to zero
if (!isset($_SESSION['counter'])) {
    $_SESSION['counter'] = 0;
}

// if button is pressed, increment counter
if (isset($_POST['button'])) {
    ++$_SESSION['counter'];
    // Get data according to id 

    $userid2 = $_POST['id2'];
    $query3 = "select * from product where  id='" . $userid2 . "'";
    $result3 = mysql_query($query3) or die(mysql_error());
    $data3 = mysql_fetch_array($result3);

    if ($_SESSION['counter'] == 1) {
        echo $data3['name'] . "<br>";
    }

    if ($_SESSION['counter'] == 2) {
        echo $data3['name'];
    }
}

// reset counter
if (isset($_POST['reset'])) {
    $_SESSION['counter'] = 0;
}

$query2 = "select * from product ";
$result = mysql_query($query2) or die(mysql_error());

$data = mysql_fetch_array($result);

$sr = $data['sr'];
$name = $data['name'];
$price = $data['price'];
$qunt = $data['quantity'];

$total += $data['price'];

while ($data = mysql_fetch_array($result)) {
    ?>
    <form method="POST" action="">
        <table border="1">
            <tr>
                <?PHP
                echo "<tr><td>" . $data['id'] . "</td><td>" . $sr . "</td><td >" . $name . "</a></td><td>" . $price . "</td><td>" . $qunt . "</td> ";
                ?>
            <tr>
        </table>
        <input type="hidden" name="id2" value="<?php echo $data['id'] ?>"/>

        <input type="hidden" name="counter" value="<?php echo $_SESSION['counter']; ?>"/>
        <input type="submit" name="button" value="Counter"/>
        <input type="submit" name="reset" value="Reset"/>

        <br/><?php echo $_SESSION['counter']; ?>
    </form>
<?php }
?>

如果
阻止类似的内容,只需更改

if($_SESSION['counter']==1 || $_SESSION['counter']==2) {
  echo $data3['name']."<br>";
}
把它列在第页


注意:不要使用
mysql.*
api,它不推荐使用PDO,它的安全性和支持很多数据库

当你提出第二个请求时,你正在失去当前状态;您不再有权访问第一个产品名称。解决此问题的一种方法是添加第二个会话变量以跟踪产品,例如:

<?php
session_start();
include('connect.php');

// if counter is not set, set to zero
if (!isset($_SESSION['counter']) || !isset($_SESSION['products'])) {
    $_SESSION['counter'] = 0;
    // Create a new array in your session
    $_SESSION['products'] = array();
}

// if button is pressed, increment counter
if (isset($_POST['button'])) {
    ++$_SESSION['counter'];
    // Get data according to id

    $userid2 = $_POST['id2'];
    $query3 = "select * from product where  id='" . $userid2 . "'";
    $result3 = mysql_query($query3) or die(mysql_error());
    $data3 = mysql_fetch_array($result3);

    // Add to your products session array
    $_SESSION['products'][] = $data3['name'];

    // Reduce to two products
    $_SESSION['products'] = array_slice($_SESSION['products'], -2, 2);

    // Print each product in your products array, max of two
    foreach($_SESSION['products'] as $name) {
        echo $name . "<br />";
    }
}

// reset counter
else if (isset($_POST['reset'])) {
    $_SESSION['counter'] = 0;
    $_SESSION['products'] = array();
}

$query2 = "select * from product ";
$result = mysql_query($query2) or die(mysql_error());

$data = mysql_fetch_array($result);

$sr = $data['sr'];
$name = $data['name'];
$price = $data['price'];
$qunt = $data['quantity'];

$total += $data['price'];

while ($data = mysql_fetch_array($result)) {
    ?>
    <form method="POST" action="">
        <table border="1">
            <tr>
                <?= "<tr><td>" . $data['id'] . "</td><td>" . $sr . "</td><td >" . $name . "</a></td><td>" . $price . "</td><td>" . $qunt . "</td> " ?>
            <tr>
        </table>
        <input type="hidden" name="id2" value="<?= $data['id'] ?>"/>

        <input type="hidden" name="counter" value="<?= $_SESSION['counter'] ?>"/>
        <input type="submit" name="button" value="Counter"/>
        <input type="submit" name="reset" value="Reset"/>

        <br/><?= $_SESSION['counter']; ?>
    </form>
<?php }
?>



需要记住的是:坦率地说,在新开发中使用mysql_*函数是危险的。您不能在这些函数中使用预先准备好的语句,这意味着任何人都可能严重破坏您的数据库。阅读更多信息。

您的答案很有帮助,但问题是它不止两次显示产品名称。我只需要两个产品名称就会显示出来;我刚刚添加了一个数组\u切片。这将在产品列表中保留最近的两种产品。如果要单击前两个产品,则应将-2替换为0
<?php
session_start();
include('connect.php');

// if counter is not set, set to zero
if (!isset($_SESSION['counter']) || !isset($_SESSION['products'])) {
    $_SESSION['counter'] = 0;
    // Create a new array in your session
    $_SESSION['products'] = array();
}

// if button is pressed, increment counter
if (isset($_POST['button'])) {
    ++$_SESSION['counter'];
    // Get data according to id

    $userid2 = $_POST['id2'];
    $query3 = "select * from product where  id='" . $userid2 . "'";
    $result3 = mysql_query($query3) or die(mysql_error());
    $data3 = mysql_fetch_array($result3);

    // Add to your products session array
    $_SESSION['products'][] = $data3['name'];

    // Reduce to two products
    $_SESSION['products'] = array_slice($_SESSION['products'], -2, 2);

    // Print each product in your products array, max of two
    foreach($_SESSION['products'] as $name) {
        echo $name . "<br />";
    }
}

// reset counter
else if (isset($_POST['reset'])) {
    $_SESSION['counter'] = 0;
    $_SESSION['products'] = array();
}

$query2 = "select * from product ";
$result = mysql_query($query2) or die(mysql_error());

$data = mysql_fetch_array($result);

$sr = $data['sr'];
$name = $data['name'];
$price = $data['price'];
$qunt = $data['quantity'];

$total += $data['price'];

while ($data = mysql_fetch_array($result)) {
    ?>
    <form method="POST" action="">
        <table border="1">
            <tr>
                <?= "<tr><td>" . $data['id'] . "</td><td>" . $sr . "</td><td >" . $name . "</a></td><td>" . $price . "</td><td>" . $qunt . "</td> " ?>
            <tr>
        </table>
        <input type="hidden" name="id2" value="<?= $data['id'] ?>"/>

        <input type="hidden" name="counter" value="<?= $_SESSION['counter'] ?>"/>
        <input type="submit" name="button" value="Counter"/>
        <input type="submit" name="reset" value="Reset"/>

        <br/><?= $_SESSION['counter']; ?>
    </form>
<?php }
?>