Ver Mensaje Individual
  #5 (permalink)  
Antiguo 21/06/2013, 08:00
mikehove
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Problema con clase en PDO

¿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');
	}
	
	
?>