Я использую нумерацию страниц JQuery AJAX для поиска терминов, и две из четырех таблиц имеют ссылки в одном из своих столбцов. У меня есть то, что я хочу иметь возможность нажимать на некоторые из этих ссылок и искать в другой таблице для поиска. значение той ссылки, которую я нажал.
Проблема в том, что разбиение на страницы обычно работает только для таблиц со ссылками, но не для других двух таблиц, которые были найдены по значению нажатой ссылки. Проблема возникает как ajax, возвращающий те же 10,30,50 (на страницу) результаты, когда я нажимаю сначала 10 страниц нумерации страниц, если есть более 10 страниц. Если их менее 10 страниц, возвращаемые результаты будут одинаковыми на всех страницах, кроме последней. Еще больше результатов, которые я получаю на первой и других страницах (кроме последней один, или те, что на 10-й странице) — это 10-20 из базы данных, если, конечно, для каждой страницы 10. Вот код PHP и jQuery:
JQuery
$('html').hide().fadeIn(800)
$("#poc").click(function(){
$("#search-link").val("")
$(this).hide().fadeIn(800)
$(this).addClass('aktivan')
$("#form").hide()
$("#form2").hide()
$("#fail").hide()
$("#kontejner").hide()
$("#pret").removeClass('aktivan')
if ($("#pretragaDug").val()=="Pretraži"){
$("#uputstvo").html('<p class="tekst">Unesite termin u polje za pretragu i stisnite na "Pretraži"</p>').hide().fadeIn(800)
} else if ($("#pretragaDug").val()=="Претражи"){
$("#uputstvo").html('<p class="tekst">Унесите термин у поље за претрагу и стисните на "Претражи"</p>').hide().fadeIn(800)
}
}).addClass('aktivan')
$("#pret").click(function(){
$("#search-link").val("")
$("#fail").hide()
$("#kontejner").hide()
$("#form").hide()
$("#form2").hide()
$(this).hide().fadeIn(800)
$(this).addClass('aktivan')
$("#poc").removeClass('aktivan')
if ($("#pretragaDug").val()=="Pretraži"){
$("#uputstvo").html('<p class="tekst">Unesite ICS oznaku u polje za pretragu i stisnite na "Pretraži"</p>').hide().fadeIn(800)
} else if($("#pretragaDug").val()=="Претражи"){
$("#uputstvo").html('<p class="tekst">Унесите ICS ознаку у поље за претрагу и стисните на "Претражи"</p>').hide().fadeIn(800)
}
})
$("#jezik").toggle(function(){
$("html").hide().fadeIn(800)
$("#slika").attr('src','slike/logo_big_rs_cyr.jpg')
$("#jezik").html("Srpski LAT")
$("h1").html("Терминолошка база")
$("#poc").html("Претрага термина")
$("#pret").html("Претрага по ICS-у")
if ($("#poc").hasClass('aktivan')){
$("#uputstvo").html('<p class="tekst">Унесите термин у поље за претрагу и стисните на "Претражи"</p>')
} else if ($("#pret").hasClass('aktivan')){
$("#uputstvo").html('<p class="tekst">Унесите ICS ознаку у поље за претрагу и стисните на "Претражи"</p>')
}
$("#nr").text(function(){
return $(this).text().replace("termin","термин").replace("termini","термини");
})
$("#pretragaDug").attr('value','Претражи')
$("#fail").html('<p class="tekst">Унесите термин у поље за претрагу</p>')
$("#prazan").html("Термин или ознака није пронађен(а). Унесите други термин/ознаку")
$("#1").html("Термин (sr)")
$("#2").html("Дефиниција (sr)")
$("#3").html("Термин (en)")
$("#4").html("Дефиниција (en)")
$("#5").html("Тачка")
$("#6").html("Ознака нац. станд.")
$("#7").html("Ознака комисије")
$("#11").html("Код")
$("#12").html("Дефиниција (sr)")
$("#13").html("Дефиниција (en)")
$("#14").html("Дефиниција (fr)")
$("#15").html("Дефиниција (de)")
$("#21").html("Термин (sr)")
$("#22").html("Дефиниција (sr)")
$("#23").html("Термин (en)")
$("#24").html("Дефиниција (en)")
$("#25").html("Тачка")
$("#26").html("Ознака комисије")
$("#31").html("Одељак")
$("#32").html("Ознака нац. станд.")
$("#33").html("Ознака стандарда")
$("#34").html("Термин (en)")
$("#35").html("Дефиниција (en)")
$("#36").html("Термин (sr)")
$("#37").html("Дефиниција (sr)")
$('li.active,li.inactive').text(function(){
return $(this).text().replace("Prva","Прва").replace("Prethodna","Претходна").replace("Sledeća","Следећа").replace("Poslednja","Последња");
})
$(".total").text(function(){
return $(this).text().replace("Strana","Страна").replace("od","од");
})
$("#go_btn").attr('value','Иди на страну')
$("#per_btn").attr('value','Број редова по страни')
$("#footer p").html("Институт за стандардизацију Србије | Стевана Бракуса 2, 11030 Београд | тел. 00381 11 7541-421, 3409-301 | Инфоцентар тел. 00381 11 6547-293, 3409-384")
},function(){
$("html").hide().fadeIn(800)
$("#slika").attr('src','slike/logo_big_la.jpg')
$("#jezik").html("Српски CYR")
$("h1").html("Terminološka baza")
$("#poc").html("Pretraga termina")
$("#pret").html("Pretraga po ICS-u")
if ($("#poc").hasClass('aktivan')){
$("#uputstvo").html('<p class="tekst">Unesite termin u polje za pretragu i stisnite na "Pretraži"</p>')
} else if ($("#pret").hasClass('aktivan')){
$("#uputstvo").html('<p class="tekst">Unesite ICS oznaku u polje za pretragu i stisnite na "Pretraži"</p>')
}
$("#nr").text(function(){
return $(this).text().replace("термин","termin").replace("термини","termin");
})
$("#pretragaDug").attr('value','Pretraži')
$("#fail").html('<p class="tekst">Unesite termin u polje za pretragu</p>')
$("#prazan").html("Termin ili oznaka nije pronadjen(a). Unesite drugi termin/oznaku")
$("#1").html("Termin (sr)")
$("#2").html("Definicija (sr)")
$("#3").html("Termin (en)")
$("#4").html("Definicija (en)")
$("#5").html("Tačka")
$("#6").html("Oznaka nac. stand.")
$("#7").html("Oznake komisije")
$("#11").html("Kod")
$("#12").html("Definicija (sr)")
$("#13").html("Definicija (en)")
$("#14").html("Definicija (fr)")
$("#15").html("Definicija (de)")
$("#21").html("Termin (sr)")
$("#22").html("Definicija (sr)")
$("#23").html("Termin (en)")
$("#24").html("Definicija (en)")
$("#25").html("Tačka")
$("#26").html("Oznake komisije")
$("#31").html("Odeljak")
$("#32").html("Oznaka nac. stand.")
$("#33").html("Oznaka standarda")
$("#34").html("Termin (en)")
$("#35").html("Definicija (en)")
$("#36").html("Termin (sr)")
$("#37").html("Definicija (sr)")
$('li.active,li.inactive').text(function(){
return $(this).text().replace("Прва","Prva").replace("Претходна","Prethodna").replace("Следећа","Sledeća").replace("Последња","Poslednja");
})
$(".total").text(function(){
return $(this).text().replace("Страна","Strana").replace("од","od");
})
$("#go_btn").attr('value','Idi na stranu')
$("#per_btn").attr('value','Broj redova po strani')
$("#footer p").html("Institut za standardizaciju Srbije | Stevana Brakusa 2, 11030 Beograd | tel. 00381 11 7541-421,3409-301 | Infocentar tel. 00381 11 6547-293, 3409-384")
})
$("#pretragaDug").click(function(){
if ($("#search-text").val() != ""){
function loadData(page){
if ($("#poc").hasClass('aktivan') && $("#search-link").val()==""){
var baza = 1;
var search = $("#search-text").val();
} else if ($("#pret").hasClass('aktivan') && $("#search-link").val()==""){
var baza = 2;
var search = $("#search-text").val();
}
if ($("#poc").hasClass('aktivan') && $("#search-link").val()!=""){
var baza = 3;
var search = $("#search-link").val();
} else if ($("#pret").hasClass('aktivan') && $("#search-link").val()!=""){
var baza = 4;
var search = $("#search-link").val();
}
var perpage = $("#select").val();
var jezik = $("#pretragaDug").val();
$.ajax
({
type: "GET",
url: "load_data.php",
data: {search:search,page:page,perpage:perpage,jezik:jezik,baza:baza},
success: function(data)
{
$("#uputstvo").hide()
$("#fail").hide()
$("#form").hide().fadeIn()
$("#form2").hide().fadeIn()
$("#kontejner").html(data).hide().fadeIn()
}
});
}
loadData(1); // For first time page load default results
$('.active').live('click',function(){
var page = $(this).attr('p');
loadData(page);
$(this).unbind('click').bind('click');
});
$(".linktab1").live('click',function(){
var search1 = $(this).text();
var page = 1;
$("#search-link").val(search1);
loadData(page);
$(this).unbind('click').bind('click');
})
$(".linktab2").live('click',function(){
var search2 = $(this).text();
var page = 1;
$("#search-link").val(search2);
loadData(page);
$(this).unbind('click').bind('click');
})
$('#go_btn').live('click',function(){
var page = parseInt($('.goto').val());
var no_of_pages = parseInt($('.total').attr('a'));
if(page != 0 && page <= no_of_pages){
loadData(page);
$(this).unbind('click').bind('click');
}else if ($("#pretragaDug").val()=="Pretraži"){
alert('Unesite broj strane između 1 i '+no_of_pages);
$('.goto').val("").focus();
return false;
}else{
alert('Унесите број између 1 и '+no_of_pages);
$('.goto').val("").focus();
return false;
}
});
$('#per_btn').live('click',function(){
var perpage = $("#select").val();
var page = $(".active").attr('p');
loadData(page);
$(this).unbind('click').bind('click');
});
} else if ($("#search-text").val() == "") {
$("#form").hide()
$("#form2").hide()
$("#uputstvo").hide()
$("#kontejner").hide()
if ($("#pretragaDug").val()=="Pretraži"){
$("#fail").fadeIn(800)
} else {
$("#fail").html('<p class="tekst">Унесите термин у поље за претрагу</p>').fadeIn(800)
}
}
})
PHP
<?php
$page = $_GET['page'];
$baza = $_GET['baza'];
$search = $_GET['search'];
$cur_page = $page;
$page -= 1;
if ($_GET['perpage']==""){
$per_page = 10;
} else {
$per_page = $_GET['perpage'];
}
$previous_btn = true;
$next_btn = true;
$first_btn = true;
$last_btn = true;
$start = $page * $per_page;
include "connection.php";$limit='OFFSET '.$start.' ROWS FETCH NEXT '.$per_page.' ROWS ONLY';
if ($baza==1){
$tableQuery = "SELECT * FROM tcpr WHERE TerSrp LIKE '%$search%' OR TerEng LIKE '%$search%' ORDER BY code ASC $limit";
$query_pag_num = "SELECT * FROM tcpr WHERE TerSrp LIKE '%$search%' OR TerEng LIKE '%$search%' ORDER BY code ASC";
} else if ($baza==2){
$tableQuery = "SELECT * FROM ics WHERE code LIKE '%$search%' ORDER BY code ASC $limit";
$query_pag_num = "SELECT * FROM ics WHERE code LIKE '%$search%' ORDER BY code ASC";
} else if ($baza==3){
$tableQuery = "SELECT * FROM tcpr WHERE OznNacstand LIKE '%$search%' ORDER BY code ASC $limit";
$query_pag_num = "SELECT * FROM tcpr WHERE OznNacstand LIKE '%$search%' ORDER BY code ASC";
} else if ($baza==4){
$tableQuery = "SELECT * FROM icsprikaz WHERE code LIKE '%$search%' ORDER BY code ASC $limit";
$query_pag_num = "SELECT * FROM icsprikaz WHERE code LIKE '%$search%' ORDER BY code ASC";
}
$result_pag_data = sqlsrv_query($conn,$tableQuery);
$result_pag_num = sqlsrv_query($conn,$query_pag_num,array(),array("Scrollable"=>SQLSRV_CURSOR_STATIC));
$count = sqlsrv_num_rows($result_pag_num);
if ($count==0){
exit ('<p id="prazan" class="tekst">Termin ili oznaka nije pronadjen(a). Unesite drugi termin/oznaku</p><script>$("#form2").css("display","none");$("#form").css("display","none")</script>');
} else if ($count==1 && $_GET['jezik']=="Pretraži"){
echo '<div id="nr">'.$count.' termin</div><div style="clear:both;"></div>';
} else if ($count==1 && $_GET['jezik']=="Претражи"){
echo '<div id="nr">'.$count.' термин</div><div style="clear:both;"></div>';
} else if ($count > 1 && $_GET['jezik']=="Pretraži"){
echo '<div id="nr">'.$count.' termina</div><div style="clear:both;"></div>';
} else if ($count > 1 && $_GET['jezik']=="Претражи"){
echo '<div id="nr">'.$count.' термина</div><div style="clear:both;"></div>';
}
$rezultat = "";
if (isset($search) && ($baza==1)){
while($row=sqlsrv_fetch_array($result_pag_data)) {
$rezultat .= "<tr><td>".$row['TerSrp']."</td>".
"<td>".$row['DefSrp']."</td>".
"<td>".$row['TerEng']."</td>".
"<td>".$row['DefEng']."</td>".
"<td>".$row['Odeljak']."</td>".
"<td><a class='linktab1' href='#'>".$row['OznNacstand']."</a></td>".
"<td>".$row['code']."</td></tr>";
}} else if (isset($search) && ($baza==2)){
while($row=sqlsrv_fetch_array($result_pag_data)) {
$rezultat .= "<tr><td><a class='linktab2' href='#'>".$row['code']."</a></td>".
"<td>".$row['description']."</td>".
"<td>".$row['description_en']."</td>".
"<td>".$row['description_fr']."</td>".
"<td>".$row['description_de']."</td></tr>";
}} else if (isset($search) && ($baza==3)){
while($row=sqlsrv_fetch_array($result_pag_data)) {
$rezultat .= "<tr><td>".$row['TerSrp']."</a></td>".
"<td>".$row['DefSrp']."</td>".
"<td>".$row['TerEng']."</td>".
"<td>".$row['DefEng']."</td>".
"<td>".$row['Odeljak']."</td>".
"<td>".$row['code']."</td></tr>";
}} else if (isset($search) && ($baza==4)){
while($row=sqlsrv_fetch_array($result_pag_data)) {
$rezultat .= "<tr><td>".$row['Odeljak']."</a></td>".
"<td>".$row['OznNacstand']."</td>".
"<td>".$row['OznStand']."</td>".
"<td>".$row['TerEng']."</td>".
"<td>".$row['DefEng']."</td>".
"<td>".$row['TerSrp']."</td>".
"<td>".$row['DefSrp']."</td></tr>";
}}
if ($_GET['jezik']=="Pretraži" && $_GET['baza']==1){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="13%">
<col width="25%">
<col width="15%">
<col width="25%">
<col width="8%">
<col width="13%">
<col width="8%">
<tr>
<th id="1">Termin (sr)</th>
<th id="2">Definicija (sr)</th>
<th id="3">Termin (en)</th>
<th id="4">Definicija (en)</th>
<th id="5">Tačka</th>
<th id="6">Oznaka nac. stand.</th>
<th id="7">Oznake komisije</th>
</tr>'.$rezultat.'</table>';
} else if ($_GET['jezik']=="Претражи" && $_GET['baza']==1){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="13%">
<col width="25%">
<col width="15%">
<col width="25%">
<col width="8%">
<col width="13%">
<col width="8%">
<tr>
<th id="1">Термин (sr)</th>
<th id="2">Дефиниција (sr)</th>
<th id="3">Термин (en)</th>
<th id="4">Дефиниција (en)</th>
<th id="5">Тачка</th>
<th id="6">Ознака нац. станд.</th>
<th id="7">Ознаке комисија</th>
</tr>'.$rezultat.'</table>';
}
if ($_GET['jezik']=="Pretraži" && $_GET['baza']==2){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="8%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="15%">
<tr>
<th id="11">Kod</th>
<th id="12">Definicija (sr)</th>
<th id="13">Definicija (en)</th>
<th id="14">Definicija (fr)</th>
<th id="15">Definicija (de)</th>
</tr>'.$rezultat.'</table>';
} else if ($_GET['jezik']=="Претражи" && $_GET['baza']==2){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="5%">
<col width="20%">
<col width="20%">
<col width="20%">
<col width="20%">
<tr>
<th id="11">Код</th>
<th id="12">Дефиниција (sr)</th>
<th id="13">Дефиниција (en)</th>
<th id="14">Дефиниција (fr)</th>
<th id="15">Дефиниција (de)</th>
</tr>'.$rezultat.'</table>';
}
if ($_GET['jezik']=="Pretraži" && $_GET['baza']==3){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="13%">
<col width="25%">
<col width="15%">
<col width="25%">
<col width="8%">
<col width="13%">
<tr>
<th id="21">Termin (sr)</th>
<th id="22">Definicija (sr)</th>
<th id="23">Termin (en)</th>
<th id="24">Definicija (en)</th>
<th id="25">Tačka</th>
<th id="26">Oznake komisije</th>
</tr>'.$rezultat.'</table>';
} else if ($_GET['jezik']=="Претражи" && $_GET['baza']==3){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="13%">
<col width="25%">
<col width="15%">
<col width="25%">
<col width="8%">
<col width="13%">
<tr>
<th id="21">Термин (sr)</th>
<th id="22">Дефиниција (sr)</th>
<th id="23">Термин (en)</th>
<th id="24">Дефиниција (en)</th>
<th id="25">Тачка</th>
<th id="26">Ознаке комисија</th>
</tr>'.$rezultat.'</table>';
}if ($_GET['jezik']=="Pretraži" && $_GET['baza']==4){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="8%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="25%">
<col width="15%">
<col width="25%">
<tr>
<th id="31">Odeljak</th>
<th id="32">Oznaka nac. stand.</th>
<th id="33">Oznaka standarda</th>
<th id="34">Termin (en)</th>
<th id="35">Definicija (en)</th>
<th id="36">Termin (sr)</th>
<th id="37">Definicija (sr)</th>
</tr>'.$rezultat.'</table>';
} else if ($_GET['jezik']=="Претражи" && $_GET['baza']==4){
echo $tabela = '<table id="Tabela" class="sortable">
<col width="8%">
<col width="15%">
<col width="15%">
<col width="15%">
<col width="25%">
<col width="15%">
<col width="25%">
<tr>
<th id="31">Одељак</th>
<th id="32">Ознака нац. станд.</th>
<th id="33">Ознака стандарда</th>
<th id="34">Термин (en)</th>
<th id="35">Дефиниција (en)</th>
<th id="36">Термин (sr)</th>
<th id="37">Дефиниција (sr)</th>
</tr>'.$rezultat.'</table>';
}$no_of_paginations = ceil($count / $per_page);
/* ---------------Calculating the starting and endign values for the loop----------------------------------- */
if ($cur_page >= 7) {
$start_loop = $cur_page - 3;
if ($no_of_paginations > $cur_page + 3)
$end_loop = $cur_page + 3;
else if ($cur_page <= $no_of_paginations && $cur_page > $no_of_paginations - 6) {
$start_loop = $no_of_paginations - 6;
$end_loop = $no_of_paginations;
} else {
$end_loop = $no_of_paginations;
}
} else {
$start_loop = 1;
if ($no_of_paginations > 7)
$end_loop = 7;
else
$end_loop = $no_of_paginations;
}
if ($count <= 10){
$msg = "";
} else {*/
$msg = "<div class='pagination'><ul>";
if ($first_btn && $cur_page > 1) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='1' class='active'>Prva</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='1' class='active'>Прва</li>";
}
} else if ($first_btn) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='1' class='inactive'>Prva</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='1' class='inactive'>Прва</li>";
}
}
if ($previous_btn && $cur_page > 1) {
$pre = $cur_page - 1;
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='$pre' class='active'>Prethodna</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='$pre' class='active'>Претходна</li>";
}
} else if ($previous_btn) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li class='inactive'>Prethodna</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li class='inactive'>Претходна</li>";
}
}
for ($i = $start_loop; $i <= $end_loop; $i++) {
if ($cur_page == $i)
$msg .= "<li p='$i' style='color:#fff;background-color:#4C5D6D;' class='active'>{$i}</li>";
else
$msg .= "<li p='$i' class='active'>{$i}</li>";
}
if ($next_btn && $cur_page < $no_of_paginations) {
$nex = $cur_page + 1;
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='$nex' class='active'>Sledeća</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='$nex' class='active'>Следећа</li>";
}
} else if ($next_btn) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li class='inactive'>Sledeća</li>";
} else if ($_GET['jezik']=="Претражи"){
$msg .= "<li class='inactive'>Следећа</li>";
}
}
if ($last_btn && $cur_page < $no_of_paginations) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='$no_of_paginations' class='active'>Poslednja</li>";
}else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='$no_of_paginations' class='active'>Последња</li>";
}
} else if ($last_btn) {
if ($_GET['jezik']=="Pretraži"){
$msg .= "<li p='$no_of_paginations' class='inactive'>Poslednja</li>";
}else if ($_GET['jezik']=="Претражи"){
$msg .= "<li p='$no_of_paginations' class='inactive'>Последња</li>";
}
}
if ($_GET['jezik']=="Pretraži"){
$total_string = "<div class='total' a='$no_of_paginations'>Strana <b>".$cur_page."</b> od <b>$no_of_paginations</b></div>";
} else if ($_GET['jezik']=="Претражи"){
$total_string = "<div class='total' a='$no_of_paginations'>Страна <b>".$cur_page."</b> од <b>$no_of_paginations</b></div>";
}
$msg = $msg."</ul></div>".$total_string; // Content for pagination
$msg = $msg."<div style='clear:both;'></div>".'<div id="print"><a href="#" onClick="window.print()"><img class="slike" src="slike/print_icon.gif" /></a></div>';
echo $msg;
?>
<script type="text/javascript">
sorttable.makeSortable(document.getElementById('Tabela'));
</script>
Задача ещё не решена.
Других решений пока нет …