Zen Cart Logo
Forums / Upgrading to 1.5.x / PHP 8.0 - Search function not working properly following upgrade to 1.5.8

PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Views: 26,341

Results 1 to 20 of 36
16 Feb 2023, 5:50 PM
#1
bowbiz avatar

bowbiz

New Zenner

Join Date:
Jan 2009
Posts:
6
Plugin Contributions:
0

PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Hello! We recently upgraded from Zen-Cart 1.5.6a to 1.5.8 and PHP 7.3.33 to 8.0. We are now having an issue with the search function.

It works fine when searching single words, but searching anything with a space gives a blank page with the error: *“WARNING: An Error occurred, please let us know!”. *The issue is the same for both the public-facing search and the admin search. In an admin search the error message is: "WARNING: An Error occurred, please let us know! If you were entering information, please press the BACK button in your browser and re-check the information you have entered to be sure you entered valid data." Searching multiple words does not result in an error message when we use quotes around the phrase, however it does not give any results for key words unless they are entered exactly as they appear in the product.

We are currently running MySQL 10.3.38-MariaDB-log.

We checked the error logs and see the following (example case searching the phrase “two words”, with some info redacted for privacy):

[11-Feb-2023 16:00:31 America/XXXXX] Request URI: /index.php?main_page=search_result&search_in_description=1&keyword=two+words, IP address: X.X.X.X, Language id 1
#1 trigger_error() called at [/home/XXXXX/public_html/includes/classes/db/mysql/query_factory.php:667]
#2 queryFactory->show_error() called at [/home/XXXXX/public_html/includes/classes/db/mysql/query_factory.php:634]
#3 queryFactory->set_error() called at [/home/XXXXX/public_html/includes/classes/db/mysql/query_factory.php:275]
#4 queryFactory->Execute() called at [/home/XXXXX/public_html/includes/classes/split_page_results.php:105]
#5 splitPageResults->__construct() called at [/home/XXXXX/public_html/includes/modules/pages/search_result/header_php.php:459]
#6 require(/home/XXXXX/public_html/includes/modules/pages/search_result/header_php.php) called at [/home/XXXXX/public_html/index.php:35]
--> PHP Fatal error: 1064:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'OR pd.products_name LIKE '%words%' OR p.products_model LIKE '%words%' OR m...' at line 1 :: select count(distinct p.products_id) as total FROM (products p LEFT JOIN manufacturers m USING(manufacturers_id), products_description pd, categories c, products_to_categories p2c ) LEFT JOIN meta_tags_products_description mtpd ON (mtpd.products_id= p2c.products_id AND mtpd.language_id = 1) WHERE (p.products_status = 1 AND p.products_id = pd.products_id AND pd.language_id = 1 AND p.products_id = p2c.products_id AND p2c.categories_id = c.categories_id AND ( ( pd.products_name LIKE '%two%' OR p.products_model LIKE '%two%' OR m.manufacturers_name LIKE '%two%' OR mtpd.metatags_keywords LIKE '%two%' OR mtpd.metatags_description LIKE '%two%' OR pd.products_description LIKE '%two%') AND ( OR pd.products_name LIKE '%words%' OR p.products_model LIKE '%words%' OR m.manufacturers_name LIKE '%words%' OR mtpd.metatags_keywords LIKE '%words%' OR mtpd.metatags_description LIKE '%words%' OR pd.products_description LIKE '%words%') )) ==> (as called by) /home/XXXXX/public_html/includes/classes/split_page_results.php on line 105 <== in /home/XXXXX/public_html/includes/classes/db/mysql/query_factory.php on line 667.

We haven't modified any of the files that are mentioned in the error log. We're not sure where to look next at this stage... any help would be greatly appreciated!

16 Feb 2023, 6:10 PM
#2
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,781
Plugin Contributions:
11

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

getting the same in sites with up-to-the-minute 1.5.8

16 Feb 2023, 6:12 PM
#3
carlwhat avatar

carlwhat

zennedOut

Join Date:
Nov 2005
Location:
los angeles
Posts:
2,957
Plugin Contributions:
8

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

i am unclear if you did the upgrade correctly. i would replace these 2 files with these current live files:

https://github.com/zencart/zencart/blob/v158/includes/functions/functions_search.php
https://github.com/zencart/zencart/blob/v158/includes/classes/split_page_results.php

you can click on the raw button towards the top or the copy icon a couple of icons over to get a copy of said file.

replace those 2 files, and let us know if that resolves the problem.

in your error log, the sql statement does have an extra or which is causing the problem. but on my version on v158, it does not include that extra or.

best.

16 Feb 2023, 6:23 PM
#4
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,781
Plugin Contributions:
11

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

We are using the functions_search.php from two weeks ago and split_page_results from four months ago on github.

16 Feb 2023, 6:38 PM
#5
swguy avatar

swguy

Administrator

Join Date:
Feb 2006
Location:
Tampa Bay, Florida
Posts:
10,693
Plugin Contributions:
56

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Not seeing this when testing current contents of github (pre-1.5.8a).

19 Feb 2023, 5:11 PM
#6
bowbiz avatar

bowbiz

New Zenner

Join Date:
Jan 2009
Posts:
6
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

carlwhat:

i am unclear if you did the upgrade correctly. i would replace these 2 files with these current live files:

https://github.com/zencart/zencart/blob/v158/includes/functions/functions_search.php
https://github.com/zencart/zencart/blob/v158/includes/classes/split_page_results.php

you can click on the raw button towards the top or the copy icon a couple of icons over to get a copy of said file.

replace those 2 files, and let us know if that resolves the problem.

Replacing those 2 files resolved the issue and everything works perfectly now. Many thanks!

30 Jan 2024, 4:22 PM
#7
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Search is not working properly in my fresh install of 1.5.8a. My installation specifics are at the end of this post.

I downloaded a new copy on Jan 21 and I have 2 fresh installs...one with no mods and the other with zca_bootstrap. These are my fallback troubleshooting installs to make sure any changes I make to my plug-in are not what is causing any issues I run into.

This search:

https://localhost/zencart-1.5.8a_unmodified/index.php?main_page=search_result&keyword=.+or+-&search_in_description=1&categories_id=&inc_subcat=1&manufacturers_id=&pfrom=100&pto=200&dfrom=&dto=

#1 - returns every single product in the catalog...regardless of price.

#2 - I had to put in a period or dash in the text box...leaving it blank is not allowed and putting a single space in makes it look like the search is empty. Being empty or allowing spaces should be allowed. If I want to do a price range search, I want it to return all products in that price range.

#3 - Same issue if you select a single manufacturer...text box can't be blank or have a single space. What if I want to see all of that manufacturers products? I know, there are other tools for doing that but those tools disappear on mobile devices or smaller screens now.

#4 - Same issue when selecting a category...

Where and how do I allow the text box to be empty or contain a space? I have mods on my 1.5.7d cart which are highly dependent on the search mechanism...those mods are useless in 1.5.8a unless I fix whatever is causing this behavior.

I will try the two files on github that are mentioned above. I just wanted the community to know that this is still an issue since I downloaded the 1.5.8a on Jan 21.

Thanks.

Server Host: localhost (127.0.0.1)
Database: zc158a_ezfeeds_jce_bootstrap
Store Home: C:/xampp/htdocs/zencart-1.5.8a_ezfeeds_jce_bootstrap/
Server OS: Windows NT DESKTOP-4B8U62U 10.0 build 19045 (Windows 10) AMD64
Server Date: 01/30/2024 10:24:55
Server Up Time: Unsupported
HTTP Server: Apache/2.4.54 (Win64) OpenSSL/1.1.1p PHP/8.0.23
PHP Version: 8.0.23 (Zend: 4.0.23)
PHP File Uploads: On
Upload Max Size: 512M
PHP Memory Limit: -1
POST Max Size: 1024M
Database Engine: MySQL 10.4.25-MariaDB
Database Host: localhost (127.0.0.1)
Database Date: 01/30/2024 10:24:55
Database Data Size: 831 kB
Database Index Size: 788 kB
MySQL Slow Query Log Status: Off
MySQL Slow Query Log File: DESKTOP-4B8U62U-slow.log
MySQL Mode: NO_ZERO_IN_DATE, NO_ZERO_DATE, NO_ENGINE_SUBSTITUTION
View the database configuration variables

30 Jan 2024, 4:41 PM
#8
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

I downloaded and installed the new files from github and they broke my install...white screen of death.

I saved the original files and will reinstall them.

I will dig in to see what is causing this...appreciate any and all help.

30 Jan 2024, 6:02 PM
#9
carlwhat avatar

carlwhat

zennedOut

Join Date:
Nov 2005
Location:
los angeles
Posts:
2,957
Plugin Contributions:
8

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

just as fyi, i can confirm that on v158a, the page:

index.php?main_page=search_result&keyword=.+or+-&search_in_description=1&categories_id=&inc_subcat=1&manufacturers_id=&pfrom=100&pto=200&dfrom=&dto=

returns all products.

on the v200-alpha, the query returns all products from 100-200 and ones that are marked call for price.

1 Feb 2024, 2:10 AM
#10
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

carlwhat:

just as fyi, i can confirm that on v158a, the page:

index.php?main_page=search_result&keyword=.+or+-&search_in_description=1&categories_id=&inc_subcat=1&manufacturers_id=&pfrom=100&pto=200&dfrom=&dto=

returns all products.

on the v200-alpha, the query returns all products from 100-200 and ones that are marked call for price.

Thanks for confirming.

I will download 2.0 and put relevant files in 1.5.8a to see if it corrects.

What are the relevant files?

1 Feb 2024, 3:17 AM
#11
carlwhat avatar

carlwhat

zennedOut

Join Date:
Nov 2005
Location:
los angeles
Posts:
2,957
Plugin Contributions:
8

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

mikeel100:

....
What are the relevant files?

oh my....

if only it was 1 file...

i think you are looking for a world of hurt here... and if i were to point you in the direction of which files are necessary, i would get caught up into more than i would like to chew right now...

and then there is the potential wrist slap for directing people to use code not yet released....

the difference in searching between 158a and 200 are vast, a new class file and the like (of which i am a fan)... but whether that class file is automatically loaded or you need some load config files to get that class loaded, i can not say... far too much work/time for me to dig into at the moment...

perhaps someone else could help... the code is all out on github, but for me to help... well, this is a task for someone with more time and inclination...

1 Feb 2024, 3:42 AM
#12
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Well $%^^...that puts a damper on my upgrade.

I appreciate your honesty and insight.

I'll dig in to the 1.5.8a files and see where it leads me.

I built a good search engine for mass moving of products. Maybe I can adapt it for my purposes until 2.0 releases.

Thanks.

3 Feb 2024, 3:12 AM
#13
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

I think I figured out why the pricing search isn't working.

If you use 0 for the from price and 25 for the to price, it fails every time.

But if you use 0.00 - 25.00, it returns products in that price range.

So, something has to be put in the header_php.php to account for no decimals being used on the input page.

I.E. if $pfrom or $pto do not contain a decimal, then put .00 on the end of them so everything will work.

I'll be trying to figure out where that needs to happen, but, if anyone knows where to do it, I'd appreciate the info.

I did verify this test on a fresh install with no modifications...as long as you use decimals, it works.

Thanks.

3 Feb 2024, 5:58 AM
#14
carlwhat avatar

carlwhat

zennedOut

Join Date:
Nov 2005
Location:
los angeles
Posts:
2,957
Plugin Contributions:
8

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

mikeel100:

...
I'll be trying to figure out where that needs to happen, but, if anyone knows where to do it, I'd appreciate the info.
...
Thanks.

mike eel!!
you did the hard work, i'll do the easy part....

try replacing this file with the version in this link.

in my development suite, taking a v158a release and replacing that file gives the expected results.

as to what else may be disturbed by that change, i will leave it to you to figure out...

actually, in looking at the file, the only thing changed was the bug that you found that was addressed. and another addition for sanitizing sale_category.

i think no problems...

the change is on line 120, you need an added ?

//from
if (isset($_GET[$key]) && !preg_match('/^\d+(\.\d+)/', $_GET[$key])) {
//to
if (isset($_GET[$key]) && !preg_match('/^\d+(\.\d+)?/', $_GET[$key])) {

let us know if that works.

best.

3 Feb 2024, 12:25 PM
#15
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Thanks. I would have never figured that out since I am vaguely familiar with that coding.

I'll plugin the change after breakfast.

3 Feb 2024, 2:26 PM
#16
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

carlwhat:

mike eel!!
you did the hard work, i'll do the easy part....

try replacing this file with the version in this link.

in my development suite, taking a v158a release and replacing that file gives the expected results.

as to what else may be disturbed by that change, i will leave it to you to figure out...

actually, in looking at the file, the only thing changed was the bug that you found that was addressed. and another addition for sanitizing sale_category.

i think no problems...

the change is on line 120, you need an added ?

//from
if (isset($_GET[$key]) && !preg_match('/^\d+(.\d+)/', $_GET[$key])) {
//to
if (isset($_GET[$key]) && !preg_match('/^\d+(.\d+)?/', $_GET[$key])) {

> 
> let us know if that works.
> 
> best.

The missing ? definitely fixed the issue in the unmodified install. 

It helps in my plugin, but, the pagination disappears when I go to the second page of the results. 

I'm not finished with merging all of my changes yet, so, I'll wait and see how it works after that is done.

Thanks again.
26 Feb 2024, 3:39 PM
#17
royaldave avatar

royaldave

Zen Follower

Join Date:
Aug 2013
Location:
Perth, WA, AU
Posts:
284
Plugin Contributions:
1

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

mikeel100:

Search is not working properly in my fresh install of 1.5.8a. My installation specifics are at the end of this post.

I downloaded a new copy on Jan 21 and I have 2 fresh installs...one with no mods and the other with zca_bootstrap. These are my fallback troubleshooting installs to make sure any changes I make to my plug-in are not what is causing any issues I run into.

This search:

https://localhost/zencart-1.5.8a_unmodified/index.php?main_page=search_result&keyword=.+or+-&search_in_description=1&categories_id=&inc_subcat=1&manufacturers_id=&pfrom=100&pto=200&dfrom=&dto=

> 
> 
> #1 - returns every single product in the catalog...regardless of price.
> 
> #2 - I had to put in a period or dash in the text box...leaving it blank is not allowed and putting a single space in makes it look like the search is empty. Being empty or allowing spaces should be allowed. If I want to do a price range search, I want it to return all products in that price range.
> 
> #3  - Same issue if you select a single manufacturer...text box can't be blank or have a single space. What if I want to see all of that manufacturers products? I know, there are other tools for doing that but those tools disappear on mobile devices or smaller screens now.
> 
> #4 - Same issue when selecting a category...



Any further joy on this?

I am also struggling with the search on 158a and am experiencing issues #1 and #2 as listed here.

I've replaced the suggested files but am getting some odd results.

My gripe is getting search by price range to work as it should.

After replacing the files, in some instances it appears to work as it should.

In another test though where I entered a price range, it only shows products with a '+' in the title!
26 Feb 2024, 3:54 PM
#18
royaldave avatar

royaldave

Zen Follower

Join Date:
Aug 2013
Location:
Perth, WA, AU
Posts:
284
Plugin Contributions:
1

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

Further to this.

I am specifically testing to find products on my site with a price of $48.

With the init_sanitise fix in place I'm getting results like this -

(In all these tests I have something in the keywords)-

From $48 to $48 - I get all appropriately priced products with a '+' in the title
From $40 to $48 - same result
From $0 to $48 - it seems to work as it should.

27 Feb 2024, 12:41 AM
#19
mikeel100 avatar

mikeel100

Zen Follower

Join Date:
Sep 2012
Location:
West Jefferson, NC
Posts:
391
Plugin Contributions:
0

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

royaldave:

Further to this.

I am specifically testing to find products on my site with a price of $48.

With the init_sanitise fix in place I'm getting results like this -

(In all these tests I have something in the keywords)-

From $48 to $48 - I get all appropriately priced products with a '+' in the title
From $40 to $48 - same result
From $0 to $48 - it seems to work as it should.

Try putting 0.00 and 48.00 for the search.

If it works, you are missing the aforementioned question mark in sanitize file.

Mine started working after I updated the sanitize file.

Good luck.

27 Feb 2024, 8:20 AM
#20
royaldave avatar

royaldave

Zen Follower

Join Date:
Aug 2013
Location:
Perth, WA, AU
Posts:
284
Plugin Contributions:
1

Re: PHP 8.0 - Search function not working properly following upgrade to 1.5.8

mikeel100:

Try putting 0.00 and 48.00 for the search.

If it works, you are missing the aforementioned question mark in sanitize file.

Mine started working after I updated the sanitize file.

Good luck.

I have tried that. Updating the sanitize makes it better, but it doesn't work 100%.

As per my examples above, if I do 48 to 48 it only shows products with a '+' in the title (why?)
Same for 46 to 48, and 47 to 48.

However if I do 45 to 48 it works as it should! And also 0 to 48.