我在li
上提交问题时代码正在提交我的数据没有变化。这是代码:
<?php
$theme1 = business;
$theme2 = modern;
$theme3 = web2;
if(isset($_POST['style']))
{setcookie('style', $_POST['style'], time()+(60*60*24*1000));
$style=$_POST['style'];}
elseif(isset($_COOKIE['style']))
{$style=$_COOKIE['style'];}
else
{$style=$theme1;}
echo "
<link href='"; $style; echo".css' rel='stylesheet' type='text/css' />
<form action='".$_SERVER['PHP_SELF']."' method='post' id='myForm'>
<li onclick='myForm.submit();' value='$theme1'> business</li>
</form>
";
?>
代码确实在网站上提交,但它没有更改数据。表单是使用select选项样式制作的。这是代码:
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<select name="style">
<option type="submit" <?php echo "value='$theme1'";if($style == $theme1){echo "selected='selected'";}?>><?php echo $theme1; ?></option>
<option type="submit" <?php echo "value='$theme2'";if($style == $theme2){echo "selected='selected'";}?>><?php echo $theme2; ?></option>
<option type="submit" <?php echo "value='$theme3'";if($style == $theme3){echo "selected='selected'";}?>><?php echo $theme3; ?></option>
</select>
<input type="submit">
</form>
我认为li
遗漏了一些信息存在问题。我的代码出了什么问题?
答案 0 :(得分:0)
有很多错误,但这里有一些修复
$theme1 = 'business';
$theme2 = 'modern';
$theme3 = 'web2'; //qoute strings
if(isset($_POST['style'])){
setcookie('style', $_POST['style'], time()+(60*60*24*1000));
$style=$_POST['style'];
}
elseif(isset($_COOKIE['style'])){
$style=$_COOKIE['style'];
}else{
$style=$theme1;}
echo "<link href='". $style . ".css' rel='stylesheet' type='text/css' />"; //this line was way off
答案 1 :(得分:0)
这里有很多问题!与您可能出现的问题最相关的是:
; $style;
可能不会做你认为的事情<li value="…">
没有意义,不会随表单一起提交(<li>
在<ul>
之外无法开始使用)所以这里有两个修复使用PHP的标签和<input type="submit">
,以及一些代码样式更改 - 假设您使用的是PHP 5.4或更高版本:
<?php
$themes = ['business', 'modern', 'web2'];
if(isset($_POST['style'])) {
setcookie('style', $_POST['style'], time() + (60 * 60 * 24 * 1000));
$style = $_POST['style'];
} elseif(isset($_COOKIE['style'])) {
$style = $_COOKIE['style'];
} else {
$style = $themes[0];
}
?>
<link href="<?= $style ?>.css" rel="stylesheet" type="text/css" />
<form method="POST" id="myForm">
<ul>
<?php foreach($themes as $theme): ?>
<li><input type="submit" name="style" value="<?= $theme ?>" /></li>
<?php endforeach; ?>
</ul>
</form>
我还建议不要使用POST吗?如果有人试图刷新页面,那就太烦人了。 GET对于这种事情来说同样有用,而且链接比按钮更容易风格。
答案 2 :(得分:-1)
是的,你是对的。您错过了在li中分配变量。更改以下代码并在将值赋给变量($ theme1,$ theme2,$ theme3)时,使用单引号分配值,因为all都是字符串。
echo "<link href='" . $style . ".css' rel='stylesheet' type='text/css' /><form action='" . $_SERVER['PHP_SELF'] . "' method='post' id='myForm'><li onclick='myForm.submit();' value='" . $theme1 . "'>" . $style . "</li></form>";
注意:此处代替静态值“business”,将其更改为$ style variable。