2017-11-11 161 views
0

因此,我正在尝试为我的网站创建分页,而无需刷新页面。 我为此使用了ajax,php和mysql。PHP连接无法正常工作

目前,我被困在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; 
} 

现在,这给了我UNDEFINED OFFSET,虽然我知道数据库中有这些信息。 由于某些原因数据总是空的。 enter image description here

每当我尝试在没有ajax的情况下直接在我的页面中运行这个相同的代码时,一切都按照它应该的方式工作。

也许你们对如何解决这个问题有什么建议?我知道这里有同样的帖子,但我还没有找到我的答案。

+0

显示uritused函数的代码 –

+1

看起来像'dataType:'json','但发送'html'作为回应 – RamRaider

+0

你确定'uritused'返回任何东西吗? –

回答

0

@Gino Pane

我很抱歉,但事实并非如此。看来我用我的查询犯了一个菜鸟错误。我在数据库中只有一个数据实例,但我的限制设置为1,5,但它应该是0,5。

基本上,我的查询是从数据库中查找数据,从1开始,当它应该在这就是为什么我觉得数据库中没有数据。

我还说过,当我在页面上直接回显foreach时,它工作的原因是当时我在数据库中有超过1个数据实例。

对不起,浪费你的时间家伙。

+0

不是浪费时间。将其他人的注意力放在这个问题上是解决问题的好方法,即使你是最终解决问题的人。向别人解释之后,我们都解决了自己的问题。 –