[RESOLU] Retourner au début des résultats d'une boucle for

Petit nouveau ! | 3 Messages

14 févr. 2019, 13:29

Bonjour à tous,

Je suis actuellement en train de faire un petit script (et je suis plutôt débutant), j'aimerais savoir comment revenir au résultat numero un d'une boucle for après que le tableau contenant les résultats aient été parcouru?
voici le contexte: disons que j'ai une requête qui me montre une page de 12 articles, lorsque nous cliquons sur l'un de ces articles, cela nous ramène à la page unique, sur cette page unique, j'ai créé une pagination qui mène au douzième article et ce que j'aimerais, c'est que le douzième article me ramène au premier lorsque je clique sur suivant

voici le code:
$currenttPostId = get_the_ID();
        $theCategory = get_the_terms(get_the_ID(),'category');
        $prevNext = array();
        if (!empty($search_args)) {

          $search_args['posts_per_page'] = -1;

          $search_results2 = $search_results[$i - 1];
          
          for ($i = 0; $i < count($search_results); $i++) {
            if ($search_results[$i]->ID == $currenttPostId){
              $prevNext[] = $search_results[$i - 1];
              $prevNext[] = $search_results[$i + 1]; 

            }
Modifié en dernier par WPFrenchy le 14 févr. 2019, 13:57, modifié 1 fois.

Mammouth du PHP | 612 Messages

14 févr. 2019, 13:50

Salut je comprends pas trop le but ? il te suffit d'utiliser $search_results[0] si tu veux le premier élément ou bien tu peux refaire une deuxième boucle qui partira du début si tu fais un for ($i = 0;...

Petit nouveau ! | 3 Messages

14 févr. 2019, 14:05

En fait mon problème c'est que ma pagination s'arrête au dernier article et j'aimerais que quand on clique sur le bouton suivant de ma pagination, que la dernière page affiche la première et ainsi de suite

Mammouth du PHP | 612 Messages

14 févr. 2019, 14:24

for ($i = 0; $i < count($search_results); $i++) {
  if ($search_results[$i]->ID == $currenttPostId) {
    $index = $i;
    break;
  }
}
$prev = isset($search_results[$index - 1]) 
  ? $search_results[$index - 1] 
  : $search_results[count($search_results) - 1];
$next = isset($search_results[$index + 1]) 
  ? $search_results[$index + 1] 
  : $search_results[0];

Tu boucles jusqu'à trouver la position de l'article en cours et tu mémorises sa position.
Ensuite tu regardes si index - 1 existe dans le tableau s'il n'existe pas c'est que tu dois être à index 0 donc tu prends le dernier élément du tableau (count() - 1).
Et tu regardes si index + 1 existe s'il n'existe pas tu dois être sur le dernier élément et donc tu retournes le premier.
Tu pourrais remplacer les tests isset par des tests $index > 0 et $index < count($search_results) - 1

Petit nouveau ! | 3 Messages

14 févr. 2019, 14:38

ça fonctionne, merci beaucoup pour votre aide, bonne journée!