首先,请理解我刚刚开始学习php,javascript和ajax在过去的10天,所以我需要一些牵手和一步一步的例子和指导。我仔细阅读了学校里关于这些主题的课程,发现它们非常有用;因此,我能够使用他们的示例和我在这里找到的其他代码片段以及其他站点为我的项目编写一些基本代码。
这篇文章有点长,所以我可以解释我的最终目标,这段代码和我已经尝试。
我已经开始编写一段非常复杂的代码,它包含多个部分,但最终的结果是一个下拉列表,其中包含一个链接到外部url的页面主图像的图像缩略图按钮,该url是根据用户的下拉列表选择动态创建的。
这是我的项目:
我正在用joomla3.x.x、bootstrap3和j2store(以及其他组件和模块)构建一个网站,该网站以照片作为数字图像进行销售,并可应用于物理产品(帆布印花、t恤、咖啡杯等)。这些物理产品存在于一个第三方网站(zazzle)上,该网站通过zazzle的rss提要和另一个第三方javascript代码嵌入到我的私人网站(将zazzle rss提要网格显示嵌入到我的网站)。
zazzle api允许我的用户从我的私人网站上选择任何图片,并将该图片应用到zazzle市场上的任何产品。
我的用户最终会从我的网站上的下拉列表中选择一类产品,然后单击一个按钮,打开一个新窗口连接到zazzle marketplace,该窗口将显示一个相关物理产品的网格,其中包含用户单击按钮的网站活动页上显示的图像。
例如,用户首先在“我的网站”上查看主图像为“浅紫色非洲雏菊”的页面,从下拉列表中选择一类电子产品,然后单击“设计您自己的礼物”按钮打开一个新窗口,连接到zazzle marketplace并显示一个电子产品网格,在用户选择的产品上显示“浅紫色非洲雏菊”图像。
“设计你自己的礼物”按钮后面的url需要在用户从我的网站上的下拉列表中选择一个产品类别后,用所选的值动态创建。
这是我需要使用的zazzle api:
https://www.zazzle.com/api/create/at-238500395169782226?rf=238500395169782226&ax=DesignBlast&sr=250508120301240636&cg= <DYNAMIC CATEGORY ID FROM DROPDOWN SELECTION LIST> &t__useQpc=false&ed=true&t__smart=false&continueUrl=https%3A%2F%2Fwww.zazzle.com%2Fcapturedimagesmaine&tc=&ic=&t_coverimage_iid= <URLENCODED DYNAMIC PATH OF ACTIVE PAGE MAIN_IMAGE>"
我在mysql数据库中创建了两个表,其中包含zazzle marketplace中产品的名称、类别id和部门id。我还从j2store productimages表中获取主映像路径。
到目前为止,我能够编写的代码完成以下任务:
连接到数据库
选择列/表
从列/表中获取数据
创建html表单以显示mysql查询结果
创建查询结果的下拉选择列表
回音编码的url,带有与参数/动态值连接的zazzle api
这是我目前的代码:
<div class="form-group" style="margin: 30px 10%;">
<h3>Create Zazzle Products</h3><p><h4>Select a Template Category</h4>
<form name="create-zproducts" id="create-zproducts" action="create-zproduct.php" method="POST">
<?php
//connection
$con = mysqli_connect('localhost', 'user', 'password', 'database');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
$sql="SELECT * FROM david_cim_template_categories, david_j2store_productimages";
$cg = $_GET['cim_template_cg'];
$coverimage_iid = $_GET['main_image'];
$result = mysqli_query($con,$sql);
?>
<select name="selectZcategories" id="selectZcategories">
<?php
while($row = mysqli_fetch_array($result)) {
echo '<option value="'.$row['cim_template_cg'].':'.$row['cim_template_cgname']'">'.$row['cim_template_cgname'].'</option>';
}
?>
</select>
<button onclick="ajaxFunction();">Submit</button><br /><br />
<?php
<script>
function ajaxFunction() {
var selectedData=$("#selectZcategories option:selected").val();
$.ajax({
type : "POST",
url: "select_zproduct.php",
data: { selection : selectedData },
success: function (html) {
//Success handling
}
})
}
</script>
?>
<?php
echo $ZAPI = "https://www.zazzle.com/api/create/at-238500395169782226?rf=238500395169782226&ax=DesignBlast&sr=250508120301240636&cg=";
echo $cg = ['cim_template_cg'];
echo $ZPARAM = "&t__useQpc=false&ed=true&t__smart=false&continueUrl=https%3A%2F%2Fwww.zazzle.com%2Fcapturedimagesmaine&tc=&ic=&t_coverimage_iid=https%3A%2F%2Fwww.capturedimagesofmaine.com%2Fimages%2Fproducts%2Foriginal%2F";
echo $coverimage_iid = ['main_image'];
echo $product_text = "&t_text1_txt=Welcome";
?>
</form>
</div>
// new file (select_zproduct.php) added to same path as create_zproduct.php
// contents of select_zproduct.php below:
<?php
if( isset($_POST['selection']) )
{
$selecterData=$_POST['selection'];
$selecterArrayData=explode(':', $selecterData);
$cg=$selecterArrayData[0];
$coverimage_iid=$selecterArrayData[1];
$url='https://www.zazzle.com/api/create/at-238500395169782226?rf=238500395169782226&ax=DesignBlast&sr=250508120301240636&cg='.$cg.'&t__useQpc=false&ed=true&t__smart=false&continueUrl=https%3A%2F%2Fwww.zazzle.com%2Fcapturedimagesmaine&tc=&ic=&t_coverimage_iid='.$coverimage_iid.'';
?>
<script>
window.location.href=<?php echo $url; ?>;
</script>
<?php
}
?>
上面的代码只是我自己编写的代码的开始。
我目前的障碍是无法使“cg=”参数显示用户从下拉列表中选择的数值$cg=。当前代码返回url中的单词“array”,而不是所选的值(例如,cg=array而不是cg=1962154493014739)
我相信我需要使用ajax和javascript来完成这个操作,但是我还不知道如何自己编写它。
我需要编写的代码将完成以下任务:
将适当的$变量分配给url片段($zapi,$cg等),以用于连接
为要在上面的url中使用的数据库下拉选择结果分配适当的$变量
连接所有$变量
分析所有$变量
将最终编码的url嵌入到按钮中
使用活动页主图像的缩略图作为按钮图像src
我现在需要知道的是,如何将“cim\u template\u cg”的数值插入到最终url中的“cg=”参数中,以便当用户选择与该cg=关联的“cim\u template\u cgname”时,最终url将输出“&cg=1962154493014739”。
一旦我看到了解决方案,我就可以将它应用到我需要创建的其他动态值中。我只在代码片段的帮助下编写了一个javascript代码,因此需要编写的任何ajax或javascript代码都需要在示例中向我展示,并描述相关文件。
提前谢谢你的帮助!
2条答案
按热度按时间hkmswyz61#
因此,如果我正确理解了您的问题,您就有了实现这一点所需的数据,即您有来自数据库的url路径和id,以及url字符串,它需要在选择时动态添加这些数据库值?
为了回答您的一个问题,如果您希望在一个单独的文件中处理php逻辑,可以通过ajax来完成。
您可以做的是,将数据库中的url路径和id与一个可以执行
explode();
打开以获取值。所以,你的
<select>
会变成这样:现在来看ajax函数。就我个人而言,我使用jquery库,仅仅是因为它使事情变得简单和简单。它简化了很多代码,所以我将在我的ajax示例中使用jquery标准。如果您希望使用jqueryajax来实现相同的结果,那么您需要将jquery安装到一个库中,该库与任何其他普通js/css文件一样包含在其中。
这样做的目的是,函数将取
<select>
并使用post方法将数据解析到另一个文件。如果您愿意的话,您可以在success函数中做很多事情,但是出于我们的目的,我将在php文件中执行重定向。当数据被解析到另一个文件时,您将执行
explode();
将其拆分为两个变量,我们将在url中解析这两个变量。php文件可以如下所示:
最初如何调用ajax函数取决于您自己。例如,可以通过一个按钮。
希望这对你有所帮助,或者给你指明了正确的方向。
根据您的意见要求进行测试,
用于测试的ajax:
PHP:
llmtgqce2#
我联系了j2store的开发人员以获得帮助,帮助他们从活动的j2store产品页获取主映像值,并将我的最终api url嵌入到我的j2store产品页中,因此他重写了我的代码,以便与joomla和j2store进行无错集成,如下所示: