这是我的问题。我现在试图从joomla数据库获取所有结果并显示为复选框。然后,如果我的PHP代码没有得到数据库的结果,它应该提示错误消息并隐藏joomla中的特定DIV。但我的代码不起作用,它不会隐藏我想要的DIV元素。
这是我的代码:
<html>
<head>
</head>
<?php
$q = $_GET['q'];
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define( 'JPATH_BASE', $_SERVER[ 'DOCUMENT_ROOT' ] );
require_once( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
require_once( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
require_once( JPATH_BASE . DS . 'libraries' . DS . 'joomla' . DS . 'factory.php' );
$mainframe =& JFactory::getApplication('site');
$db = JFactory::getDBO();
$sql="SELECT courseid FROM course WHERE campusid = '$q'";
// Set the query for the DB oject to execute
$db->setQuery($sql);// Get the DB object to load the results as a list of objects
$results = $db->loadObjectList();
if($results){
foreach($results as $result)
{
echo "<label class='option block'>";
echo "<input type='checkbox' id ='courseID' name='courseID' value='$result->courseid' onChange='showBox2(this.value)'><span class='checkbox'></span>";
echo $result->courseid;
echo '</label>';
echo '<br/>';
}
}
else{ echo 'Error. No data found in '.$q;
echo '<script type="text/javascript">';
echo 'function myFunction(){ document.getElementById('hideBox2').style.display =none; };';
echo '</script>';}
?>
<body>
</body>
</html>
我想隐藏的DiV元素:
<div id="hideBox2" style="display:none;">
<div class="spacer-t40 spacer-b30">
<div class="tagline"><span> Date Open For Registration & Course Start Date </span></div><!-- .tagline -->
</div>
<div class="frm-row">
<div class="section colm colm6">
<label class="field prepend-icon">
<input type="text" id="from" name="from" class="gui-input">
<label class="link-icon jsn-icon-calendar"></i></label>
</label>
</div><!-- end section -->
<div class="section colm colm6">
<label class="field prepend-icon">
<input type="text" id="to" name="to" class="gui-input">
<label class="field-icon"><i class="fa fa-calendar"></i></label>
</label>
</div><!-- end section -->
</div><!-- end .frm-row section -->
</div>
另外,这是一个php文件。
答案 0 :(得分:0)
你应该转义javascript部分中的引号字符:
echo 'function myFunction(){ document.getElementById(\'hideBox2\').style.display = \'none\'; };';
或者,甚至可能更好,直接输出javascript:
?> function myFunction(){ document.getElementById('hideBox2').style.display = 'none'; }; <?php
不要忘记将“无”值放入引号中。
但是你的代码看起来很混乱。我找不到你想要隐藏的div输出的位置。您甚至在打开正文之前输出列表。此外,您可以在输出之前检查数据库结果计数,并“决定”是否需要保留div。