gpt4 book ai didi

php - 使用 php 进行分页而不使用 limit 语法

转载 作者:行者123 更新时间:2023-11-29 23:23:36 25 4
gpt4 key购买 nike

我只是想问这是否可能,如果可以,如何实现?因为我已经没有主意了。我的查询当时只获得 1 条记录,因此该限制对我不起作用。我正在制作一个 searchbar 函数,其中有 4 个表使用 union 。这是代码

if (isset($_POST['searchquery']) && $_POST['searchquery'] !=""){
$searchquery = preg_replace('#[^a-z 0-9?!]#i', '' , $_POST['searchquery']);
$radio = $_POST['radio'];


$sqlcommand = "(SELECT id_fakultas as id_search
FROM tabel_fakultas
WHERE kode_fakultas LIKE '%$searchquery%' OR ket_fakultas LIKE '%$searchquery%')


UNION

(SELECT id_jenis AS id_search
FROM tabel_jenis
WHERE jenis_surat LIKE '%$searchquery%' OR ket_jenis LIKE '%$searchquery%')

UNION

(SELECT id_kodearea as id_search
FROM tabel_kodearea
WHERE kode_area LIKE '%$searchquery%' OR ket_kodearea LIKE '%$searchquery%')

UNION

(SELECT id_lembaga as id_search
FROM tabel_lembaga
WHERE kode_lembaga LIKE '%$searchquery%' OR ket_lembaga LIKE '%$searchquery%')

UNION

(SELECT id_prodi as id_search
FROM tabel_prodi
WHERE kode_prodi LIKE '%$searchquery%' OR ket_prodi LIKE '%$searchquery%')

UNION

(SELECT id_surat AS id_search
FROM tabel_surat
WHERE

subyeksurat LIKE '%$searchquery%'
OR tanggal_srtmasuk LIKE '%$searchquery%'
OR tanggal_srtkeluar LIKE '%$searchquery%'
OR keterangan LIKE '%$searchquery%'
OR no_surat LIKE '%$searchquery%'
OR status_surat LIKE '%$searchquery%'
AND tipe_surat LIKE '%$searchquery%'

)


";

$runquery = mysql_query($sqlcommand)or die(mysql_error());

$query_jumlah = mysql_num_rows ($runquery);

所以无论我输入什么,它都会检查与这 4 个表匹配的 id。获得 id 后,我将用它来获取我想要的记录。它在第四张 table 上。

if ( $query_jumlah > 0 )
{


while ($data = mysql_fetch_array($runquery)){

$cari = $data['id_search'];


echo $posisi, $batas;
$commandcari = mysql_query("SELECT
tfak.kode_fakultas, tfak.ket_fakultas,
tj.jenis_surat, tj.ket_jenis,
tk.kode_area , tk.ket_kodearea,
tlem.kode_lembaga, tlem.ket_lembaga,
tprodi.kode_prodi, tprodi.ket_prodi,
ts.tipe_surat, ts.subyeksurat, ts.tanggal_srtmasuk, ts.tanggal_srtkeluar, ts.keterangan, ts.no_surat, ts.status_surat,
ts.id_surat, ts.id_fakultas, ts.id_jenis, ts.id_lembaga, ts.id_prodi, ts.tipe_surat, ts.file
FROM tabel_surat ts
LEFT JOIN tabel_jenis tj
ON ts.id_jenis=tj.id_jenis
LEFT JOIN tabel_kodearea tk
ON ts.id_kodearea=tk.id_kodearea
LEFT JOIN tabel_lembaga tlem
ON ts.id_lembaga=tlem.id_lembaga
LEFT JOIN tabel_prodi tprodi
ON ts.id_prodi=tprodi.id_prodi
LEFT JOIN tabel_fakultas tfak
ON ts.id_fakultas=tfak.id_fakultas


WHERE
ts.id_surat LIKE '%$cari%'

OR ts.id_lembaga LIKE '%$cari%'
OR ts.id_fakultas LIKE '%$cari%'
OR ts.id_prodi LIKE '%$cari%'
AND ts.tipe_surat LIKE '%$radio%'
LIMIT $posisi,$batas

") or die(mysql_error());


if(mysql_num_rows($commandcari) > 0 ) {
$no1 =$posisi+1;
while ($data2 = mysql_fetch_array($commandcari)) {
$no++;
$pembuat_fakultas=$data2['id_fakultas'];
$pembuat_lembaga=$data2['id_lembaga'];
$pembuat_prodi=$data2['id_prodi'];
echo '
<tr>

<td align="center"> '.$no.'</td>
<td align="center"> '.$data2['no_surat'].'</td>
<td align="center"> '.$data2['jenis_surat'].'</td>
<td align="center"> '.$data2['subyeksurat'].'</td>
<td align="center"> '.$data2['ket_jenis'].'</td>
<td align="center"> '.$data2['kode_area'].'</td>';
if ($pembuat_fakultas!=''){
echo '<td align="center"> '.$data2['ket_fakultas'].'</td>' ; }
elseif ($pembuat_lembaga !=''){
echo '<td align="center"> '.$data2['ket_lembaga'].'</td>' ; }
elseif ($pembuat_prodi != ''){
echo '<td align="center"> '.$data2['ket_prodi'].'</td>' ; }

if ($radio!='suratkeluar'){
echo '<td align="center"> '.$data2['tanggal_srtmasuk'].'</td>';}
elseif ($radio!='suratmasuk'){
echo '<td align="center"> '.$data2['tanggal_srtkeluar'].'</td>';}




echo'
<td align="center"> '.$data2['keterangan'].'</td>
<td align="center"><a href="'.$data2['file'].'" target = "_blank"> Preview</a></td>
</tr>
';




}




}

}

}

如果我使用通常的分页,在我的 mysql_query 中使用 LIMIT ,我的行只返回 1。这是因为我只从联合中获取 id,并查看哪些记录使用我从第四个表上的联合中获取的 id。因此,如果我从联合中获得 3 个 id,例如 ID1、ID2、ID3,当我在 $commandcari 上使用它时,它将在每个 id 上返回 1 条记录 num 行。

select * from tabel_surat where id_surat = id1
select * from tabel_surat where id_surat = id2
select * from tabel_surat where id_surat = id3

是否可以在不使用限制的情况下进行分页?

注意:我知道我的英语不足以进行解释(这不是我的主要语言),但我希望您能理解我的问题。

最佳答案

如果您需要在多个表中进行搜索分页,那么您需要从4个表中获取所有结果记录并在客户端进行分页。即。

  • 假设页面大小为 10
  • 获取所有数据返回15条记录
  • 如果 page > 1,则丢弃第一个 (page-1)*pagesize 记录
  • 循环遍历 10 条记录,除非没有更多记录 - 即。第 2 页您只有 5 条记录。

正常打印分页链接

关于php - 使用 php 进行分页而不使用 limit 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27116792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com