Follow us on Twitter X-Cart on Facebook Wiki
Shopping cart software Solutions for online shops and malls

Data passing between template and PHP file

 
Reply
   X-Cart forums > X-Cart 4 > Dev Questions > Changing design
 
Thread Tools Search this Thread
  #1  
Old 12-15-2008, 01:00 PM
 
AMMoyer AMMoyer is offline
 

Senior Member
  
Join Date: Nov 2008
Posts: 150
 

Default Data passing between template and PHP file

I hope someone can give me some direction with this. I've made a new template with three dropdowns and the bottom two need to be dynamically populated from a table I have added to the database.

tpl file
Code:
{* $Id: mmy.tpl,v 1.0.0.0 2008/12/12 07:58:28 amm Exp $ *} {capture name=menu} <form method="post" action="mmy.php" name="year"> <select name="year" style="width: 80%;"> <option value="" selected="selected">Select Year</option> <option value="2009">2009 <option value="2008">2008 <option value="2007">2007 <option value="2006">2006 <option value="2005">2005 <option value="2004">2004 </select><br> <form method="post" action="mmy.php" name="mmysearchform"> <select name="posted_data[makeid]" style="width: 80%;"> <option value="" selected="selected">Select Make</option> </select><br> <form method="post" action="mmy.php" name="mmysearchform"> <select name="posted_data[modelid]" style="width: 80%;"> <option value="" selected="selected">Select Model</option> </select> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_mmy_search menu_content=$smarty.capture.menu cellpadding=$fc_cellpadding}
php file
Code:
$year = $_POST['year']; if ($year){ ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// }

Does the year dropdown post the result to the php file as I have it shown? I think I am missing some sort of variable declaration or something even more obvious. How do I get the resulting query back to the tpl file to fill the make dropdown? I believe I'll need to loop through the array to fill that drop down. Is this correct.

Sorry for being vague, I'm still trying to get a handle on the templates and Smarty. Thanks.

Adam
__________________
Adam
X-Cart Gold 4.4.5 - Live
X-Cart Gold 4.1.11 - Retired
X-Payments 1.0.4
CDSEO Pro
EWD Hosting
Reply With Quote
  #2  
Old 12-16-2008, 08:09 AM
 
AMMoyer AMMoyer is offline
 

Senior Member
  
Join Date: Nov 2008
Posts: 150
 

Default Re: Data passing between template and PHP file

OK here's what I've come up with now. Still nothing. Can someone direct me to ways to troubleshoot this? I don't even know that the year is being posted to the PHP file.

from /skin/mmy.tpl
Code:
{capture name=menu} <form method="post" action="mmy.php" name="mmysearchform"> <select name="year" style="width: 80%;"> <option value="" selected="selected">Select Year</option> <option value="2009">2009 <option value="2008">2008 <option value="2007">2007 <option value="2006">2006 <option value="2005">2005 <option value="2004">2004 </select><br> {section name=i loop=$makeid} {$makeid[i].make_name}&lt;br&gt; {/section} <form method="post" action="mmy.php" name="year"> <select name="posted_data[makeid]" style="width: 80%;"> <option value="" selected="selected">Select Make</option> </select><br> <form method="post" action="mmy.php" name="mmysearchform"> <select name="posted_data[modelid]" style="width: 80%;"> <option value="" selected="selected">Select Model</option> </select> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_mmy_search menu_content=$smarty.capture.menu cellpadding=$fc_cellpadding}

from main xcart folder:
Code:
$year = $_POST['year']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) &gt;= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smart-&gt;assign ("makeid", $makeid); }

Are the file locations correct? Am I missing some sort of include? Any help is greatly appreciated. Thanks.

Adam
__________________
Adam
X-Cart Gold 4.4.5 - Live
X-Cart Gold 4.1.11 - Retired
X-Payments 1.0.4
CDSEO Pro
EWD Hosting
Reply With Quote
  #3  
Old 12-16-2008, 09:19 AM
  Vetrivel's Avatar 
Vetrivel Vetrivel is offline
 

eXpert
  
Join Date: Apr 2008
Posts: 398
 

Default Re: Data passing between template and PHP file

use event to submit the form
something like this->
<form method="post" action="mmy.php" name="mmysearchform">
<select name="year" style="width: 80%;" onchange="javascript:document.mmysearchform.submit ();">


Quote:
Originally Posted by AMMoyer
OK here's what I've come up with now. Still nothing. Can someone direct me to ways to troubleshoot this? I don't even know that the year is being posted to the PHP file.

from /skin/mmy.tpl
Code:
{capture name=menu} <form method="post" action="mmy.php" name="mmysearchform"> <select name="year" style="width: 80%;"> <option value="" selected="selected">Select Year</option> <option value="2009">2009 <option value="2008">2008 <option value="2007">2007 <option value="2006">2006 <option value="2005">2005 <option value="2004">2004 </select><br> {section name=i loop=$makeid} {$makeid[i].make_name}&lt;br&gt; {/section} <form method="post" action="mmy.php" name="year"> <select name="posted_data[makeid]" style="width: 80%;"> <option value="" selected="selected">Select Make</option> </select><br> <form method="post" action="mmy.php" name="mmysearchform"> <select name="posted_data[modelid]" style="width: 80%;"> <option value="" selected="selected">Select Model</option> </select> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_mmy_search menu_content=$smarty.capture.menu cellpadding=$fc_cellpadding}

from main xcart folder:
Code:
$year = $_POST['year']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) &gt;= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smart-&gt;assign ("makeid", $makeid); }

Are the file locations correct? Am I missing some sort of include? Any help is greatly appreciated. Thanks.

Adam
Reply With Quote
  #4  
Old 12-16-2008, 09:22 AM
  Vetrivel's Avatar 
Vetrivel Vetrivel is offline
 

eXpert
  
Join Date: Apr 2008
Posts: 398
 

Default Re: Data passing between template and PHP file

and try to put exit(); in php file to make sure whether the form submitted to corresponding File or not.
Reply With Quote
  #5  
Old 12-17-2008, 02:11 PM
 
AMMoyer AMMoyer is offline
 

Senior Member
  
Join Date: Nov 2008
Posts: 150
 

Default Re: Data passing between template and PHP file

Thanks, now its sending the year to mmy.php but to no surprise it's causing an error that ends up showing the entire php file in the browser.

Can someone give me some direction on how to troubleshoot this? Any help is greatly appreciated. Thanks.

Adam
__________________
Adam
X-Cart Gold 4.4.5 - Live
X-Cart Gold 4.1.11 - Retired
X-Payments 1.0.4
CDSEO Pro
EWD Hosting
Reply With Quote
  #6  
Old 12-17-2008, 07:09 PM
  Vetrivel's Avatar 
Vetrivel Vetrivel is offline
 

eXpert
  
Join Date: Apr 2008
Posts: 398
 

Default Re: Data passing between template and PHP file

Hi,
Please check presence of opening and closing php tag?
and just copy and paste the error or provide the error screen shot.
Then only it is easy for us to debug.

Quote:
Originally Posted by AMMoyer
Thanks, now its sending the year to mmy.php but to no surprise it's causing an error that ends up showing the entire php file in the browser.

Can someone give me some direction on how to troubleshoot this? Any help is greatly appreciated. Thanks.

Adam
Reply With Quote
  #7  
Old 12-18-2008, 08:44 AM
 
AMMoyer AMMoyer is offline
 

Senior Member
  
Join Date: Nov 2008
Posts: 150
 

Default Re: Data passing between template and PHP file

After implementing some of the suggestions and a couple of easy things I found this is what is happening.

php file
Code:
<?php $year = $_POST['year2']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) >= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smarty->assign ("makeid", $makeid); } ?>

Is giving me:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\xcart\mmy.php on line 6

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\wamp\www\xcart\mmy.php on line 8

Now I'm guessing query is not returning any results. Does the query automatically use the last connection to the database? Or is there something I need to change in the connection to get this to work? Thanks again.

Adam
__________________
Adam
X-Cart Gold 4.4.5 - Live
X-Cart Gold 4.1.11 - Retired
X-Payments 1.0.4
CDSEO Pro
EWD Hosting
Reply With Quote
  #8  
Old 12-18-2008, 09:16 AM
  Vetrivel's Avatar 
Vetrivel Vetrivel is offline
 

eXpert
  
Join Date: Apr 2008
Posts: 398
 

Default Re: Data passing between template and PHP file

1.
To establish connection just include this line
require "./auth.php";
after this <?php line.

2.If you need to get the list of makeid for this year
just use
$makelist= func_query("SELECT DISTINCT(makeid),makename FROM iemmy WHERE yearid='$year'");

So,above query will display all the makeid and makename related to your year
then use smarty like this
$smarty->assign ("makelist", $makelist);


3. in your tpl file use foreach function to list this.


Quote:
Originally Posted by AMMoyer
After implementing some of the suggestions and a couple of easy things I found this is what is happening.

php file
Code:
<?php $year = $_POST['year2']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) >= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smarty->assign ("makeid", $makeid); } ?>

Is giving me:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\wamp\www\xcart\mmy.php on line 6

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\wamp\www\xcart\mmy.php on line 8

Now I'm guessing query is not returning any results. Does the query automatically use the last connection to the database? Or is there something I need to change in the connection to get this to work? Thanks again.

Adam
Reply With Quote
  #9  
Old 12-18-2008, 12:00 PM
 
AMMoyer AMMoyer is offline
 

Senior Member
  
Join Date: Nov 2008
Posts: 150
 

Default Re: Data passing between template and PHP file

So far so good. Now it seems as if the php file is working (ie no errors), but the page goes white and the URL is ...xcart/mmy.php It's like its loading a new page rather than just running the php and returning results. Here's what I have going now.

tpl
Code:
{capture name=menu} <form method="post" action="mmy.php" name="mmysearchform"> <select name="year2" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Year</option> <option value="2009">2009 <option value="2008">2008 <option value="2007">2007 <option value="2006">2006 <option value="2005">2005 <option value="2004">2004 </select><br> <select name="make" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Make</option> </select><br> <select name="model" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Model</option> </select> </form> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_mmy_search menu_content=$smarty.capture.menu cellpadding=$fc_cellpadding}

php
Code:
<?php require "./auth.php"; $year = $_POST['year2']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) >= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smarty->assign ("makeid", $makeid); } ?>

What I am ultimately trying to do is to pass this query back to the form in my tpl file and populate the second dropdown box with the results. I tried adding a foreach loop to the tpl file to see the array, but the browser screen still went white.

I'm extremely grateful for your help. Thanks again.

Adam
__________________
Adam
X-Cart Gold 4.4.5 - Live
X-Cart Gold 4.1.11 - Retired
X-Payments 1.0.4
CDSEO Pro
EWD Hosting
Reply With Quote
  #10  
Old 12-18-2008, 07:07 PM
  Vetrivel's Avatar 
Vetrivel Vetrivel is offline
 

eXpert
  
Join Date: Apr 2008
Posts: 398
 

Default Re: Data passing between template and PHP file

ok..
you need to tell your system that which tpl need to display.
For that
add this in your php file:
$smarty->assign ("main", "anynewnamehere");
add the below line in skin1/common_templetes.tpl before "else" condition

{elseif $main eq "anynewnamehere"}
{include file="your tpl name goes here"}



Quote:
Originally Posted by AMMoyer
So far so good. Now it seems as if the php file is working (ie no errors), but the page goes white and the URL is ...xcart/mmy.php It's like its loading a new page rather than just running the php and returning results. Here's what I have going now.

tpl
Code:
{capture name=menu} <form method="post" action="mmy.php" name="mmysearchform"> <select name="year2" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Year</option> <option value="2009">2009 <option value="2008">2008 <option value="2007">2007 <option value="2006">2006 <option value="2005">2005 <option value="2004">2004 </select><br> <select name="make" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Make</option> </select><br> <select name="model" style="width: 80%;"onchange="javascript:document.mmysearchform.submit ();"> <option value="" selected="selected">Select Model</option> </select> </form> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> <font class="CategoriesList"><a href="home.php?cat=" class="VertMenuItems"></a></font><br /> {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_mmy_search menu_content=$smarty.capture.menu cellpadding=$fc_cellpadding}

php
Code:
<?php require "./auth.php"; $year = $_POST['year2']; ///////////////////////////////////////////////// make query for dropdown $query = sprintf("SELECT DISTINCT makeid, makename FROM iemmy WHERE yearid='$year'"); $result = @mysql_query($query); $rowMake = mysql_fetch_array($result); ///////////////////////////////////////////////// if (mysql_num_rows ($result) >= 1) { $makeid = array(); while ($rows = mysql_fetch_array ($result, MYSQL_ASSOC)) array_push ($makeid, $rows); $smarty->assign ("makeid", $makeid); } ?>

What I am ultimately trying to do is to pass this query back to the form in my tpl file and populate the second dropdown box with the results. I tried adding a foreach loop to the tpl file to see the array, but the browser screen still went white.

I'm extremely grateful for your help. Thanks again.

Adam
Reply With Quote
Reply
   X-Cart forums > X-Cart 4 > Dev Questions > Changing design


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -8. The time now is 01:44 PM.

   

 
X-Cart forums © 2001-2020