我只是想问问这是否可行,如果可行,怎么办?因为我没办法了。我的查询一次只获得1条记录,因此该限制对我不起作用。
我正在做一个searchbar函数,使用union有4个表。
这是代码

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后,我将使用它来获取所需的记录。在第四张桌子上。

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条记录
如果页面> 1,则丢弃第一(第1页)*页面大小记录
循环浏览10条记录,除非没有其他记录-即。在第2页上,您只有5条记录。


正常打印分页链接

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

10-14 15:07
查看更多