Vorrei iniziare a comprendere il funzionamento di Zend framework ma non riesco a farlo partire in nessun modo.
In locale ho istallato xampp che nella cartella PEAR (che da come ho capito è una raccolta di librerie) c'è Zend (C://xampp/php/PEAR/Zend).
Il miei problemi sono al momento due:
1) premesso che non voglio accedere fuori alla document root (spesso sugli hosting gratuiti non ho questa possibilità) come devo articolare i file e le cartelle?
2) come devo compilare il file index.php in coerenza con la disposizione file-cartelle?
Il mio obiettivo iniziale è molto semplice due pagine:
1) home page in cui compaiono i titoli degli ultimi 5 articoli inseriti
2) la pagina in cui è possibile leggere il singolo articolo in base all'id ricevuto come parametro
Riporto tabelle e query da eseguire:
codice:
CREATE TABLE `my_test`.`articoli` (
`id_articolo` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`titolo_art` VARCHAR( 20 ) NOT NULL ,
`testo_art` TEXT NOT NULL ,
`data_inserimento` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `id_articolo` )
) ENGINE = MYISAM ;
SELECT id_art, titolo_art, data_inserimento FROM articoli ORDER BY data_inserimento DESC LIMIT 5
SELECT id_art, titolo_art, data_inserimento, testo_art FROM articoli WHERE id_art='$id_art' LIMIT 1
il file di visualizzazione (view) della home page è molto banalmente:
Codice PHP:
<html>
<body>
<h1>Ultime 5 news</h1>
<?php
/*se ci sono articoli*/
if($this->articoli): ?>
<ul>
<?php
foreach($this->articoli as $articoli):
?>
[*]
<a href="<?php echo BASE_URL; ?>articoli/view/id/<?php echo $this->escape($articoli['id_art']); ?>/">
<?php echo $this->escape($articoli['titolo_art']); ?>
(<?php echo $this->escape($articoli['data_inserimento']); ?>)
</a>
<?php
endforeach;
?>[/list]
<?php
else:
?>
Nessun articolo presente</p>
<?php endif; ?>
</body>
</html>
Un file di analoga banalità ho fatto per la singola news...
Il file IndexController.php
Codice PHP:
<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$articoli = new Articoli();
$this->view->articoli = $articoli->ultimi_articoli();
}
}
?>
Il file Articoli.php:
Codice PHP:
<?php
Class Articoli
{
# ULTIME 5 NEWS
public function ultimi_articoli()
{
/*
prendiamo la connessione che nella index
abbiamo salvaro/registrato con
Zend_Registry::set('db', $connessione);
*/
$connessione = Zend_Registry::get('db');
$query = "
SELECT
id_art,
titolo_art,
data_inserimento
FROM articoli
ORDER BY data_inserimento DESC
LIMIT 5";
$righe = $connessione->fetchAll($query);
/*convertiamo il timestamp della news in data leggibile*/
foreach($righe as $rrr)
{
$righe['data_inserimento'] = date('j/m/Y', $righe['data_inserimento']);
}
/*la funzione ha come output l'array con con le ultime 5 news*/
return $righe;
}
# SINGOLA NEWS
public function singolo_articolo($id_articolo)
{
$connessione = Zend_Registry::get('db');
$query ="
SELECT
id_art,
titolo_art,
data_inserimento,
testo_art
FROM articoli
WHERE id_art='".intval($id_articolo)."'
LIMIT 1";
$righe = $connessione->fetchAll($query);
if(!empty($righe))
{
$righe['data_inserimento'] = date('j/m/Y', $righe['data_inserimento']);
}
return $righe;
}
}
?>
il file .htaccess
codice:
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
php_flag register_globals off
php_flag magic_quotes_gpc off