从Joomla中的MySQL数据库填充PHP下拉列表
我是一个非常不熟练的php程序员,我做过一些asp.net编程,但从未做过php 我需要添加一个dropdownlist,其中包含mysql数据库表中的值。我手动创建了一个培训表: 身份证件 训练 日期 小时 开放式座位 我需要在dropdownlist中显示这个日期和小时,所以一旦用户clikc提交了它,它就会被存储到一个名为 jos_jquarks_用户_确认 你能帮我把这个下拉式菜单弄清楚吗 代码:从Joomla中的MySQL数据库填充PHP下拉列表,php,joomla,Php,Joomla,我是一个非常不熟练的php程序员,我做过一些asp.net编程,但从未做过php 我需要添加一个dropdownlist,其中包含mysql数据库表中的值。我手动创建了一个培训表: 身份证件 训练 日期 小时 开放式座位 我需要在dropdownlist中显示这个日期和小时,所以一旦用户clikc提交了它,它就会被存储到一个名为 jos_jquarks_用户_确认 你能帮我把这个下拉式菜单弄清楚吗 代码: 很难知道从哪里开始尝试回答。 上面的代码中有多少是实际的,有多少是为了演示而提出的问题?
很难知道从哪里开始尝试回答。 上面的代码中有多少是实际的,有多少是为了演示而提出的问题? 我假设您不会在每次加载页面时将数据插入数据库。 我假设您不会将数据库表名硬编码为'jos_2;'prefix。当你真的这么做的时候,你应该使用不带引号的“_u” 返回错误的数据库查询是否需要终止脚本并引发服务器500错误?我认为检测和截获错误并优雅地处理会更好 在你的标签之后,你有一个单词date,然后一个-ie,你关闭了一个你从未打开过的选项标签。我假设您打算以某种方式标记select-best,以便使用实际的标记来完成此操作,而不是在select中填充虚拟选项 如果不将数组键用引号括起来,则可能会生成警告,所以请这样做 $nt['training']而不是$nt[training] 您可能需要作为关联数组而不是标准序数数组进行检索 然后在Joomla的“外部”运行数据库查询。您已经检索到数据库对象-应该使用它,而不是直接运行mysql\u查询 与此相反:
$queryCourses="SELECT training_id,training,trainingDate FROM training"; ?>
$result = mysql_query ($queryCourses);
你可能需要做更多类似的事情
//
在这条线上
echo "<option value=$nt['id']>$nt['training']</option>";
您可能应该这样做:
echo "<option value=\"{$nt['id']}\">{$nt['training']}</option>";
当整行都用引号括起来时,用大括号清楚地描述变量,记住在value参数周围加引号,以防您决定在其中添加其他变量并包含空格等
从您的描述中,您希望向用户显示日期-您可能希望添加一个额外的变量-可能在。。。部分,可能类似于:
echo "<option value=\"{$nt['id']}\">{$nt['training']} {$nt['trainingDate']}</option>";
我确信我还遗漏了其他一些东西——我假设您的db查询基本正确并返回结果,但是应该有足够的指针让您走上正确的轨道
最后—在构建/填充选择列表时,您可以构建数据结构,并让Joomla的jHTML类为您完成繁重的工作。有时我想知道,太多的抽象是否会比自己的滚动产生更多的工作-但是,嘿,选项就在那里。组件控制器/任务功能:
public function ShowData() {
$course_id = JRequest::getVar('id');
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__tablename');
$query->where('courseid =\'' . $course_id.'\'');
$db->setQuery((string)$query);
$data=$db->loadObjectList();
$option = '<option value="0">choose...</option>';
foreach ( $data as $row) {
$option .= '<option value="' . $row->candidateid . '">' . $row->firstname .' '. $row->lastname. '</option>';
}
echo json_encode(array('options' =>$option));
jexit();
}
阿贾克斯:
从某个组合选项中搜索选定值并在某个其他组合框中列出
$("select#searchcombo").change(function(){
$("select#listingcombo").html("<option>wait...</option>");
var id = $("select#searchcombo option:selected").attr('value');
var url='index.php?option=com_example&task=methodName&format=json';
var dat = {'id':id};
$.ajax({
type: "POST",
cache: false,
url: url,
data: dat,
dataType: "json",
success: function(data) {
//alert(data['options']);
$("select#listingcombo").html(data['options']);
}, error:function(xhr, status, data) {
//alert("Status "+status + xhr.responseText );
}
});
});
关于如何通过PHP/MySQL填充下拉列表,这个站点上有很多问题/答案。这里有一个:
public function ShowData() {
$course_id = JRequest::getVar('id');
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__tablename');
$query->where('courseid =\'' . $course_id.'\'');
$db->setQuery((string)$query);
$data=$db->loadObjectList();
$option = '<option value="0">choose...</option>';
foreach ( $data as $row) {
$option .= '<option value="' . $row->candidateid . '">' . $row->firstname .' '. $row->lastname. '</option>';
}
echo json_encode(array('options' =>$option));
jexit();
}
$("select#searchcombo").change(function(){
$("select#listingcombo").html("<option>wait...</option>");
var id = $("select#searchcombo option:selected").attr('value');
var url='index.php?option=com_example&task=methodName&format=json';
var dat = {'id':id};
$.ajax({
type: "POST",
cache: false,
url: url,
data: dat,
dataType: "json",
success: function(data) {
//alert(data['options']);
$("select#listingcombo").html(data['options']);
}, error:function(xhr, status, data) {
//alert("Status "+status + xhr.responseText );
}
});
});