2012-03-31 17 views
0

Zuerst die Situation zu beschreiben. Meine Indexseite ist durch zwei Div-Bereiche unterteilt, in denen meine Nachrichtenartikel angezeigt werden. Jeder linke und jeder zweite Teil hat eine Seitennummer, so dass der Benutzer die Seite nicht aktualisieren muss. Alles funktioniert mit meinem alten Code, jetzt ändere ich diesen alten Code in php pdo, um sql inj zu verhindern. Attacken ant auf mich selbst zu aktualisieren :)php pdo mit js Paginierung

Grundsätzlich läuft alles gut bis jetzt. Vielleicht ist es zu spät oder ist etwas anderes, sollte dies eine einfache Lösung sein, denn ich habe bereits funktionierende Lösung auf meiner linken Seite der Seite. Der Unterschied liegt nur in der Auswahl von Zeichen und Kategorienamen, aus denen Text ausgewählt werden soll. Hier Code: Arbeitscode, auf dem linken Teil der Seite

$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(); 

dieser Code Onclick js ausgelöst wird, die zweite Seite zurück als

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 folgen

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); 
} 

Wählen Sie Zeichenfolge ist fast gleich, auf der linken Seite, die funktioniert Ich wähle

WHERE Name LIKE :selectString 

und auf der anderen Seite, die ich brauche, um zu wählen Where Name=:selectString

Hoffnung Frage nicht zu verwirrt ist, klingen nicht funktioniert, weil ich müde bin, wenn Sie weitere Informationen benötigen, wenden Sie sich bitte.

Antwort

1

Weiß nicht, was ist dein Problem, aber WHERE Name='%News-BlockLeft%' Zustand wird kaum Zeilen zurückgeben.

Sie müssen zuerst Ihre Abfragen in der mysql-Konsole ausführen, um zu sehen, ob sie funktionieren.
Erst danach können Sie beginnen, sie dynamisch zu erstellen.

Beachten Sie auch, dass WHERE Name LIKE '%News-BlockLeft%' ein großer Designfehler ist.
Sie müssen einen bestimmten Parameter verwenden, um Links-Block-Nachrichten zu kennzeichnen, nicht diesen selbstgebrauten String-Vergleich.