【问题标题】:Why show me the first option in my dropdown?为什么在我的下拉菜单中显示第一个选项?
【发布时间】:2015-08-10 08:24:54
【问题描述】:

我不知道是什么问题。

我的 php 中有这一部分:

public function fillObject(){

try {

    $servername = "localhost";
    $username = "root";
    $password = "123asd";
     $conn = new PDO("mysql:host=$servername;dbname=bd_actividades", $username, $password);
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $stmt = $conn->prepare("SELECT pro_nombre FROM act_proyecto");
     $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $result = $stmt->fetchAll();


    foreach ($result as $row) {
    $aObjects=array();
    $oTransfer = new TransferProyeCtr();

    $oTransfer->setNombre($row['pro_nombre']);

    $oTransfer->setState(1);
    $aObjects[]=$oTransfer;
    return $aObjects;
} }catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
} }

这个发送结果:$oTransfer->setNombre($row['pro_nombre']);

在我的下拉列表中显示:

但我需要这个:

有什么问题? 这是我打印的模块:

阿贾克斯:

llenarComboProyectos: function(iSecciones){

    var self = this;

    self.ajaxCall('http://localhost:8080/PROJECTS/dailytasks/api/sistemaTareas/v1/'+"proyectos","GET", null).then(function(data) {
        console.info("data",data);
        if(self.checkError(data[0].state)){
            self.llenarCombos(iSecciones,data);
        }else{
            alert("error service");
        }
    });
},

我在哪里打印:

llenarCombos: function(secciones,data){

        var self = this;    
        console.info(data);
        for (var i = 0; i < data.length; i++){
            var cProyectos = "<option>"+data[i].nombre_proyecto+"</option>"; 
            for(var iCont=0;secciones>=iCont; iCont++){
                $("#select_proyecto_"+iCont+"_id").append(cProyectos);
                $("#select_proyecto_"+iCont+"_id").selectpicker('refresh');  
            }   
        }
},  

在这里我得到 pro_nombre:var cProyectos = "&lt;option&gt;"+data[i].nombre_proyecto+"&lt;/option&gt;";

【问题讨论】:

  • 您需要显示打印出select 选项的代码。 (我假设是这个函数:$oTransfer-&gt;setNombre()
  • 在 foreach 循环之前转储您的 $results,确保数据库已返回所有您需要的记录 echo "
    " 。 print_r($result, true) 。 "
    ";
  • 是的@Darren 对不起,我编辑。
  • @JeanAndrésBergeretFuhrhop 您需要出示来自-&gt;setNombre() 的代码,它很可能来自那里。
  • 这是因为您在foreach 中返回数据,所以它只获取第一个值。将return$aObjects[]=$oTransfer; 移出循环。

标签: php sql database select pdo


【解决方案1】:

请删除

$stmt->setFetchMode(PDO::FETCH_ASSOC); 

从你的第一个脚本。 我想这会解决你的问题。

  1. http://php.net/manual/en/pdostatement.fetch.php

  2. http://php.net/manual/en/pdostatement.fetchall.php

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2021-07-06
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多