我在更改我想要显示的图像数量的逻辑上遇到了一些麻烦。
- 无法选择第一个选项 (5)。
- 选定的选项始终为 10。(可能与 if 语句有关)if 语句的想法是在第一次显示页面时默认一个值。我已经尝试了 selected 属性,但这不起作用,因为表单是一个更改事件。
- 最后,分页错误:如果我成功更改代码以正确显示图像数量,分页链接就会乱七八糟。
echo '<form method="post">
<select name="displayAmount" onchange="this.form.submit();">
<option>5</option>
<option>10</option>
<option>15</option>
<option>20</option>
<option>25</option>
</select>';
if (isset($_GET['$selected'])) {
$selected = $_POST['displayAmount'];
} else {
$selected = 10;
}
echo '</form>';
$con = mysqli_connect($theDb, $usr, $pass, "images");
mysqli_select_db($con, "images");
if (isset($_GET["page"])) {
$page = $_GET["page"];
} else {
$page = 1;
}
$start_from = ($page - 1) * $selected;
$query = "SELECT * FROM Greeting_Cards LIMIT $start_from, $selected";
$result = mysqli_query($con, $query);
$images = array();
while ($row = mysqli_fetch_assoc($result)) {
$images[] = $row['image'];
//store raw image
}
echo '<div id ="gallery">';
foreach ($images as $image) {
$origImage = $image;
$image = WideImage::loadFromString($image) -> resize(250, 250);
//image resizing here
echo '<a href="data:image/jpeg;base64,' . base64_encode($origImage) . '" data-lightbox="roadtrip"> <img id="database" class="fancybox" src="data:image/jpeg;base64,' . base64_encode($image) . '" /><a/>';
}
echo '</div>';
$query = "SELECT COUNT(image) FROM Greeting_Cards";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_row($result);
$total_images = $row[0];
$total_pages = ceil($total_images / $selected);
for ($i = 1; $i <= $total_pages; $i++) {
echo "<a id='paginations' href='greetingcards.php?page=" . $i . "'>" . $i . "</a> ";
}
最佳答案
对于 Q1 ,我认为您没有设置默认选择哪个选项。
对于Q2,也和Q1有关,selected没有设置option 10
下面是求解Q1和Q2的示例代码:
//Check whether displayAmount is already selected, if no select 10 as default
if (isset($_REQUEST['displayAmount'])) {
$selected = $_REQUEST['displayAmount'];
} else {
$selected = 10;
}
//Create array of display amount option for user to choose
$options = array(5,10,15,20);
//create the form
echo '<form method="post"><input type="button" />
<select name="displayAmount" onchange="this.form.submit();">';
//iterate through the option and set current option as selected.
foreach ($options as $option) {
if($option == $selected){
echo "<option selected='selected'> $option </option>";
}else{
echo "<option> $option </option>";
}
}
echo '</select>';
对于问题 3:分页链接困惑,因为在创建分页链接时不包括 displayAmount,因此您的 greetingcards.php 没有收到最新的 displayAmount 信息。
以下是修复示例:
echo "<a id='paginations' href='greetingcards.php?page=" . $i . "&displayAmount=".$selected."'>" . $i . "</a> ";
希望这有帮助:)
关于php/html - 下拉菜单和分页的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632328/