Just copying the error messages here so I can revert my changes on the site. *Notice*: Undefined variable: PHP_SELF in * /var/virtual/web/w0019/html/profilemanager.php* on line *75* *Notice*: Undefined variable: PHP_SELF in * /var/virtual/web/w0019/html/profilemanager.php* on line *76 x 22 more times. Then I get :- **Notice*: Use of undefined constant url - assumed 'url' in * /var/virtual/web/w0019/html/generic.php* on line *289* *Notice*: Use of undefined constant desc - assumed 'desc' in * /var/virtual/web/w0019/html/generic.php* on line *290 x many more times. Then the result of the var_dump($q); *string(66) "SELECT id FROM designers WHERE view=1 ORDER BY id ASC LIMIT 0, 30 " HTH I am still looking at it myself, but going round in circles, so thanks for your help. Gav... On Sun, Aug 31, 2008 at 10:15 PM, Gav <ipv6guru@xxxxxxxxx> wrote: > > > On Sun, Aug 31, 2008 at 9:27 PM, Evert Lammerts <evert.lammerts@xxxxxxxxx>wrote: > >> You don't need to print the query anymore - I already did that. You >> need to change your code because right now it is open for SQL >> injection attacks: I added some SQL to the url and generated an SQL >> error (http://www.iwdp.co.uk/list.php?region=1&start=30,2). When you >> retrieve start, e.g. $_GET['start'], do a check to make sure the value >> is an integer. >> >> The good news is that the query looks fine: >> SELECT d.id AS id FROM designers d, designer_regions dr WHERE >> dr.region_id=1 AND dr.designer_id=d.id AND d.view=1 ORDER BY d.id ASC >> LIMIT 0, 30; >> >> Can you run this query directly on the database and see what the result >> is? > > > *SQL query:* SELECT d.id AS id FROM designers d, designer_regions dr WHERE > dr.region_id=1 AND dr.designer_id=d.id AND d.view=1 ORDER BY d.id ASC > LIMIT 0, 30; > *Rows:* 30 id 2 4 5 11 43 63 86 99 117 119 158 165 233 272 > 290 305 328 335 363 396 414 425 430 436 459 489 490 518 536 > 554 > >> >> >> Also check if you get an error after setting error_reporting to E_ALL. > > > Yup, I left it up there at http://www.iwdp.co.uk/list.php > > The PHP_SELF being referred to as undefined is in the included file > generic.php :- > > class DropNav > { > var $items =array(); > var $head; > var $body; > > // CONSTRUCTOR > function DropNav() > { > } > > // PUBLIC > function renderHead() > { > $this->buildHTML(); > print $this->head; > } > > // PUBLIC > function renderBody() > { > $this->buildHTML(); > print $this->body; > } > > // PUBLIC > function addItem( $url, $desc ) > { > $this->items[] = array( "url" => $url, "desc"=>$desc ); > } > > // PRIVATE > function buildHTML() > { > global $PHP_SELF; > $this->body = "<form action=\"$PHP_SELF\">\n"; > $this->body .= "\t<p><select name=\"newLocation\" > onchange=\"jumpPage(this.form.newLocation)\">\n"; > foreach ( $this->items as $item ) > { > $this->body .="\t\t<option value=\"".$item[url]."\">"; > $this->body .= $item[desc]; > $this->body .="</option>\n"; > } > > $this->body .= "\t</select></p>\n</form>\n"; > > $this->head = "<script type=\"text/javascript\">\n"; > $this->head .= "<!-- > function jumpPage( newLoc ) > { > newPage = newLoc.options[newLoc.selectedIndex].value; > if ( newPage != \"\" ) > { > window.location.href=newPage; > } > } // -->\n"; > $this->head .= "</script>\n\n"; > } > } > > Thanks > > Gav... > > >> >> On Sun, Aug 31, 2008 at 1:16 PM, Evert Lammerts >> <evert.lammerts@xxxxxxxxx> wrote: >> > The code you've sent seems to be fine, and if I check your website it >> > does everything it should do in terms of filtering - if I select >> > Tayside as a region I get a development company with the region set to >> > Tayside. It seems to me that this means the problem is not in one of >> > the subclasses of ProfileList, so not a compatibility issue on that >> > level ($this->query works fine). >> > >> >> while( $row = $db->getrow() ) >> > seems to stop after one loop. This is either because there are no more >> > results - the query is limited to 1, so $count=1 - or because >> > $db->getRow generates an error. >> > >> >> COUNT and $count look like they have different roles to me, COUNT is >> the amount of >> >> designers to be listed per page, $count is the number of designers to >> be listed altogether, >> >> so 150 designers would give me 5 pages of 30 designers. >> > >> > In ProfileList::render the query is appended with "LIMIT $start, >> > $count", and the results of the query all seem to be rendered. This >> > probably means that $count and COUNT should have the same value - 30 - >> > and that the render function is initially called with the global >> > variable COUNT as parameter. >> > >> > To check what goes wrong you first need to set error_reporting to >> > E_ALL in php.ini and restart your webserver, or add the line >> > error_reporting(E_ALL); at the beginning of you code. After that you >> > need to print the query from ProfileList::render. Can you adjust the >> > function and add var_dump($q); after the line $q = $q." LIMIT $start, >> > $count ";? >> > >> > Evert >> > >> > > > > -- > Gav... > > > > <http://www.16degrees.com.au> >