Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla MVC组件-使用文件上载更新数据库记录_Php_File Upload_Joomla_Joomla Component - Fatal编程技术网

Php Joomla MVC组件-使用文件上载更新数据库记录

Php Joomla MVC组件-使用文件上载更新数据库记录,php,file-upload,joomla,joomla-component,Php,File Upload,Joomla,Joomla Component,所以我觉得这有点奇怪,因为DB字段在我开始使用文件上传功能之前一直在更新,我没有花太多精力。现在数据库似乎没有更新,但文件上传工作正常。一切似乎都在插入、更新等。只需在管理表单的XML文件中指定适当的名称即可: <?xml version="1.0" encoding="utf-8"?> <form> <fieldset> <field name="course_id" type="

所以我觉得这有点奇怪,因为DB字段在我开始使用文件上传功能之前一直在更新,我没有花太多精力。现在数据库似乎没有更新,但文件上传工作正常。一切似乎都在插入、更新等。只需在管理表单的XML文件中指定适当的名称即可:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset>
        <field
            name="course_id"
            type="hidden" />
        <field
            name="course_name"
            type="text"
            label="Course Name: "
            description="Full name of the course (up to 255 characters)"
            default="" />
        <field
            name="course_dept"
            type="text"
            label="Course Department: "
            description="4 character department code. Examples: BIOL, CREL, CHEM"
            default="" />
        <field
            name="course_code"
            type="text"
            label="Course Code: "
            description="4 digit course code which immediately preceeds department code"
            default="" />
        <field
            name="course_desc"
            type="textarea"
            label="Course Description: "
            rows="10"
            description="As seen in the academic calendar"
            default="" />
        <field
            name="course_graphic_url"
            type="file"
            label="Course Graphic: "
            description="Graphical representation of the course"
            accept="image/*" />
    </fieldset>
</form>

根据我所读到的,我必须编写数据库更新逻辑。奇怪的是,它以前似乎在工作。现在我是Joomla MVC组件开发的新手,所以我可能复制/粘贴了几行代码,如果没有我的实现,这些代码本可以完成。。但我对此表示怀疑。这是我尝试过的,但我似乎在某个方面有所欠缺。这是/admin/controllers/course.php:

<?php defined('_JEXEC') or die;

jimport('joomla.application.component.controllerform');

class CourseListControllerCourse extends JControllerForm {
protected $view_list = 'CourseList';

function save($key = null, $urlVar = null){
    // ---------------------------- Uploading the file ---------------------
    // Neccesary libraries and variables
    jimport( 'joomla.filesystem.folder' );
    jimport('joomla.filesystem.file');

    $jinput = JFactory::getApplication()->input;
    $files = $jinput->files->get('jform');
    $filename = $files['course_graphic_url']['name'];
    $folder = JPATH_SITE . "/" . "images" . "/" . "courselist";

    // Create the folder if not exists in images folder
    if ( !JFolder::exists( $folder ) ) {
        JFolder::create( $folder, 0777 );
    }

    $src = $files['course_graphic_url']['tmp_name'];
    $dest = JPATH_SITE . "/" . "images" . "/" . "courselist" . "/" . $filename;

    if (isset($files['course_graphic_url'])) {
        JFile::upload( $src, $dest );
    }

    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $cid =  $jinput->get('course_id');

    $fields = array($db->quoteName('course_graphic_url') . " = " . $db->quote($dest));
    $conditions = array($db->quoteName('course_id') . " = " . $cid);

    $query
        ->update($db->quoteName('#__courselist'))->set($fields)->where($conditions);

    $db->execute($query);

    return parent::save($key = null, $urlVar = null);
   }
}

首先,非常感谢你们在Joomla的GDP!堆栈交换为我指引了正确的方向。我不得不说这个问题相当愚蠢。正如您在我的代码中所注意到的,我得到了一个查询对象:

$query = $db->getQuery(true);
我构建查询:

$fields = array($db->quoteName('course_graphic_url') . " = " . $db->quote($dest));
$conditions = array($db->quoteName('course_id') . " = " . $cid);

$query
    ->update($db->quoteName('#__courselist'))->set($fields)->where($conditions);
一、 但是,不要设置查询对象!!!!这是新添加的代码。真是个傻瓜

$db->setQuery($query);
$db->execute($query);

试着在上问你的问题;)好的,我会的!谢谢:)在将来,你可以使用(免费)来构建这样的东西,并节省像这样的头的时间。很高兴你发现了这个问题:-)谢谢。我想我看到过类似的情况,但作为一名新的后端开发人员,我认为最好是手工编写代码,以便更好地理解所有这些工作原理。在将来,我可以考虑这样的选择来节省自己的时间。干杯