E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Zend Framework (5)

Implementarea unui modul de stiri in Zend Framework. Partea a III-a - Afisarea si modificarea stirilor

22.06.2010
Implementarea unui modul de stiri in Zend Framework. Partea a III-a - Afisarea si modificarea stirilor

In primele doua tutoriale din aceasta serie am invatat despre structura unei aplicatii Zend Framework, controllere, modele, view-uri si despre cum sa adaugi / stergi o stire din baza de date. In aceasta ultima parte vei putea citi despre citirea si modificarea stirilor.

Total vizualizari: 5039 5039 afisari   |   Comentarii  2   |   Rating   |   (3 voturi)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Avansat  Avansat

Autor: alexandra Expert
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1
comenteaza printeaza

In primele doua tutoriale din aceasta serie am invatat despre structura unei aplicatii Zend Framework, controllere, modele, view-uri si despre cum sa adaugi / stergi o stire din baza de date. In aceasta ultima parte vei putea citi despre citirea si modificarea stirilor.

Vizualizarea stirilor

Pentru afisarea stirilor vom crea un tabel html asemanator celui de mai jos:

Implementarea unui modul de stiri in Zend Framework. Partea a III-a - Afisarea si modificarea stirilor

Actiunea view are urmatorul continut:

<?php public function viewAction() {
        
    // afiseaza tabelul de stiri cu zend view
    $viewObject = new Zend_View();
    $viewObject->setScriptPath(APPLICATION_PATH.'views/');
    
    // citeste stirile din baza de date
    $NewsModel = new NewsModel();        
    $NewsRows = $NewsModel->fetchAll();
    
    $viewObject->NewsArray = $NewsRows;        
    echo $viewObject->render("view.phtml");
 
}//end of viewAction() method
?>

Dupa cum poti observa, scopul acestei actiuni este citirea tuturor stirilor din tabel cu ajutorul functiei fetchAll() a modelului News. Apoi, un vector ce contine toate inregistrarile ($NewsRows) este setat ca proprietate a obiectului de tip view. In interiorul view-ului, pentru fiecare stire sunt afisate titlul, data si doua linkuri, unul catre pagina de modificare si unul catre pagina de stergere:

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Modul de stiri in ZF</title>
<link type="text/css" rel="stylesheet" href="<?php echo DIR_LOCALPATH;?>styles/style.css" />
</head>
 
<body>
<div align="left" style="padding:50px;">
 
<ul style="padding:0px;margin:0px;">
    <li><a href="<?php echo DIR_LOCALPATH?>">Inapoi la prima pagina</a></li>
</ul>
 
<h1>Vizualizare / editare stiri</h1>
 
    <?php if (count($this->NewsArray) > 0): ?>
    
        <table width="100%" border="0" cellpadding="2" cellspacing="2">
            <tr>
                <td width="200" align="left" class="table_header">Titlu</td>
                <td width="120" align="left" class="table_header">Data</td>
                <td align="left" class="table_header">Actiuni</td>
            </tr>
            <?php foreach ($this->NewsArray as $NewsRow): ?>
            <tr>
                <td width="200" align="left" class="table_rows"><?php echo stripslashes($NewsRow->Titlu)?></td>
                <td width="120" align="left" class="table_rows"><?php echo $NewsRow->Data?></td>
                <td align="left" class="table_rows"> <a href="<?php echo DIR_LOCALPATH?>index/modify/id/<?php echo $NewsRow->Id?>">Editare</a> | <a href="<?php echo DIR_LOCALPATH?>index/delete/id/<?php echo $NewsRow->Id?>">Stergere</a></td>
            </tr>
            <?php endforeach; ?>
        </table>
    
    <?php else: ?>
    
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td>Nu exista inregistrari in baza de date.</td>
            </tr>
        </table>
 
    <?php endif; ?>
    
</div>
</body>
</html>

Modificarea unei stiri

La fel ca stergerea, modificarea necesita ca parametru id-ul stirii pe care vrem sa o editam: $this->_request->getParam('id'). Utilizand modelul News, citim inregistrarea corespunzatoare din tabelul MySQL cu ajutorul functiei fetchRow("conditie where"), apoi transmitem id-ul, titlu, data, etc. stirii respective ca proprietati ale view-ului:

<?php  public function modifyAction() {
        
    // verifica daca id-ul stirii a fost transmis ca parametru
    if(is_numeric($this->_request->getParam('id')) && $this->_request->getParam('id') != 0) {
        
        // citeste din baza de data stirea cu id-ul corespunzator
        $NewsModel = new NewsModel();
        $NewsRow = $NewsModel->fetchRow('Id = '.$this->_request->getParam('id'));
        
        // incarca formularul de modificare cu zend view
        $viewObject = new Zend_View();
        $viewObject->setScriptPath(APPLICATION_PATH.'views/');
        
        // seteaza id-ul stirii (utilizat la salvarea datelor)
        $viewObject->Id =             $NewsRow->Id;
        
        // seteaza in view informatiile citite din baza de date
        $viewObject->Titlu =         stripslashes($NewsRow->Titlu);
        $viewObject->Data =         $NewsRow->Data;
        $viewObject->Descriere =    stripslashes($NewsRow->Descriere);
        $viewObject->Continut =     stripslashes($NewsRow->Continut);
        
        echo $viewObject->render("modify.phtml");
    }
    
}//end of modifyAction() method
 
?>

Formularul de modificare va arata astfel:

Implementarea unui modul de stiri in Zend Framework. Partea a III-a - Afisarea si modificarea stirilor

Iata si codul din view:

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Modul de stiri in ZF</title>
<link type="text/css" rel="stylesheet" href="<?php echo DIR_LOCALPATH;?>styles/style.css" />
</head>
 
<body>
<div align="left" style="padding:50px;">
 
<ul style="padding:0px;margin:0px;">
    <li><a href="<?php echo DIR_LOCALPATH?>">Inapoi la prima pagina</a></li>
    <li><a href="<?php echo DIR_LOCALPATH?>index/view">Inapoi la vizualizare stiri</a></li>
</ul>
 
<h1>Modificare stire</h1>
 
<form name="modifyform" id="modifyform" action="<?php echo DIR_LOCALPATH?>index/modifysave" method="post" enctype="multipart/form-data">
 
    <input type="hidden" name="Id" id="Id" value="<?php echo $this->Id?>" />
    
    <table width="100%" border="0" cellpadding="2" cellspacing="2">
        <tr>
            <td width="120">Titlu</td>
            <td><input type="text" name="title" id="title" value="<?php echo $this->Titlu?>" /></td>
        </tr>
        <tr>
            <td>Data</td>
            <td><input type="text" name="date" id="date" value="<?php echo $this->Data?>" /></td>
        </tr>
        <tr>
            <td valign="top">Descriere</td>
            <td><textarea name="description" id="description" rows="5" cols="70"><?php echo $this->Descriere?></textarea></td>
        </tr>
        <tr>
            <td valign="top">Continut</td>
            <td><textarea name="content" id="content" rows="10" cols="70"><?php echo $this->Continut?></textarea></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="submitBtn" id="submitBtn" value="Salveaza" /></td>
        </tr>
    </table>
</form>
</div>
</body>
</html>

Dupa cum poti observa, variabilele pe care le-am setat ca proprietati ale obiectului view sunt afisate in interiorul unui atribut value pentru titlu si data, sau intre tag-urile <textarea> si </textarea> pentru continut si descriere. Id-ul este transmis catre actiunea de salvare a stirii printr-un camp hidden.

<input type="hidden" name="Id" id="Id" value="<?php echo $this->Id?>" />

Actiunea de modificare este similara celei de adaugare, cu deosebirea ca vom folosi functia update() a modelului News. Aceasta metoda are ca parametri un array asociativ de tip nume_coloana => valoare si o conditie where ('Id = '.$POST['Id']) prin care specificam randurile afectate de query-ul UPDATE. In final, este afisat acelasi view cu un mesaj de succes.

<?php public function modifysaveAction() {
        
    // verifica daca avem date transmise prin formular in POST
    if($this->getRequest()->isPost()) {
        
        $POST = $this->getRequest()->getPost();    
                
        if(!empty($POST)) {
            
            // construieste un array cu informatiile din post
            $arrData = array(
                            'Titlu' =>         $POST['title'],
                            'Data' =>         $POST['date'],
                            'Descriere' =>     $POST['description'],
                            'Continut' =>     $POST['content']
                      );    
                      
            // modifica stirea din baza de date
            $NewsModel = new NewsModel();        
            $NewsModel->update($arrData,'Id = '.$POST['Id']);                   
        }
    }
    
    // afiseaza mesajul de succes cu zend view
    $viewObject = new Zend_View();
    $viewObject->setScriptPath(APPLICATION_PATH.'views/');
    
    echo $viewObject->render("save.phtml");
    
}//end of modifysaveAction() method
?>

Aici se incheie aceasta serie de tutoriale. Pentru a descarca toate sursele, acceseaza resursa cu acelasi nume.

Pagina:
1
comenteaza printeaza

Cuvinte cheie:   php,   mysql,   zend framework,   stiri,   model,   view,   controller,   vizualizare,   modificare,   phtml,   param,   post,   formular

Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(3 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (2) spune-ti parerea
Pustiu Pustiu , Luni, 23 Septembrie 2013, ora 11:39
#2

@adytzul89: Da, este ultimul din această serie.

Raporteaza acest comentariu ca injurios!
adytzul89 , Joi, 19 Septembrie 2013, ora 16:35
#1

Acesta e u ultimu tutorial pentru sectiunea "modul de stiri in zend framework" ? Multumesc frumos..

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4165
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4075
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4050
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
3865
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
JSON RoR MySQL Bridge PSD SWF Action Script Fireworks Ruby on Rails Vista Verilog Swift 3D XHTML Word Dreamweaver AJAX COREL DRAW Outlook XML Illustrator Javascript HTML Flash Sony Vegas Python Java SEO Lightroom StyleSheet CSS Gimp PHP Excel Photoshop Fotografie Powerpoint
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software