php/html - 下拉菜单和分页的逻辑

标签 php html pagination

我在更改我想要显示的图像数量的逻辑上遇到了一些麻烦。

  1. 无法选择第一个选项 (5)。
  2. 选定的选项始终为 10。(可能与 if 语句有关)if 语句的想法是在第一次显示页面时默认一个值。我已经尝试了 selected 属性,但这不起作用,因为表单是一个更改事件。
  3. 最后,分页错误:如果我成功更改代码以正确显示图像数量,分页链接就会乱七八糟。

		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/

相关文章:

php - Wordpress 插件表,无法使用 dbDelta 创建,尽管 sql 是正确的

javascript - 显示更多和显示更少的文本区域

php - 使用 "saved"搜索进行数据分页

javascript - 将控制添加到 Bootstrap 分页中每页的行数

php - 发送邮件进入垃圾邮件文件夹?

PHP解压数组

php - 在 laravel 模型中更改数据库连接

html - 带有 z-index 的图像中心

javascript - Plotly.js - gd.data 必须是一个数组

sql - 有点复杂的sql行位置