-4

我在提交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>

";
?>

该代码确实在网站上提交,但不会更改数据。该表单是使用选择选项样式制作的。这是代码:

<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我认为缺少一些信息是有问题的。我的代码有什么问题?

4

3 回答 3

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
于 2013-08-17T15:22:49.810 回答
0

这里有很多问题!与您的可能问题最相关的是:

  • ; $style;可能没有做你认为它做的事情
  • <li value="…">没有意义,不会与表单一起提交(并且 an<li>在 a 之外无效<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 对这类事情同样适用,而且链接比按钮更容易设置样式。

于 2013-08-17T15:40:05.183 回答
-1

是的你是对的。您错过了在 li 中分配变量。更改以下代码,并在将值分配给变量($theme1、$theme2、$theme3)时,使用单引号分配值,因为它们都是字符串。

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 变量。

于 2013-08-17T15:24:30.243 回答