2012-02-17 3 views
1

J'ai une page php qui a aussi une autre page php à l'intérieur, cette page php a un paginateur, est-il possible que chaque fois que je pagine, elle ne charge que l'intérieur page pas toute la page? J'ai essayé de contourner cela en utilisant AJAX comme vous pouvez le voir à mon premier post mais j'ai rencontré ce problème où je dois aller chercher la lettre et la page que j'ai envoyé à ajax et l'utiliser à nouveau pour la pagination, donc serait comme javascript envoyer sa variable php j'ai essayé ceci:charger une page dans une page ou passer une variable js à php

<script> 
    function pagereturn() 
    { 
     return getpage; 
    } 
</script> 
<?php 
    $pageno = pagereturn(); 
    echo $pageno; 
    ?> 

    function passPaginationAndLetter(page) 
    { 
    if (page=="") 
     { 
     document.getElementById("retail_group").innerHTML=""; 
     return; 
     } 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
        document.getElementById("retail_group").innerHTML=xmlhttp.responseText; 
     } 
     } 
    getpage = page; 
    xmlhttp.open("GET","otherpage.php? letter="+getletter+"&pageno="+page,true); 
    xmlhttp.send(); 

    } 

    var page = 1; 
    $("#nextButton").click(function(){ 
     page = page+1; 
     passPaginationAndLetter(page); 
    }); 

mais malheureusement j'ai fini sans résultat et cassé mon code. btw getpage est une variable que j'ai prise d'une autre fonction.

Merci beaucoup, je suis toujours nouveau à javascript donc je vous demande de l'aide. :)

--- Code à child.php ---- pagination {

} 
else 
{ 
if ($pageno == 1) { 
//echo " FIRST PREV "; 
} 
else 
{ 
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=1'>FIRST</a> "; 
$prevpage = $pageno-1; 
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$prevpage'>PREV</a> "; 
} 
echo " (Page $pageno of $lastpage) "; 
if ($pageno == $lastpage) 
{ 
//echo " NEXT LAST "; 
} 
else 
{ 
$nextpage = $pageno+1; 
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$nextpage'>NEXT</a> "; 
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$lastpage'>LAST</a> "; 
} 

--- Code à parent.php ----- pagination

else 
{ 
    echo '<a href = "#" onclick="passPaginationAndLetter("1"); return false;">FIRST</a>'; 
    $prevpage = $pageno-1; 
    echo '<a href = "#" onclick="passPaginationAndLetter('.$prevpage.'); return false;">PREV</a>'; 
} 
echo " (Page $pageno of $lastpage) "; 
if ($pageno == $lastpage) 
    { 

    } 
    else 
    { 
     $nextpage = $pageno+1;      
     echo '<a id = "nextButton" href = "#" onclick="passPaginationAndLetter('.$nextpage.'); return false;">NEXT</a>'; 
     echo '<a href = "#" onclick="passPaginationAndLetter('.$lastpage.'); return false;">LAST</a>';            
    } 
+1

Il fallait bien le dire: Pageception. –

+0

c'est en effet pageception – magicianiam

+0

pourquoi n'utilisez-vous pas jQuery ou quelque chose pour l'ajax? c'est beaucoup plus facile et cross platform –

Répondre

0

ok , essayez ceci:

Disons que vous avez votre page principale, celle qui montre toute la pagination, appelée main.php, aussi vous avez un autre fichier php avec toutes les fonctions ns appelé functions.php.

Je suppose que vous avez une fonction php dans functions.php qui génère une seule page de votre pagination (getAJAXpage($page) par exemple). Cette fonction génère une page HTML complet, quelque chose comme ça (rappelez-vous c'est juste un exemple, pourrait être mis en œuvre de 1000 façons différentes):

<?php //functions.php file 
... 
public function getAJAXpage($page){ 
    $page = $_REQUEST['page'];//im not pretty sure about this :S 
    $elements = getElements($page);//this function returns the set of elements in your page 
    echo '<table>'; 
    foreach($elements as $e){ 
     echo '<tr><td>'.$e.'</td></tr>'; 
    } 
    echo '</table>'; 
} 
... 
?> 

ce que vous pouvez faire dans votre php Page main.php (la qui montre toute la pagination) quelque chose comme ceci:

function getAjaxPage(page){ //this is a javascript code in main.php file 
    $.ajax({ 
     type:'GET', 
     dataType:'html', 
     url:'the-url-for-your-getAJAXpage-function', 
     success:function(data){ 
      $("#your-pagination-element").html(data); 
     } 
    }); 
} 

Je suppose aussi que dans votre code HTML de la page en page dans votre fichier main.php vous avez au moins un ensemble de boutons (ou icônes) pour diriger la pagination (suivant, prev, premier, dernier, ...). Vous pouvez donc ajouter ce code au javascript ci-dessus.

//more javascript in main.php 
var page = 1; 
$("#nextButton").click(function(){ 
    page = page+1; 
    getAjaxPage(page); 
}); 

et ainsi de suite avec tous les boutons.

REMARQUE: dans cette réponse Je suppose également que vous utilisez la libray JQuery, fortement recommandé pour les débutants en javascript.

J'espère vous avoir aidé. Bonne chance!

+0

Pouvez-vous expliquer plus brièvement, im un peu confus sur ce qui est getajaxpage pour et où il est également placé pour le nextbutton.click, im vraiment nouveau avec javascript, j'espère que vous comprenez. Je vous remercie. :) btw j'utilise jquery mais pour pagination son php pur donc j'ai souhaité passer la variable à php, mais s'il y a un meilleur moyen me le faire savoir. Merci. – magicianiam

+0

j'ai édité mon post. c'est ce que vous vouliez dire avec votre réponse? – magicianiam

+0

édité encore ma réponse, a trouvé quelques erreurs> _ < –

Questions connexes