Re: how to get rid of that annoying |
| From: | Bastien Koert | Date: | Tue, 09 Jun 2009 13:17:38 +0000 |
| Subject: | Re: how to get rid of that annoying | | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-293802@lists.php.net to get a copy of this message | ||
On Tue, Jun 9, 2009 at 1:47 AM, PJ<af.gourmet@videotron.ca> wrote:
> Robert Cummings wrote:
>>
>>
>> PJ wrote:
>>> Robert Cummings wrote:
>>>> PJ wrote:
>>>>> Robert Cummings wrote:
>>>>>> PJ wrote:
>>>>>>> I know this a silly question, but I can't figure out if it's
>>>>>>> even
>>>>>>> possible to get rid of that final annoying | in my pagination
>>>>>>> script.
>>>>>>>
>>>>>>> <?echo "<p>Navigation</p>";
>>>>>>>
>>>>>>> echo (($page !=1)?"<a
>>>>>>> href='".build_url("books.php", "page",
>>>>>>> 1)."'>first</a>":"first")." ...
>>>>>>> ";
>>>>>>> echo (($page>1)?"<a
>>>>>>> href='".build_url("books.php", "page",
>>>>>>> $page-1)."'>prev</a>":"prev")."
>>>>>>> | ";
>>>>>>> for($i=$page; $i<=($page+$records_per_page-2)+1; $i++){
>>>>>>> if ($i!=$page && $i<ceil($count/$records_per_page))
>>>>>>> echo "<a
>>>>>>> href='".build_url("books.php", "page",
>>>>>>> $i)."'>$i</a>", "
>>>>>>> | ";
>>>>>>> elseif ($i>ceil($count/$records_per_page))
>>>>>>> continue;
>>>>>>> else echo $i, " | ";
>>>>>>> }
>>>>> ---------------|
>>>>>>> echo " | ... ".(($page<$count)?"<a
>>>>>>> href='".build_url("books.php",
>>>>>>> "page",
>>>>>>> $page+1)."'>next</a>":"next");
>>>>>>> echo " ... ".(($page<$count)?"<a
>>>>>>> href='".build_url("books.php",
>>>>>>> "page",
>>>>>>>
>>>>>>> ceil($count/$records_per_page))."'>last</a>":"last");
>>>>>>> //echo "<p>Table Order</p>";
>>>>>>> echo "<br />Ordered alphabetically by book title : ";
>>>>>>> echo $dir=="ASC"?"Ascending":"<a
>>>>>>> href='".build_url("books.php",
>>>>>>> "dir",
>>>>>>> "asc")."'>Ascending</a>";
>>>>>>> echo " | ";
>>>>>>> echo $dir=="DESC"?"Descending":"<a
>>>>>>> href='".build_url("books.php",
>>>>>>> "dir",
>>>>>>> "desc")."'>Descending</a>";
>>>>>>> echo "<br />";?>
>>>>>>>
>>>>>>> This produces a very nifty pagination - the problem is how to get
>>>>>>> rid of
>>>>>>> the final pages that show up as greater than what is available. The
>>>>>>> script above works fine, except it leaves that final | ...
>>>>>>> Any simple solutions?
>>>>>>>
>>>>>> Do it differently... build an array of the appropriate entries. When
>>>>>> done, use implode( ' | ', $yourArray ).
>>>>>>
>>>>>> Cheers,
>>>>>> Rob.
>>>>> Hate to disappoint you all, but I finally found the errant | .
>>>>> Ridiculous, really, that I bothered you all.
>>>>> it's in the line indicated above --- echo " | ... " --- lose the
>>>>> | and
>>>>> it all works like a charm.
>>>>>
>>>>> :-) ;-)
>>>> You didn't disappoint me... I've seen code like that before, I just
>>>> thought you'd benefit from a cleaner approach instead of the above
>>>> mess.
>>> Actually, as I am new to this, I still have another little glitch which
>>> is a pita. Oh, I know it's a bit of a mess; I have a hard time
>>> following, myself. But, being lazy, I'm trying to fix thigs with a
>>> band-aid. :-(
>>>
>>> But I don't understand how I would "build an array of the appropriate
>>> entries"... what entries do you mean?
>>
>> You have links, each separated by the pipe '|' character. Add each
>> link to a links array:
>>
>> <?php
>>
>> $links = array();
>> foreach( $items as $item )
>> {
>> $links[] = '<a
>> href="#">'.$item.'</a>';
>> }
>>
>> echo implode( ' | ', $links );
>>
>> ?>
>>
>> Hope that helps.
> I'm afraid I still don't understand. I think you are seeing something
> that I don't see. What do you mean by link in the present context... are
> you talking about some snippet of code equaling each page or every page
> in the db? This is an ever growing db.
>
> Anyway, I finally found the error of my ways (at least in this code). It
> may look sloppy, but then I haven't looked that hard for other examples.
> Some I found were too simple, others too bloated.
> At least, this one works for what I need and does exactly what I wanted.
> :-)
> Here's the final fixed code; some obvious (I hope) variables are left
> out and precede the code:
>
> echo (($page !=1)?"<a href='".build_url("books.php",
> "page",
> 1)."'>first</a>":"first")." ... ";
> echo (($page>1)?"<a href='".build_url("books.php",
> "page",
> $page-1)."'>prev</a>":"prev")." | ";
> for($i=$page; $i<=($page+$records_per_page-2)+1; $i++){
> if ($i>ceil($count/$records_per_page))
> continue;
> elseif ($i!=$page)
> echo "<a href='".build_url("books.php", "page",
> $i)."'>$i</a>", " | ";
> else
> echo $i, " | ";
> }
> echo " ... ".(($page<ceil($count/$records_per_page))?"<a
> href='".build_url("books.php", "page",
> $page+1)."'>next</a>":"next");
> if ($page==ceil($count/$records_per_page))
> echo " ... last";
> elseif ($i!=ceil($count/$records_per_page)) echo " ...
> ".(($page<ceil($count/$records_per_page)+$records_per_page)?"<a
> href='".build_url("books.php", "page",
> ceil($count/$records_per_page))."'>last</a>":"last");
> else echo " ... ".(($page<$count)?"<a
> href='".build_url("books.php",
> "page",
> ceil($count/$records_per_page))."'>last</a>":"last");
> echo "<br>Ordered alphabetically by book title : ";
> echo $dir=="ASC"?"Ascending":"<a
> href='".build_url("books.php", "dir",
> "asc")."'>Ascending</a>";
> echo " | ";
> echo $dir=="DESC"?"Descending":"<a
> href='".build_url("books.php", "dir",
> "desc")."'>Descending</a>";
>
> If there is a way to simplify things, please do let me know (with an
> example, please)
> PJ
>
>
>
> --
> Hervé Kempf: "Pour sauver la plančte, sortez du capitalisme."
> -------------------------------------------------------------
> Phil Jourdan --- pj@ptahhotep.com
> http://www.ptahhotep.com
> http://www.chiccantine.com/andypantry.php
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
http://www.weberdev.com/get_example-4092.html
http://www.weberdev.com/get_example-4093.html
are two paging examples that I wrote some time ago
--
Bastien
Cat, the other other white meat