php pdo с пагинацией js - PullRequest
       1

php pdo с пагинацией js

0 голосов
/ 01 апреля 2012

Сначала опиши ситуацию. Моя индексная страница разделена на две разделенные области, где отображаются мои новостные статьи. Каждая левая и вторая части имеют одну нумерацию страниц, поэтому пользователю не нужно обновлять страницу. Все работает с моим старым кодом, теперь я изменяю этот старый код на php pdo, чтобы предотвратить sql inj. атакует муравья, чтобы обновить себя :)

В основном все идет хорошо до сих пор. Возможно, уже слишком поздно или что-то еще, это должно быть простым решением, потому что у меня уже есть рабочее решение на левой стороне страницы. Разница только в выборе символов и названия категории, из которой следует выделить текст. Вот код: Рабочий код, в левой части страницы

$offset = ($pageNum - 1) * $rowsPerPage;
$selectString = '%News-BlockLeft%';
$STH = $DBH->prepare("SELECT ... " .
        "FROM News, Categories, NewsCheck " .  
        "WHERE Name LIKE :selectString " .
        "ORDER BY `NewsDate` DESC LIMIT :offset, :rowsPerPage");  

$STH->bindParam(':selectString ', $selectString, PDO::PARAM_STR);
$STH->bindParam(':offset', $offset, PDO::PARAM_INT);
$STH->bindParam(':rowsPerPage', $rowsPerPage, PDO::PARAM_INT);
$STH->execute();

этот код запускает onclick js, который возвращает вторую страницу следующим образом

if ($pageNum > 1) {
    $opage = $pageNum - 1;
    $prev = "<a href=\"javascript:goToPage(" . $opage . ");\"><img src=\"/firstPage.gif\" /> </a>";
    $first = "<a href=\"javascript:goToPage(" . $opage . ");\">[<<]</a>";
} else {
    $prev = '';  // we're on page one, don't enable 'previous' link
    $first = ' <font size=\"3\">[<<] </font>'; // nor 'first page' link
}

ajaxRequest.js

function goToPage(page) {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null) {
        alert ("Your browser does not support AJAX!");
        return;
    }
    var url="myPageBlockLeft.php";
    url=url+"?opage="+page;
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
            document.getElementById('contentRight').innerHTML=xmlhttp.responseText;
            initLightbox();
        }
    }
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}

Выберите строку почти то же самое, на левой стороне, которая работает, я выбираю

WHERE Name LIKE :selectString

а с другой, которая не работает, мне нужно выбрать Where Name=:selectString

Надеюсь, вопрос не слишком запутанный, потому что я устал, если вам нужна дополнительная информация, пожалуйста, спросите.

1 Ответ

1 голос
/ 01 апреля 2012

Не знаю, в чем ваша проблема, но условие WHERE Name='%News-BlockLeft%' вряд ли вернет какие-либо строки.

Вам нужно сначала выполнить все ваши запросы в консоли mysql, чтобы увидеть, работают ли они.
Только после этого вы можете начать их динамически строить.

Также обратите внимание, что WHERE Name LIKE '%News-BlockLeft%' является огромным недостатком дизайна.
Вы должны использовать какой-то особый параметр для обозначения новостей левого блока, а не этого сравнения строк домашнего приготовления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...