Jump to content
Forum Roportal
Sign in to follow this  
RHS

PHP array pagination

Rate this topic

Recommended Posts

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.

Edited by RHS

Share this post


Link to post
Share on other sites

Nu e tot scriptul asta, nu?

 

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

Share this post


Link to post
Share on other sites

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...

Edited by RHS

Share this post


Link to post
Share on other sites

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'";)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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>';
                    }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×