使用cookie或其他东西来恢复控制PHP变量的下拉列表框的状态



说明一下,我对php的了解非常有限。现在,我正试图使一个脚本,生成随机的youtube视频基于数量的观点,国家和类别,像这个这里使用他们的api。我设法得到一个工作下拉列表来选择视频必须要显示的最小数量的视图-它的工作很好(接下来我将尝试使其他两个工作),但问题是,我不知道如何使下拉列表保持所选值后页面刷新。这个功能非常重要,因为我希望能够选择最小数量的视图,并希望它保持在那个数字,直到我从下拉列表中选择一个不同的。我真不知道该用什么方法,请帮帮我吧。同样,我将$views的初始值设置为0 + $_REQUEST['views'].,因为它后来是链接的一部分,所以它需要是一个数字。你认为是否有更好的方法来解决这个问题?这是一个测试站点的链接,如果你想看,代码在下面:

<body>
<?php 
$views = 0 + $_REQUEST['views'];
$countries = "ES-US";
$category = "Comedy"; ?>

<div id="viewsdropdown">
<p>
View videos with
  <form name="views" method="POST" action="random.php">
        <select name='views' onChange='document.views.submit()'>
             <option selected value='0'>0</option>
             <option  value='50'>50</option>
             <option  value='100'>100</option>
             <option  value='500'>500</option>
             <option  value='5000'>5,000</option>
             <option  value='35000'>35,000</option>
             <option  value='75000'>75,000</option>
             <option  value='125000'>125,000</option>
             <option  value='150000'>150,000</option>
             <option  value='250000'>250,000</option>
             <option  value='500000'>500,000</option>
             <option  value='1000000'>1,000,000</option>
             <option  value='3000000'>3,000,000</option>
             <option  value='5000000'>5,000,000</option>
             <option  value='10000000'>10,000,000</option>
             <option  value='15000000'>15,000,000</option>
             <option  value='20000000'>20,000,000</option>
    </select>
        </form>
  <p>views or more
  </p>
</div>
<div id="videocenter">
  <?php

$url = "http://flyhour.tv/bots/api/index.php?type=2&countries=".$countries."&category=".$category."&views=".$views;

$file = $url;

echo $file
?>
</div>
</body>
</html> 

编辑代码:

<body>
<?php 
$views = (int) $_POST['views'];
$countries = "ES-US";
$category = "Comedy"; ?>
<div id="viewsdropdown">
<p>
View videos with
  <form name="views" method="POST" action="random.php">
        <select name='views' onChange='document.views.submit()'>
            <? $views_options = array (50, 100, 500, 5000, 35000, 75000, 125000, 150000, 250000, 500000, 1000000, 3000000, 5000000, 10000000, 15000000, 20000000);
foreach($views_options as $number_of_views) {
    echo '<option value="' . $number_of_views . '"' . ($_POST['views']==35000 ? ' selected="selected"' : '') . '>' . number_format($number_of_views) . '</option>';
}?>
    </select>
        </form>
  <p>views or more
  </p>
</div>
<div id="videocenter">
  <?php

$url = "http://flyhour.tv/bots/api/index.php?type=2&countries=".$countries."&category=".$category."&views=".$views;

$file = $url;

对于每个"option"行,添加以下PHP脚本:

<option  value='35000'<?= $_POST['views']==35000 ? ' selected="selected" : '' ?>>35,000</option>

更好的是,您可以将整个块更改为如下内容:

$views_options = array (50, 100, 500, 5000, 35000, 75000, 125000);
foreach($views_options as $number_of_views) {
    echo '<option value="' . $number_of_views . '"' . ($_POST['views']==35000 ? ' selected="selected"' : '') . '>' . number_format($number_of_views) . '</option>';
}

既然你是张贴表单的值视图应该始终存在于$_POST(或,当你使用$_REQUEST)超全局…

所以你需要这样写:

<?php
$views = (int) $_REQUEST['views'];
$countries = "ES-US";
$category = "Comedy"; 
?>
<div id="viewsdropdown">
<p>
View videos with
  <form name="views" method="POST" action="random.php">
        <select name='views' onChange='document.views.submit()'>
             <option value='0'<?php echo !$iViews ? " selected="selected"" : ""; ?>>0</option>
             <option value='50'<?php echo $iViews > 49 && $iViews < 100 ? " selected="selected"" : ""; ?>>50</option>
             <option value='100'<?php echo $iViews > 99 && $iViews < 500 ? " selected="selected"" : ""; ?>>100</option>
             <option value='500'<?php echo $iViews > 499 && $iViews < 5000 ? " selected="selected"" : ""; ?>>500</option>
             <option value='5000'<?php echo $iViews > 4999 && $iViews < 35000 ? " selected="selected"" : ""; ?>>5,000</option>
             <option value='35000'<?php echo $iViews > 34999 && $iViews < 75000 ? " selected="selected"" : ""; ?>>35,000</option>
             <option value='75000'<?php echo $iViews > 74999 && $iViews < 125000 ? " selected="selected"" : ""; ?>>75,000</option>
             <option value='125000'<?php echo $iViews > 124999 && $iViews < 150000 ? " selected="selected"" : ""; ?>>125,000</option>
             <option value='150000'<?php echo $iViews > 149999 && $iViews < 250000 ? " selected="selected"" : ""; ?>>150,000</option>
             <option value='250000'<?php echo $iViews > 249999 && $iViews < 500000 ? " selected="selected"" : ""; ?>>250,000</option>
             <option value='500000'<?php echo $iViews > 499999 && $iViews < 1000000 ? " selected="selected"" : ""; ?>>500,000</option>
             <option value='1000000'<?php echo $iViews > 999999 && $iViews < 3000000 ? " selected="selected"" : ""; ?>>1,000,000</option>
             <option value='3000000'<?php echo $iViews > 2999999 && $iViews < 5000000 ? " selected="selected"" : ""; ?>>3,000,000</option>
             <option value='5000000'<?php echo $iViews > 4999999 && $iViews < 10000000 ? " selected="selected"" : ""; ?>>5,000,000</option>
             <option value='10000000'<?php echo $iViews > 9999999 && $iViews < 15000000 ? " selected="selected"" : ""; ?>>10,000,000</option>
             <option value='15000000'<?php echo $iViews > 14999999 && $iViews < 20000000 ? " selected="selected"" : ""; ?>>15,000,000</option>
             <option value='20000000'<?php echo $iViews > 19999999 ? " selected="selected"" : ""; ?>>20,000,000</option>
    </select>
</form>
// ... and so on ...

最新更新