gpt4 book ai didi

php - 使用表单保存多个 session 变量

转载 作者:行者123 更新时间:2023-12-04 04:33:32 24 4
gpt4 key购买 nike

我正在处理一个包含维度字段的表单,客户可以在其中填写这些字段并提交它们,它们将保存在 session 变量中。到目前为止,我成功了 1 个表单,但是在保存了 1 次字段的数据后,客户需要可以再次填写表单(对于维度)以及另一个和另一个等。

(我在标题顶部开始了 session )

形式:

<form method="POST">

<label>A:</label>
<input name="wz_saving_a" type="text" />

<label>B:</label>
<input name="wz_saving_b" type="text" />

<input name="wz_submit_saving_1" type="submit" class="add_button" value="Add" />

</form>

用于在 $_SESSION 中保存数据的 PHP:
if(isset($_POST['wz_submit_saving_1'])) :

// Save submit
$_SESSION['wz_submit_saving_1'] = $_POST['wz_submit_saving_1'];

// Save wz_saving_a in session
$_SESSION['wz_saving_a'] = $_POST['wz_saving_a'];

// Save wz_saving_b in session
$_SESSION['wz_saving_b'] = $_POST['wz_saving_b'];

endif;

提交后,我将提交的数据显示给客户,例如:
<?php if(isset($_SESSION['wz_submit_saving_1'])) : ?>

<div id="wz_config_1" class="wz_config">

<ul>
<li>Your dimensions:</li>
<li>A: <?php if(isset($_SESSION['wz_saving_a'])) : echo $_SESSION['wz_saving_a']; endif; ?> mm</li>
<li>B: <?php if(isset($_SESSION['wz_saving_b'])) : echo $_SESSION['wz_saving_b']; endif; ?> mm</li>
</ul>

<?php endif; ?>

所以这适用于 1 次提交,如果我提交表单,第一个的 session 变量将被新数据刷新,但现在我需要做一些事情,以便客户可以添加多个维度集并保存在 session 中。

我的想法是在每次提交表单后将字段的每个名称更改为 _1 _2 _3。但我不知道如何解决这个问题,所以我希望有人能给我一些建议。

如果你愿意,我可以给我的例子的网址吗?

谢谢!

最佳答案

您可以使用多维 session 数组:

$_SESSION['wz_saving_b'][$_POST['wz_saving_b']] = $_POST['wz_saving_b'];

或者,只需使用 [] 添加新键,但您将拥有重复的值
$_SESSION['wz_saving_b'][] = $_POST['wz_saving_b'];

假设用户在 wz_saving_b 中输入以下内容:
1 , 2 , 3
<?php
session_start();
?>
<form method="POST" action="">

<label>A:</label>
<input name="wz_saving_a" type="text" />

<label>B:</label>
<input name="wz_saving_b" type="text" />

<input name="wz_submit_saving_1" type="submit" class="add_button" value="Add" />

</form>
<?php
if(isset($_POST['wz_submit_saving_1'])):
$_SESSION['wz_saving_b'][$_POST['wz_saving_b']] = $_POST['wz_saving_b'];
?>
<div id="wz_config_1" class="wz_config">

<ul>
<li>Your dimensions:</li>
<li>B: <?php if(isset($_SESSION['wz_saving_b'])): foreach($_SESSION['wz_saving_b'] as $k => $v) { echo "$v "; } endif; ?> mm</li>
</ul>
<?php endif; ?>


<?php
var_dump($_SESSION);
?>

输出:
    Your dimensions:
B: 1 2 3 mm

array (size=1)
'wz_saving_b' =>
array (size=3)
1 => string '1' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)

请求的抽象:
<?php
session_start();
?>
<form method="POST" action="">

<label>A:</label>
<input name="wz_saving_a" type="text" />

<label>B:</label>
<input name="wz_saving_b" type="text" />

<label>C:</label>
<input name="wz_saving_c" type="text" />

<label>D:</label>
<input name="wz_saving_d" type="text" />

<input name="wz_submit_saving_1" type="submit" class="add_button" value="Add" />

</form>
<?php
if(isset($_POST['wz_submit_saving_1'])) {
foreach($_POST as $key => $value) {
if($key != 'wz_submit_saving_1') {
$_SESSION[$key][] = $value;
}
}
}
?>
<div id="wz_config_1" class="wz_config">

<ul>
<li>Your dimensions:</li>
<?php foreach($_SESSION as $k => $v): ?>
<?php foreach($v as $saving => $wz): ?>
<li><?= strtoupper(substr($k, 10));?> : <?=$wz;?> mm</li>
<?php endforeach; ?>
<?php endforeach; ?>
</ul>


<?php
var_dump($_SESSION);
?>

我在这里用一些数字做了一些随机输入。输出是:
    Your dimensions:
A : 1 mm
A : 6 mm
A : 5 mm
B : 1 mm
B : 6 mm
B : 5 mm
C : 4 mm
C : 8 mm
C : 5 mm
D : 4 mm
D : 7 mm
D : 5 mm

array (size=4)
'wz_saving_a' =>
array (size=3)
0 => string '1' (length=1)
1 => string '6' (length=1)
2 => string '5' (length=1)
'wz_saving_b' =>
array (size=3)
0 => string '1' (length=1)
1 => string '6' (length=1)
2 => string '5' (length=1)
'wz_saving_c' =>
array (size=3)
0 => string '4' (length=1)
1 => string '8' (length=1)
2 => string '5' (length=1)
'wz_saving_d' =>
array (size=3)
0 => string '4' (length=1)
1 => string '7' (length=1)
2 => string '5' (length=1)

根据提供的代码,这应该可以工作,我尝试输入一次 12毫米位置 x ,然后 45毫米位置 y ,输出为:
Rechte sparing 1

Formaat van de sparing:
A: 1 mm
B: 2 mm
Positionering van de sparing:
x

Rechte sparing 1

Formaat van de sparing:
A: 4 mm
B: 5 mm
Positionering van de sparing:
y

代码:
<?php

if(isset($_POST['wz_submit_saving_1'])) :

$straight_saving = array(
'wz_str_saving' => $_POST['wz_str_saving'],
'wz_saving_a' => $_POST['wz_saving_a'],
'wz_saving_b' => $_POST['wz_saving_b'],
'wz_submit_saving_1' => $_POST['wz_submit_saving_1']
);

$_SESSION['straight_saving'][] = $straight_saving;

endif;


if(isset($_SESSION['straight_saving'])) :

foreach($_SESSION['straight_saving'] as $sav) {

?>

<div class="wz_config">

<h3>Rechte sparing 1</h3>


<ul>
<li>
<ul>
<li>Formaat van de sparing:</li>
<li>A: <?php echo $sav['wz_saving_a']; ?> mm</li>
<li>B: <?php echo $sav['wz_saving_b']; ?> mm</li>
</ul>
</li>

<li>
<ul>
<li>Positionering van de sparing:</li>
<li><?php echo $sav['wz_str_saving']; ?></li>
</ul>
</li>
</ul>

<div class="clear"></div>

</div><!--End wz_config_1-->

<?php } endif; ?>

关于php - 使用表单保存多个 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20144651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com