¿Qué estaré haciendo incorrecto?
Pues cuando recorre el juego de resultados está bien, aparece esto como el original (como se muestra al principio del post con arrays):
Código:
array(7) {
["/"]=> array(2) {
["arrayUrl_content"]=> string(27) "content/tabOne/contentA.php"
["arrayUrl_column"]=> string(26) "columns/tabOne/columnA.php"
}
["/contentAtabOne"]=> array(2) {
["arrayUrl_content"]=> string(27) "content/tabOne/contentA.php"
["arrayUrl_column"]=> string(26) "columns/tabOne/columnA.php"
}
["/contentBtabOne"]=> array(2) {
["arrayUrl_content"]=> string(27) "content/tabOne/contentB.php"
["arrayUrl_column"]=> string(26) "columns/tabOne/columnA.php"
}
["/index"]=> array(2) {
["arrayUrl_content"]=> string(27) "content/tabOne/contentA.php"
["arrayUrl_column"]=> string(26) "columns/tabOne/columnA.php"
}
["/tabFour"]=> array(1) {
["arrayUrl_content"]=> string(19) "content/tabFour.php"
}
["/tabThree"]=> array(1) {
["arrayUrl_content"]=> string(20) "content/tabThree.php"
}
["/tabTwo"]=> array(1) {
["arrayUrl_content"]=> string(18) "content/tabTwo.php"
}
}
En definitiva queda así 'Helper.php':
Código:
<?php
class Helper {
//Propiedades
private $host = 'localhost';
private $user = 'root';
private $pass = '';
private $dbname = 'pruebaarray';
private $dbh;
private $error;
private $router;
public function __construct(){
// Set DSN
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
// Set options
$options = array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// Create a new PDO instanace
try{
$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
$this->setRouter();
}
// Catch any errors
catch(PDOException $e){
$this->error = $e->getMessage();
}
}
public function setRouter() {//Le cargo a 'router' los valores de inicialización
$array = array();
$stmt = $this->dbh->prepare('SELECT * FROM arrayurl');
$stmt->execute();
// Luego recorres el juego de resultados:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$array[$row['arrayUrl_name']] = array(
'arrayUrl_content' => $row['arrayUrl_content']
);
// Asignas la columna sólo si es necesaria
if($row['arrayUrl_column'] != '') {
$array[$row['arrayUrl_name']]['arrayUrl_column'] = $row['arrayUrl_column'];
}
}
/*
// Finalmente compruebas si el array se creó correctamente
var_dump($array);
// Si todo va bien, eliminas estas últimas líneas
*/
}
public function getColumn() {
$stmt = $this->dbh->prepare('SELECT * FROM arrayurl ORDER BY arrayUrl_column');//Preparo la consulta
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_COLUMN,2);//Obtener la 3nda columna de la tabla
}
public function getContent() {
$stmt = $this->dbh->prepare('SELECT * FROM arrayurl ORDER BY arrayUrl_content');
$stmt->execute() ;
return $stmt->fetchAll(PDO::FETCH_COLUMN,3);//Obtener la 4nda columna de la tabla (Esto se cuenta desde base 0)
}
}
//Instanceo Helper
$db = new Helper();
//Consultas:
/*
$resultsColumn = $db->getColumn();//Selecciono la 2nda columna
print_r($resultsColumn);//Imprimo 2nda columna
$resultsContent = $db->getContent();//Selecciono la 3nda columna
print_r($resultsContent);//Imprimo 3nda columna
*/
?>
Me salta error en index.php:
Código:
<?php
defined("DS")
|| define("DS", DIRECTORY_SEPARATOR);
defined("ROOT_PATH")
|| define("ROOT_PATH", realpath(dirname(__FILE__)));
require_once(ROOT_PATH.DS.'classes'.DS.'Helper.php');
$page = '/';
$uri = $_SERVER['REQUEST_URI'];
if (!empty($uri) && $uri != '/') {
$uri = explode('?', $uri);
$page = $uri[0];
}
$content = array(
'right' => $db->getColumn($page),
'left' => $db->getContent($page)
);
if (!empty($_GET['ajax'])) {
echo json_encode($content);
} else {
require_once('template/template.php');
}
?>
Y el index original con arrays es así:
Código:
<?php
defined("DS")
|| define("DS", DIRECTORY_SEPARATOR);
defined("ROOT_PATH")
|| define("ROOT_PATH", realpath(dirname(__FILE__)));
require_once(ROOT_PATH.DS.'classes'.DS.'Helper.php');
$page = '/';
$uri = $_SERVER['REQUEST_URI'];
if (!empty($uri) && $uri != '/') {
$uri = explode('?', $uri);
$page = $uri[0];
}
$content = array(
'right' => Helper::getContent($page),
'left' => Helper::getColumn($page)
);
if (!empty($_GET['ajax'])) {
echo json_encode($content);
} else {
require_once('template/template.php');
}
?>