如何使用数据库数据完成下拉列表?

时间:2015-05-27 01:48:23

标签: php database slim

我正在构建基于Slim Framework的应用程序,我已经有了一些工作代码。要返回带有项目列表的JSON响应,我写了以下内容:

控制器类controllerProyectos.php

<?php
require "transferController/transferProyectos.php";
class NombreProyecto {
    public function getProyectos() {
        $list = array();
        foreach ($this->fillObject() as $sKey => $oValue) {
            $list[] = array(
                'id' => $oValue->getId(),
                'nombre_proyecto' => $oValue->getNombre(),
                'state' => $oValue->getState(),
            );
        }
        return $list;
    }
    private function fillObject() {
        $aObjects = array();
        for ($i = 0; $i < 5; $i++) {
            $oTransfer = new TransferProyeCtr();
            $oTransfer->setId($i);
            $oTransfer->setNombre("proyecto " . $i);
            $oTransfer->setState(1);
            $aObjects[] = $oTransfer;
        }
        return $aObjects;
    }
}

前置控制器index.php

<?php
require "vendor/autoload.php";
$sPathApi = "/api/sistemaTareas/";
$app = new \Slim\Slim();

$app->get($sPathApi . $sVersion . 'proyectos', function () { 
    require "controller/controllerProyectos.php";
    $oProyecto = new NombreProyecto();
    header('Content-Type: application/json');
    echo json_encode($oProyecto->getProyectos());
    exit();
});

模型类transferProyectos.php

<?php
class TransferProyeCtr {
    private $sNombre;
    private $iId;
    private $iState;

    public function getNombre() {
        return $this->sNombre;
    }
    public function setNombre($nombre) {
        $this->sNombre = $nombre;
    }
    public function getId() {
        return $this->iId;
    }
    public function setId($Id) {
        $this->iId = $Id;
    }
    public function getState() {
        return $this->iState;
    }
    public function setState($state) {
        $this->iState = $state;
    }
}

正如您所看到的,我在控制器中使用了一些模型数据。当我对我的应用程序发出AJAX请求时,我在下拉列表中得到以下结果:

- proyecto 1
- proyecto 2
- proyecto 3
- proyecto 4
- proyecto 5

到目前为止,一切都按预期工作。但我想从该控制器中的数据库返回实际数据。

我写了一个函数(在bdconnection.php文件内)来打开数据库连接:

<?php
function connect_db() {
    $server = 'localhost'; 
    $user = 'root';
    $pass = '123asd';
    $database = 'bd_actividades';
    $connection = new mysqli($server, $user, $pass, $database);
    return $connection;
}

我认为在我的控制器中我需要类似的东西:

public  function getPro() {
    require "sistema/bdconnection.php";
    $sql = "select pro_nombre FROM act_proyecto";
    try {
        $db = connect_db();
        $stmt = $db->query($sql);
        $users = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($users);
    } catch(PDOException $e) {
        echo json_encode($e->getMessage());
    }
}

并将$oTransfer->setNombre("proyecto " . $i);替换为$oTransfer->setNombre($users);,但我不确定。

只是为了向大家介绍一下我的应用程序的更多细节,这里将介绍文件结构和数据库数据:

Files structure and database data

0 个答案:

没有答案