2017-06-27 26 views
-1

一個HTML選擇元素下面的功能我從數據庫中獲取數據:填寫,使用PHP,JSON和MySQL

public function cargarPaises(){ 
    $modelo = new Conexion(); 
    $conexion = $modelo->get_conexion(); 
    $sql = "select idPais, nombre from paises"; 
    $statement = $conexion->prepare($sql); 
    $statement->execute();   
    return $statement; 
} 

然後在這個其他的文件我調用函數「cargarPaises」:

<?php 

    require_once('../Modelo/class.conexion.php'); 
    require_once('../Modelo/class.consultas.php'); 

    $consultas = new Consultas(); 
    $datos = $consultas->cargarPaises(); 

    if (count($datos) > 0) {   
     while ($result = $datos->fetch(PDO::FETCH_ASSOC)) { 
      //printf ("%s (%s)\n", $result["idPais"], $result["nombre"]);echo"<br>"; 
      //return $result; 
      //$nombre=$result['nombre']; 
      //$idPais=$result['idPais'];    
      //echo "<option value=".$idPais.">".$nombre."</option>\n"; 
      //echo json_encode($result,JSON_HEX_QUOT | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS);   
      echo json_encode($result); 
     }         
    }else{ 
     return "No hay opciones en la BD"; 
    } 

?> 

現在,當我嘗試使用代碼jQuery的文件:

$('#email').click(function(event) { 
     $.get('Controlador/cargarPaises.php', function(data) {  
      console.log(data); 
     }); 
    }); 

我得到了下面的控制檯(谷歌瀏覽器),所有的427條記錄從我的數據庫(我只有10出):

echo json_encode($result); i got in console 

{"idPais":"1","nombre":"Mexico"} 
{"idPais":"3","nombre":"Albania"} 
{"idPais":"4","nombre":"Alemania"} 
{"idPais":"5","nombre":"Andorra"} 
{"idPais":"6","nombre":"Angola"} 
{"idPais":"7","nombre":"Antigua y barbuda"} 
{"idPais":"8","nombre":"Antillas holandesas"} 
{"idPais":"10","nombre":"Argelia"} 

現在的問題是我怎麼能「玩」變量「數據」,以填補選擇HTML元素。

+1

在年底這樣的措辭是嚴重廣闊 - 你應該考慮rewordi所以我們知道你想要達到的目標。例如,你是否試圖將整個結果集轉換爲表?你是否想顯示idPais 7的nombre,你想顯示以「A」開頭的nombre的數量嗎? –

+0

我想填充我的HTML選擇元素與獲取數據變量的信息,顯示名稱和值是編號 – antonio291093

+1

編輯您的問題,明確表示請:) –

回答

0

首先,你的cargarPaises文件中有一個錯誤。您正在迴應每行對象的json編碼 - 您可能實際上想要將對象數組作爲單個json結果返回。你也會返回一個錯誤字符串,而不是一個會讓你知道的對象。最後,你得到的是PDO語句的計數,而不是rowCount。像這樣的東西會更好:

if ($datos->rowCount() > 0) {  
    echo json_encode($datos->fetchAll(PDO::FETCH_ASSOC)); 
} else { 
    echo json_encode(array()); 
} 

我可能還修改。獲得電一開始就明確說明了您要提取JSON,然後添加類似下面的建立選項:

$.get('Controlador/cargarPaises.php', function(data) {  
    $.each(data, function(idx, opt) { 
     $('#myselect').append('<option value="' + opt.idPais + '">' + opt.nombre + '</option>'); 
    }); 
}, 'json'); 
0
public function cargarPaises(){ 
    $modelo = new Conexion(); 
    $conexion = $modelo->get_conexion(); 
    $sql = "select idPais, nombre from paises where 1"; //changed 
    $statement = $conexion->prepare($sql); 
    return $statement->fetchAll(PDO::FETCH_ASSOC); //changed  
} 

第二個文件

require_once('../Modelo/class.conexion.php'); 
require_once('../Modelo/class.consultas.php'); 

$consultas = new Consultas(); 
$datos = $consultas->cargarPaises(); 
$results = (count($datos) > 0) ? $datos : array("error"=>"No hay opciones en la BD"); 

echo json_encode($results); 
+0

你爲什麼改變查詢? – antonio291093

+0

要返回表 –

+0

ok ty中的所有數據,現在爲什麼如果我改變這一行「return $ statement-> fetchAll(PDO :: FETCH_ASSOC);」在字fetchAll只爲「fetch」,然後在PHP文件中的echo json_encode我在屏幕上收到我的數據庫的第一個註冊,但如果我確實離開「fetchAll」時,我檢查屏幕上的所有寄存器, t什麼都不顯示? – antonio291093