2014-02-20 72 views
0

我想从选择框中发布值,通过PHP运行它们并将它们分配给一个Smarty对象。

我的HTML标记如下:

<form action="http://www.domain.com/index.php?page=presse" method="post"> 
<p><label for="startDate" class="search-label">Jahr:</label> 
<select name="datepicker"> 
    <option value="2014">2014</option> 
    <option value="2013">2013</option> 
    <option value="2012">2012</option> 
</select></p> 
<select name="issue"> 
    <option value="Abisolierzange">Abisolierzange</option> 
    <option value="International">International</option> 
    <option value="Kabelmesser">Kabelmesser</option> 
</select></p> 
<input type="submit" name="submit_presse_filter" class="blockHeadline" value="Suchen"> 
</form> 

我收到的表单数据是这样的:

if(isset($_POST['submit_presse_filter'])) { 
    $date = $_REQUEST['datepicker']; 
    $issue = $_REQUEST['issue'];  
    $search_results["issue"]["datum"] = $date; 
    $search_results["issue"]["ueberschrift"] = $issue; 
} 

而且finaly在我的模板我拿出这样的数据:

{search_result.date} 
{search_result.ueberschrift} 

但我只会得到值的第一个字母,如

2 

日期和

A 

对这一问题的第一个值。

这是为什么?

编辑:

这个错误是智者的foreach子句中。

在PHP中我建立一个计数器是这样的:

{if $search_results.issue} 
    <p><strong>Presse</strong></p> 
    <ul> 
    {foreach item=search_result from=$search_results.issue} 
    <li> 
     <h2>{$search_result.datum}</h2> 
    </li> 
    {/foreach} 
    </ul> 
{/if} 
+0

试试这个 - '$ date = $ _POST ['datepicker']; $ issue = $ _POST ['issue'];' –

+0

这通常发生在您访问字符串位置而不是数组索引时 – verbumSapienti

+0

将调试输出添加到'if(isset($ _ POST ...'你的代码看看'$ date'和'$ issue'是否包含你想要的值(他们应该从我在这里看到的)。然后你知道你的问题是用HTML-POST-PHP部分还是只用PHP内部编码 – SebastianH

回答

1

您在这里定义一个二维数组:

$query = "SELECT * FROM table"; 

$result = mysql_query($query) OR die(mysql_error()); 
$number = mysql_num_rows($result); 

$search_results = array(); 

if($number > 0) { 
$i=0; 
    while($row = mysql_fetch_array($result)) { 
     $search_results["issue"][$i]["datum"] = $row['datum']; 
     $search_results["issue"][$i]["ueberschrift"] = $row['ueberschrift']; 
     $search_results["issue"][$i]["inhalt"] = $row['inhalt1']; 
     $search_results["issue"][$i++]["ort"] = $row['ort']; 

    } 
} 
$smarty->assign('search_results', $search_results); 

现在我可以在我的模板做$search_results["issue"]["datum"] = $date; 也许你希望这是$search_results["datum"] = $date;。然后{search_result.date}应该工作。否则,也许{search_result.issue.date}帮助。

+0

因为我用。{foreach item = search_result from = $ search_results.issue}开始我的模板部分,它是正确的。我也得到一个输出,但只是价值的第一个字符。 –

+0

@PascalCloverfield请张贴您的部分代码。以及我上面评论的调试输出。 – SebastianH

+0

你指给我正确的地方。我更新了我的问题。谢谢! –

相关问题