我想从选择框中发布值,通过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;
}
最后在我的模板中我发布了这样的数据:
{search_result.date}
{search_result.ueberschrift}
但我只会得到值的第一个字母,比如
2
代表日期和
A
表示问题的第一个值。
为什么?
修改
这个错误属于聪明的foreach条款。
在php中我构建一个这样的计数器:
$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);
现在我可以在我的模板中执行此操作:
{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 :(得分:1)
您在这里定义了一个二维数组:$search_results["issue"]["datum"] = $date;
也许你想要那个$search_results["datum"] = $date;
。然后{search_result.date}
应该有效。否则可能{search_result.issue.date}
有帮助。