所以我试图在不刷新页面的情况下为我的网站建立分页。 我为此目的使用ajax,php和mysql。
目前我仍然坚持使用php,特别是使用foreach和concatenation。
这是我的foreach循环:
if (isset($_POST['page'])) {
$algus = $_POST['page'];
$loos = '';
$mitu = 5;
$msg = [];
foreach (uritused($conn, $id, $algus, $mitu) as $key => $vals) {
$loos .= "<tr class='tr-data'>";
$loos .= '<td>'.$vals['eventi_nimi'].'<br><span class="owner" data-id="'.$vals['owner-id'].'">'.$vals['owner'].'</span></td>';
$loos .= '<td data-loosiaeg="'.$vals['loosiAeg'].'">'.$vals['loosiAeg'].'</td>';
$loos .= '<td>'.$vals['attendiloos'].'</td>';
$loos .= '<td>';
if (is_array($vals['auhinnad'])) {
foreach($vals['auhinnad'] as $keys => $val){
$loos .= $val['auhind'].'<br>';
}
} else {
$loos .= $vals['auhinnad'];
}
$loos .= '</td>';
$loos .= '<td>Postitus: '.$vals['tingimused']['postitus'].'<br>Osalus: '.$vals['tingimused']['osalus'].'</td>';
$loos .= '<td>';
if (is_array($vals['valista'])) {
foreach($vals['valista'] as $keys => $val){
$loos .= $val['nimi'].'<br>';
}
} else {
$loos .= $vals['valista'];
}
$loos .= '</td>';
$loos .= '<td data-sec='.$vals['sec'].' class="tr-icons">
<i class="material-icons staatus ' . $vals['staatus'] . '" data-staatus="'.$vals['staatus'].'" data-toggle="tooltip" data-placement="bottom" data-class="stopped" data-eltext="radio_button_checked" data-text="radio_button_unchecked" title="Peata loosimine">radio_button_checked</i></td>';
$loos .= "</tr>";
}
$msg['data'] = $loos;
$msg['success'] = true;
echo json_encode($msg);
}
这是我的ajax电话
var page = 1;
$.ajax({
type: "POST",
url: "pages/php/loosid_data.php",
cache: false,
dataType: 'json',
data: {'page': page},
success: function(msg){
console.log(msg);
if(msg['success']){
$('.tr-data').remove();
$('.m-loosid table').append(msg['data']);
}
},
error: function(msg){
console.log(msg);
}
});
编辑:继承人的功能
function uritused($conn, $id, $algus, $mitu){
try{
$uritused = $conn->prepare("SELECT COUNT(*) FROM loosid WHERE usr_id='$id'");
$uritused->execute();
}catch(PDOException $e){
echo $e->getMessage();
}
$uritus_arr = [];
$count = $uritused->fetchColumn();
if($count > 0){
try{
$urituseds = $conn->prepare("SELECT * FROM loosid WHERE usr_id='176237127636' ORDER BY loosiAeg DESC LIMIT 1, 5");
$urituseds->execute();
}catch(PDOException $e){
echo $e->getMessage();
}
$uritus = $urituseds->fetchAll();
for ($z=0;$z<$count;$z++) {
$uritus_arr[$z] = array(
'eventi_nimi' => $uritus[$z]['eventi_nimi'],
'loosiAeg' => $uritus[$z]['loosiAeg'],
'tingimused' => array(
'postitus' => $uritus[$z]['post'],
'osalus' => $uritus[$z]['osalus']
),
'sec' => $uritus[$z]['sec'],
'staatus' => $uritus[$z]['staatus'],
'attendiloos' => $uritus[$z]['attendiloos']
);
$auhinnad = explode(',', $uritus[$z]['auhinnad']);
if($uritus[$z]['auhinnad'] != '-'){
foreach ($auhinnad as $key) {
$auhind = explode('-', $key);
$auhinna_arr[] = array(
'auhind' => $auhind[0],
'voitjad' => $auhind[1]
);
}
$uritus_arr[$z]['auhinnad'] = $auhinna_arr;
}else{
$uritus_arr[$z]['auhinnad'] = $uritus[$z]['auhinnad'];
}
$valista = explode(',', $uritus[$z]['valista']);
if($uritus[$z]['valista'] != '-'){
foreach ($valista as $keys) {
$valistad = explode('-', $keys);
$valista_arr[] = array(
'nimi' => $valistad[0],
'id' => $valistad[1]
);
}
$uritus_arr[$z]['valista'] = $valista_arr;
}else{
$uritus_arr[$z]['valista'] = $uritus[$z]['valista'];
}
$valista_arr = [];
$auhinna_arr = [];
}
}
return $uritus_arr;
}
现在我给了我不确定的偏移量,我知道数据库中有这些信息的数据。 由于某种原因,数据始终为空。
每当我尝试在没有ajax的情况下直接在我的页面中运行相同的代码时,一切都按预期工作。
也许你们对如何解决这个问题有任何建议?我知道这里已有同样的帖子,但我还没找到答案。
答案 0 :(得分:0)
@Gino Pane
我很抱歉,但事实并非如此。看来我用我的查询犯了一个菜鸟错误。我在数据库中只有一个数据实例,但我的限制设置为1,5,但它应该是0,5。
基本上我的查询是从数据库开始查看数据,从1开始它应该从0开始。这就是为什么在我看来数据库中没有数据。
我还说当我直接在页面上回显foreach时它起作用,因为那时我在数据库中有超过1个数据实例。
抱歉浪费你的时间。