[PHP] Ciclo for dinamico

colomber

Utente Attivo
4 Dic 2012
232
1
18
Questo ciclo stampa 5 pagine su 50 e la prima e l'ultima che rimarranno sempre presenti, devo fare in modo che quando sono alla pagina 5 appaiono la pagina 6 e 7 e spariscano la pagina 2 e 3 e cosi via andando avanti o indietro sapete come fare?


PHP:
<?php

$paginetotali = 50;
$pagineviste = 5;
$inizio = 1;

echo '<a href="">' .$inizio . '</a> ';

for ($i = 2; $i <= $pagineviste; $i++) {

echo '<a href="">' .$i . '</a> ';
}

echo '<a href="">' .$paginetotali . '</a> ';
   
?>
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
queste cose della guida le ho già fatte tutte il mio problema è un'altro, quando hai tante pagine non puoi visualizzare tutti i link a queste pagine.
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
non avevo visto bene ciò che ti servive.. prova questo

PHP:
<?php
$paginetotali = '50';
$numerazione = '2';
$target="127.0.0.1/";
$paginaattuale='15';
$page = $paginaattuale;

    $lpm1 = $paginetotali - 1;

    $pagination = "";

    if($paginetotali > 1)
    {
        if ($paginetotali < 1 + ($numerazione * 2))
        {
            for ($counter = 1; $counter <= $paginetotali; $counter++)
            {
                if ($counter == $page)
                $pagination.= $counter;
                else
                $pagination.= "<a href='".$target."page=$counter'>$counter</a>";                
            }
        }
        elseif($paginetotali > 1 + ($numerazione * 2))
        {
            if($page < 1 + ($numerazione * 2))    
            {
                for ($counter = 1; $counter < 1 + ($numerazione * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "$counter";
                    else
                        $pagination.= "<a href='".$target."page=$counter'>$counter</a>";                
                }
                $pagination.= "...";
                $pagination.= "<a href='".$target."page=$lpm1'>$lpm1</a>";
                $pagination.= "<a href='".$target."page=$paginetotali'>$paginetotali</a>";    
            }
            elseif($paginetotali - ($numerazione * 2) > $page && $page > ($numerazione * 2))
            {
                $pagination.= "<a href='".$target."page=1'>1</a>";
                $pagination.= "<a href='".$target."page=2'>2</a>";
                $pagination.= "...";
               
                for ($counter = $page - $numerazione; $counter <= $page + $numerazione; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "$counter";
                    else
                        $pagination.= "<a href='".$target."page=$counter'>$counter</a>";                
                }
               
                $pagination.= "..";
                $pagination.= "<a href='".$target."page=$lpm1'>$lpm1</a>";
                $pagination.= "<a href='".$target."page=$paginetotali'>$paginetotali</a>";    
            }
            else
            {
                $pagination.= "<a href='".$target."page=1'>1</a>";
                $pagination.= "<a href='".$target."page=2'>2</a>";
                $pagination.= "..";
               
                for ($counter = $paginetotali - (1 + ($numerazione * 2)); $counter <= $paginetotali; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "$counter";
                    else
                        $pagination.= "<a href='".$target."page=$counter'>$counter</a>";                
                }
            }
    }
    }  
    echo $pagination;
?>

hai pagina per le prime e ultime 2 pagine, pagina attuale + le 2 immediatamente successive e precedenti e '...' nel mezzo
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
avevo trovato questa soluzione ma non mi piace quando arriva all'ultima pagina fa vedere solo la prima e l'ultima e non si può tornare indietro al precedente

PHP:
<?php

 $link = "";
 $paginacorrente = 1;
 $paginetotali = 20;
 $limite = 4;

 if ($paginetotali >=1 && $paginacorrente <= $paginetotali) {
        $conta = 1;
        $link = "";
        if ($paginacorrente >= ($limite/2)) {
             $link .= "<a href=\"?pagina=1\">1 </a> ... "; }
        for ($x=$paginacorrente; $x<=$paginetotali;$x++)
        {

            if($conta < $limite)
                $link .= "<a href=\"?pagina=" .$x."\">".$x." </a>";

            $conta++;
        }
        if ($paginacorrente < $paginetotali - ($limite/2))
         { $link .= "... " . "<a href=\"?pagina=" .$paginetotali."\">".$paginetotali." </a>"; }
 
  }
 
  echo $link;
   
?>
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
Per pagina precedente e successiva ti basta usare
Codice:
$prev=($paginacorrente -1);
$next=($paginacorrente +1)
Escludendo opportunamente pag iniziale e pag finale
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
Questo è molto meglio unica cosa che non riesco a venirne a capo quando la pagina corrente coincide con l'ultima pagina non riesco a farla apparire senza url (in grossetto per intenderci) come nelle altre pagine


PHP:
<?php

    $totalepagine = 20;
    $paginacorrente = 19;

    $link = "";
 
    if ($totalepagine >= 1 && $paginacorrente <= $totalepagine) {
   
        if ($paginacorrente != 1) {
            $link .= '<a href="">1</a> '; }
        else { $link .= '1 ';}
           
        $i = max(2, $paginacorrente - 3);
        if ($i > 2)
            $link .= " ... ";
           
        for (; $i < min($paginacorrente + 4, $totalepagine); $i++) {  
            if ($i != $paginacorrente) {
            $link .= '<a href="">'.$i.'</a> ';}
            else { $link .= $i . ' ';}            
        }
       
        if ($i != $totalepagine)
            $link .= " ... ";
            $link .= '<a href="">'. $totalepagine.'</a> ';                      
    }
   
    echo $link;  
   
?>
 

mr.x

Utente Attivo
9 Apr 2016
252
25
28
abbi un po di pazienza.. siamo al 14 agosto, fa caldo e chi può sta in ferie..
ma almeno ci hai provato a fare quello che ti serve?
nel codice che ti avevo postato
PHP:
$lpm1 = $paginetotali - 1;
indica proprio l'ultima pagina.. ti bastava leggerlo per provare a cercare la soluzione...

PHP:
       if ($i != $totalepagine)
            $link .= " ... ";
            $link .= '<a href="">'. ($totalepagine -1).'</a> '; 
if ($paginacorrente != $totalepagine) {
            $link .= '<a href="">20</a> '; }
        else { $link .= '20 ';}                   
    }

ti basta individuare l'ultima pagina, come avviene per la pagina 1 ed operare allo stesso modo
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
da 16 in avanti da doppioni è un da stamattina che provo ma non trovo soluzione
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
PHP:
<?php

    $totalepagine = 20;
    $paginacorrente = 16;

    $link = "";
 
    if ($totalepagine >= 1 && $paginacorrente <= $totalepagine) {
  
        if ($paginacorrente != 1) {
            $link .= '<a href="">1</a> '; }
        else { $link .= '1 ';}
          
        $i = max(2, $paginacorrente - 3);
        if ($i > 2)
            $link .= " ... ";
          
        for (; $i < min($paginacorrente + 4, ($totalepagine -1)); $i++) { 
            if ($i != $paginacorrente) {
            $link .= '<a href="">'.$i.'</a> ';}
            else { $link .= $i . ' ';}           
        }
      
        if ($i != $totalepagine)
            $link .= " ... ";
      $link .= '<a href="">'. ($totalepagine -1).'</a> ';
if ($paginacorrente != $totalepagine) {
            $link .= '<a href="">20</a> '; }
        else { $link .= '20 ';} 
    }
    echo $link; 
  
?>
 

colomber

Utente Attivo
4 Dic 2012
232
1
18
eliminati i doppioni ma quando paginacorrente si trova a 19 è come quando c'era il problame con 20
 

Antonio De Marco

Utente Attivo
28 Lug 2015
60
4
8
ademarco.it
Così dovrebbe funzionare anche nell'ultimo caso
Codice:
<?php

    $totalepagine = 20;
    $paginacorrente = 20;

    $link = "";
 
    if ($totalepagine >= 1 && $paginacorrente <= $totalepagine) {

        if ($paginacorrente != 1) {
            $link .= '<a href="">1</a> '; }
        else { $link .= '1 ';}
          
        $i = max(2, $paginacorrente - 3);
        if ($i > 2)
            $link .= " ... ";
          
        for (; $i < min($paginacorrente + 4, $totalepagine); $i++) { 
            if ($i != $paginacorrente) {
            $link .= '<a href="">'.$i.'</a> ';}
            else { $link .=$i . ' ';}           
        }
      
        if ($i != $totalepagine){
            $link .= " ... ";
        }


    if ($paginacorrente != $totalepagine) {
            $link .= '<a href="">'.$totalepagine.'</a> '; }
        else { $link .= $totalepagine;}
    
    }
  
    echo $link; 
  
?>
 
  • Like
Reactions: colomber
Discussioni simili
Autore Titolo Forum Risposte Data
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
S [PHP] Ciclo foreach su più array PHP 2
N [PHP] Controllare condizione ciclo While PHP 9
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
Monital [PHP] ciclo su un file json molto grande PHP 1
M [PHP] Errore in ciclo foreach PHP 1
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
S Ciclo PHP molto complesso PHP 2
B ciclo in PHP per creare numero progressivo PHP 2
S [risolto] Aiuto: ciclo php ( for / while). popolare select dinamicamente da array id. PHP 9
A [risolto] caricare con un ciclo For dei file PHP inclusi in una variabile array PHP 3
IImanuII Ciclo in php e tempo PHP 6
neo996sps PHP: problema con ciclo for PHP 1
S Problema ciclo php ed errore [object XMLHttpRequest] Ajax 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6

Discussioni simili