Maison > Questions et réponses > le corps du texte
Lors de la requête de données de pagination thinkphp, si le cache est défini, seule la première page sera affichée. Comment le casser ?
C'est-à-dire 12 >> Cet effet apparaît, mais lorsque vous cliquez sur 2, le contenu de la page 1 est toujours affiché.
$count=M('visitdata')->where(array('works_code'=>$get_code))->count();
$Page=nouveau \Think\Page($count,10);
$show=$Page->show();
S($get_code.'visitdata',null); //Si le cache n'est pas vidé au préalable, seule la page 1 sera affichée...
// Effectuer une requête de données de pagination. Si le cache est défini ici, seule la page 1 sera affichée.
M('visitdata')->cache($get_code.'visitdata',60)->where(array('works_code'=>$get_code))->order('visit_id')->limite ($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');
$this->assign(array(
'code'=>$get_code,
'visitdata'=>$cache_visitdata
));
$this->assign('page',$show);
$this->display();
12 >> Cet effet apparaît, mais lorsque vous cliquez sur 2, le contenu de la page 1 est toujours affiché.
Comment le casser ?
我想大声告诉你2017-05-16 13:06:24
C'est le tp3.2. Je ne l'ai pas utilisé depuis longtemps et j'ai oublié comment l'utiliser. Le questionneur peut faire ceci :
Obtenir le numéro de page
Vérifiez si le cache correspondant au numéro de page existe (la clé du cache peut s'écrire ainsi : 'content_page_' . $page
)
Retour si le cache existe
Si le cache n'existe pas, exécutez la requête de base de données et mettez en cache une copie la prochaine fois que la demande arrivera, elle sera directement mise en cache
Je pense que le principal problème réside dans la valeur de la clé mise en cache.
phpcn_u15822017-05-16 13:06:24
Instruction SQL de sortie pour le débogage, voyez d'abord ce que SQL exécute, puis trouvez le problème
phpcn_u15822017-05-16 13:06:24
Ce que vous avez ici : ->cache($get_code.'visitdata',60)
$get_code.'visitdata' est le même dans le cas de la pagination, il ne sera donc pas mis à jour.
Vous devriez pouvoir inclure le numéro de page dans cette clé.
怪我咯2017-05-16 13:06:24
$p = intval($_GET['p']);
M('visitdata')->cache($get_code.'visitdata'.$p,60)->where(array('works_code'=>$get_code))->order('visit_id')->limit($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');
//把页码加上。