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