将货币图标块更改为下拉列表

时间:2012-01-30 20:52:14

标签: php

我的客户希望将货币下拉列表添加到1.5.1 OpenCart主题上安装的货币图标块。我试过编码但是得到以下错误:  解析错误:语法错误,意外T_STRING,期待';'在/...file路径...... 我已粘贴代码并在违规行 之前和之后使用

<?php 
$a = 0; 
foreach ($currencies as $currency) {
    $thisCurTitle[$a] = $currency['title'];  
    $thisCurCode[$a] = $currency['code']; 

   if ($currency['symbol_left']) { 
      $thisCurSymb[$a] = $currency['symbol_left'];
   } else { 
      $thisCurSymb[$a] = $currency['symbol_right'];
   } 
   $a++;
} 
?>
<select name=”curselect” onchange=”$(‘input[name=\'currency_code\']‘).attr(‘value’, this.options[this.selectedIndex].value).submit(); $(this).parent().parent().submit();”>
***<?php for ($z = 0; $z <= $a – 1; $z++) { ?>***
<?php if ($thisCurCode[$z] == $currency_code) { ?>
<option value=”<?php echo $thisCurCode[$z]; ?>” selected><?php echo $thisCurTitle[$z]; ?>&nbsp;&nbsp;<?php echo $thisCurSymb[$z]; ?></option>
<?php } else { ?>
<option value=”<?php echo $thisCurCode[$z]; ?>”><?php echo $thisCurTitle[$z]; ?>&nbsp;&nbsp;<?php echo $thisCurSymb[$z]; ?></option>
<?php } ?>
<?php } ?> 

任何帮助都将非常感激。

4 个答案:

答案 0 :(得分:1)

$a – 1包含类似m-dash或其他任何内容的内容。不是-减号。这很可能是因为您复制粘贴的代码已经通过自动格式化程序,如某些邮件程序或文字处理程序。

答案 1 :(得分:1)

工作2小时后,这是我的解决方案

<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" name="formcur" id="formcur">
<div id="currency"> 
<?php echo $text_currency; ?>
<?php 
$a = 0; 
foreach ($currencies as $currency) { 
    $thisCurTitle[$a] = $currency['title']; 
    $thisCurCode[$a] = $currency['code']; 
    if ($currency['symbol_left']) { 
        $thisCurSymb[$a] = $currency['symbol_left']; 
    } else { 
        $thisCurSymb[$a] = $currency['symbol_right']; 
    } 
    $a++; 
} 
?>
<select name="curselect" id="curselect" onchange="$('input[name=\'currency_code\']').attr('value', document.getElementById('curselect').value); document.forms['formcur'].submit();">
<?php 
for ($z = 0; $z <= $a - 1; $z++) { 
    if ($thisCurCode[$z] == $currency_code) { ?>
<option value="<?php echo $thisCurCode[$z]; ?>" selected><?php echo $thisCurTitle[$z]; ?> <?php echo $thisCurSymb[$z]; ?></option>
<?php 
} else { 
?>
<option value="<?php echo $thisCurCode[$z]; ?>"><?php echo $thisCurTitle[$z]; ?> <?php echo $thisCurSymb[$z]; ?></option>
<?php } ?>
<?php } ?>
</select>
<input type="hidden" name="currency_code" value="" />
<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
</div>
</form>

答案 2 :(得分:0)

我认为您的问题是if块中返回的值是字符串吗?

if ($currency['symbol_left']) { 

答案 3 :(得分:0)

必须清理你的代码才能理解它。你有一堆奇怪的'chars坚持到'和'尽可能多地保持在PHP内部....这还不是答案....我建议你上传这个并向我们确认exaclty哪一行是在错,我怀疑它在第一个回声

<?php 

$a = 0; 

foreach ($currencies as $currency) 
{
    $thisCurTitle[$a] = $currency['title']; 

    $thisCurCode[$a] = $currency['code']; 

    if ($currency['symbol_left']) 
    { 
        $thisCurSymb[$a] = $currency['symbol_left'];
    } 
    else 
    { 
        $thisCurSymb[$a] = $currency['symbol_right'];
    } 

    $a++;
} 


echo "<select name='curselect' onchange='$('input[name=\'currency_code\']').attr('value’,     this.options[this.selectedIndex].value).submit(); $(this).parent().parent().submit();'>";

for ($z = 0; $z <= $a – 1; $z++) 
{
    if ($thisCurCode[$z] == $currency_code) 
    {
        echo "<option value='".$thisCurCode[$z]."'     selected>".$thisCurTitle[$z]."&nbsp;&nbsp;".$thisCurSymb[$z]."</option>";
    }
    else
    {
        echo "<option value='".$thisCurCode[$z]."'>".$thisCurTitle[$z]."&nbsp;&    nbsp;".$thisCurSymb[$z]."</option>";
    }
    }

    ?>
发现问题.....

您已在for()语句中放置了一个计算...

$a =10;             // this is to mimic your counter

$a=$a-1;            // do you subtract here


//for ($z = 0; $z <= $a – 1; $z++) // this is the issue.
//for ($z = 0; $z <= ($a – 1); $z++) // doesn't work either.
for($z=0; $z <= $a; $z++)
{
    echo $z." hello</br />";
}

http://php.net/manual/en/control-structures.for.php

无法看到为什么你不能按照你尝试的方式做到这一点的原因,我的PHP错误以同样的方式,甚至将减法封装在()...修复了问题但仍困扰着我。很少使用()......

我希望能解决你的麻烦!