Re: stumped by "order by"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



--- Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:

>  > The problem is when I click the column sorter
> link and
>  > the page re-loads, it looks like the where array
> is
>  > getting wiped out, values are gone.  I get a
> "divison
>  > by zero" error.  I'm assuming this is becasue the
> 
> is this error occurring in mysql or php?
> could you post the relevant line number or sql
> statement that
> causes the error?

I've stopped the "division by zero", but let me
explain with the code:

//Here is the test to make sure user entered at least
//one search value
if(!empty($aWHERE)) {
$query_rsVJ .= ' WHERE '.implode(' AND ',$aWHERE);
}else{
?>
//Let the user know to enter search values or ...
<?php print_r($aWHERE); ?>
<p align="center"><strong><?php print_r ("You must
enter search parameters"); ?> </strong></p>
<?php
exit;
}

Also:

//If no records are found: 
$row_rsVJ = mysql_fetch_assoc($rsVJ);
if ($row_rsVJ == false) {
?>
<p align="center"><strong><?php print_r ("No Matches
Found");?></strong></p>
<?php 
exit;
} 

Now I have been using print_r and var_dump on the
various variables and sql statements.  
Yet the variable $orderParameter_rsVJ was not
returning anything, blank.  Then I removed the two
clauses above, the exit scripts.  At that point the  
$orderParameter_rsVJ variable was printing out the
correct value based on the header link I selected ,
but with a division by zero.  And no records.  That is
when I found the problem with the where array.


> Am I right in assuming that when you click a header
> (order by) link that
>   the page displays the result in the correct order
> BUT does not include
> the where clause that was in effect? (my ideas below
> assume this!)

There will be no records returned without the where
clause. So I'm left with either my exit script or if I
remove that a blank page of no records returned.


> I assume when the page is first called some
> filtering values as passed
> to the page which are used to build the various
> WHERE clauses, in
> addition a default order by statement (e.g. 'ORDER
> BY title'):

Correct although the ORDER BY is still a problem as
it's not being recognized.  I moved the code around in
a few different ways and used Bastien's order as well.
 

$query_rsVJ = " SELECT Jobs.Post, Jobs.JID,Jobs.Title,

Jobs.City, Ind...............[snip]

$aWHERE = array();
if(!empty($s_Ind)) $aWHERE[] = "Jobs.Industry IN
($s_Ind)" ;
if(!empty($s_State)) $aWHERE[] = "Jobs.State IN
($s_State)";......[snip]

if(!empty($aWHERE)) {
$query_rsVJ .= ' WHERE '.implode(' AND ',$aWHERE);
$orderParam_rsVJ = "City";
if (isset($_GET['order_rsVJ'])) {
  $orderParam_rsVJ = (get_magic_quotes_gpc()) ?
$_GET['order_rsVJ'] : addslashes($_GET['order_rsVJ']);
$query_rsVJ = "order by '$orderParam_rsVJ'";
}

This last SQL statement here is not being included in
the result set.  Even the default - "City" is not
being sorted as such.
> 
> the values used to create the WHERE clauses are
> probably disappearing
> because you are not doing one of the following (btw
> doing both is not a
> good idea):
> 
> 1. proliferating the WHERE related values in the
> ORDER BY links - i.e.
> the column headers need to include all the name
> value pairs related to
> the WHERE clauses as well as the name/value pair
> related to ordering. e.g.:
> 	./foo.php?sortfield=price
> instead of:
> 	./foo.php?field1=bar&field2=qux&sortfield=price

I'm going to have to think about this one.  Sounds
like a lot of code.  I'm not complaining :)


> 2. storing the last used filter (i.e. the last given
> set of WHERE clause
> related values) in the session, a DB, file*** or
> whatever in order to
> remain state - in this case you need to retrieve the
> values from where
> they are stored and setup the variables to build the
> SQL as well as
> having a mechanism for detecting whether to use new
> values sent from the
> browser rather than those already stored.

I tried setting $aWhere as a session variable.  Bad
approach as it didn't work.


Stuart

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux