Sari la conținut
Forum Roportal
RHS

PHP array pagination

Evaluează acest topic

Postări Recomandate

Salutari tuturor!

 

Am urmatoarea problema:

Trebuie sa fac o paginatie cu niste id-uri importate din database(mysql). Problema este ca id-urile nu sunt 1, 2, 3, 4, 5 si asa mai departe, ci 2, 4, 7, 10, etc.

Am ajuns pana aici dupa care m-am blocat ...

 

Cod:

<?php
    $query = "SELECT * FROM gallery WHERE category = '$value'";
    $result = mysqli_query($connect, $query);

    if (mysqli_num_rows($result) >= 1) {
        while($row = mysqli_fetch_array($result)) {
            $pag[] = $row['id'];
        }
    }

    $count = 1;
    $items = '';
    $first = reset($pag);
    $last = end($pag);

    if ($_GET['language'] == 'en') {
        $lang = 'en/';
    } else {
        $lang = 'de/';
    }

    $current = decode($_GET['id']);
    $prev = $current - 1;
    $next = $current + 1;

    foreach($pag as $value) {
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'">'.$count.'</a>';
        $count++;
        
        $vl[] = $value;
    }

    if ($prev >= $first) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'"><< '.$value.'</a>';
    }

    if ($next <= $last) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'">>> '.$value.'</a>';
    }
?>

Acest echo "echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'">'.$count.'</a>';" imi arata toate id-urile numerotate 1 = 2, 2 = 4, 3 = 7, etc.

Daca las acest link vizibil nu este nici o problema dar daca vreau sa adaug buton de prev si next atunci apare problema.

 

Va multumesc pentru ajutor.

Editat de RHS

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Nu e tot scriptul asta, nu?

 

Ai verificat tabelul din baza de date? Poate acolo sunt gresit numerotate id-urile

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Salut King1, nu sunt gresite. Anumite id-uri sunt vizibile in alte pagini unde "category" este diferit ($query = "SELECT * FROM gallery WHERE category = '$value'";) $value se schimba in baza paginii vizualizate.

 

Eu vreau sa fac un next - prev functional cu id casual...

Editat de RHS

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Aaaa, pai asta e chestia atunci.

De fapt tu vrei o noua numerotare a id-urilor pe fiecare pagina, nu?

 

 

Daca schimbi asta

 if ($prev >= $first) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'"><< '.$value.'</a>';
    }

    if ($next <= $last) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'">>> '.$value.'</a>';
    }

in asta

 if ($prev >= $first) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'"><< '.$count.'</a>';
    }

    if ($next <= $last) {    
        echo '<a href="/preview/'.$lang.encode($value).'/'.encode($category).'/" title="'.$titleen.'">>> '.$count.'</a>';
    }

?

Poti incerca.

Nu imi dau seama de unde vine $value in primul query acolo. Lipseste ceva. ($query = "SELECT * FROM gallery WHERE category = '$value'";)

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Am 3 coloane in baza de date:

id     name     category
1     Andrei        1
2     Dragos        1
3     Cristian      2
4     Daniel        1

URL-ul cu care "merg" pe pagina respectiva este http://localhost/preview/en/Mg/MQ/

2 (codat in base64) = Mg

1 (codat in base64) = MQ

$value = decode($_GET["value"]); (unde in htaccess RewriteRule ^preview/(.*)/(.*)/(.*)/$ details.php?language=$1&id=$2&value=$3)

asta inseamna ca $value = 1

$query = "SELECT * FROM gallery WHERE category = '$value'";
$result = mysqli_query($connect, $query);

while($row = mysqli_fetch_array($result)) {
     $pag[] = $row['id'];
}

treaba asta imi arata id-urile 1, 2 si 4

 

cu urmatorul cod creez o numerotare ordonata:

$count = 1;

foreach($pag as $val) {
        echo '<a href="/preview/'.$lang.encode($val).'/'.encode($category).'/" title="'.$titleen.'">'.$count.'</a>';
        $count++;
}

codul de deasupra imi arata urmatoarele pagini:

<a href="......../encode(1 unde 1 este id)/">1</a> | <a href="......../encode(2 unde 2 este id)/">2</a> | <a href="......../encode(4 unde 4 este id)/">3</a>

ATENTIE! id 4 este numerotat 3! deci cum sar eu de la id 2 la id 4 prin metoda NEXT - PREV? Nu vreau sa vad 1, 2, 3, 4, 5 si sa dau click pe numele care vreau sa il vad ci vreau sa fie 2 sageti < si >

 

E cam complicat de explicat ... scris ...

Sper ca ai inteles ceva

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Imi pare rau pentru dublu post dar am rezolvat singur.

 

Mai jos adaug codul, poate cineva o sa aiba nevoie.

                    $query = "SELECT * FROM gallery WHERE category = '$category'";
                    $result = mysqli_query($connect, $query);
                    
                    if (mysqli_num_rows($result) >= 1) {
                        while($row = mysqli_fetch_array($result)) {
                            $arr[] = $row['id'];
                        }
                    }

                    $id = $_GET['id'];
                    
                    $arrsearch = array_search($id, $arr);
                    $next = $arrsearch + 1;
                    $prev = $arrsearch - 1;
                    
                    if ($prev >= 0) {
                        echo '<a href="/preview/'.$arr[$prev].'/"><< </a>';
                    }
                        
                    if ($next < count($arr)) {
                        echo '<a href="/preview/'.$arr[$next].'/">>></a>';
                    }

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum

×