Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cuál FrameWork Recomiendan?

Estas en el tema de Cuál FrameWork Recomiendan? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. He leido por diversos lugares en la red sobre FramWorks para PHP5. La verdad me he contrado con varios que según sus documentación se ven ...
  #1 (permalink)  
Antiguo 12/06/2006, 13:39
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Cuál FrameWork Recomiendan?

He leido por diversos lugares en la red sobre FramWorks para PHP5.
La verdad me he contrado con varios que según sus documentación se ven bastantes robustos.

Pero me gustaría que ustedes me den sus opiniones y experiancias respectos a estos.

Los que destaco según lo que he buscado y he leido son los siguientes.
  1. ZendFramework
  2. Symfony
  3. Prado
  4. Cake
  5. Pearl (conjunto de librerías)
  6. Otro

¿Cuál es más robusto y escalable de ellos, el mejor?


gracias,

salu2

zsamer
  #2 (permalink)  
Antiguo 12/06/2006, 19:30
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Si buscas en el foro, ya se ha discutido este tema ... no habiendo llegado a la "verdad absoluta" (que además, por cierto, no existe ).

Por el momento hay demasiados, demasiado "ruido", demasiada "infoxicación" ... por lo pronto (mi opinión) es mejor esperar y ver la "decantación natural" ... o si estás apurado, usa cualquiera de estos criterios (te pueden dar resultados distintos):

- usa el "oficial".
- usa el que tiene mayor comunidad de usuarios.
- el que es más usado en proyectos web importantes.
- mejor documentación?
- más fácil?
- mejor licencia?
- el que usa tu gurú preferido?

Eso sí, te prohibo que hables de hacerte uno "de cero" para aprender y tener uno propio
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 12/06/2006, 22:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Ya he leido todos los post relacionado a éste tema pero en ninguno quedó nada claro, por eso abrí este tema, para llegar a una conclusión más definida, pero al parecer ésta no existe.

Personalmente estoy entre el Zend y Symfony, no se cual será mejor, más robusto y más usado.

estoy en la duda .
  #4 (permalink)  
Antiguo 12/06/2006, 22:46
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
¿Una moneda al aire?

En lo personal, ya decidí mi camino: usar la versión oficial, el framework de Zend.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 13/06/2006, 03:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 204
Antigüedad: 20 años, 4 meses
Puntos: 2
Yo tambien estoy mirando framworks, por que cada dia tengo mas trabajo usando php y hay veces que me falta tiempo. Tambien dudo entre symfony y el zend... seguramente acabare usando el zend, ya que la compañia que me da el hosting lo tiene instalado, pero la verdad, como no lo he usado nunca no tengoni pi de cmo usarlo xD
  #6 (permalink)  
Antiguo 13/06/2006, 09:26
 
Fecha de Ingreso: octubre-2005
Mensajes: 85
Antigüedad: 18 años, 6 meses
Puntos: 0
Porque entonces en vez de discutir tanto sobre los framework que es algo que a criterio de cada uno no nos brindan por ahi unos enlaces en castellano en lo posible sobre l manera de como emplear el framework de zend en nuestros proyectos digo zend porque pienso que hay mas respaldo para sus productos. Agradecere ejemplos de como usarlo
  #7 (permalink)  
Antiguo 13/06/2006, 11:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
En verdad este tema ya se propuso. Para empezar se tiene que hacer una diferencia entre los frameworks para la versión 4, y los de la versión 5.

Zend Framework, Symfony y Ez Components son exclusivos para la versión 5.

El repositorio PEAR, y Cakephp están adaptados para la versión 4. Lo que no quiere decir que se puedan utilizar para la versión 5.

Para mi el mejor es Zend Framework, lo siguo desde la versión 0.12. Primero porque tiene un código claro y limpio, por su facilidad de uso, su facilidad de integración, porque tiene el Soporte de Zend, y sobre todo porque acaba de nacer.

Eso significa que en mi caso desde la versión 0.12 han habido muchos cambios la mayoría de ellos correcciones o documentación o nuevos módulos al proceso de incubación. Cada dia se actualiza desde subversion mayormente la traducción del manual en diferentes lenguas. Tiene mucha documentación, como articulos sobre combinarlo con repositorios de PEAR, SMARTY...
ADODB recientemente ha sacado ADODB activeRecord que es una adaptación para utilizarla como sustituto de Zend_DB. Incluso hay articulos de como combinarlo con Ez components.
Supongo que si me decidí por Zend es porque podía verlo nacer y aprender la evolución del proyecto.

Aunque realmente la elección depende de cada uno.
  #8 (permalink)  
Antiguo 13/06/2006, 12:37
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Gracias, es justo lo que necesitaba, voy a tomar el rumbo hacia Zend.

Existe algun foro para zend framework?, no encontre ningun foro en la página de Zend FrameWork.

Con respecto a la documentación hay bastante, en la misma página de Zend FrameWork, hay un Manual.


Gracias y salu2
  #9 (permalink)  
Antiguo 14/06/2006, 10:10
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
perdon por mi extrema ignorancia pero q es esto de framewords??? me baje el de zend y no pude ejecutar ni una sola de las paginas q traia dentro del zip
saludos
  #10 (permalink)  
Antiguo 14/06/2006, 10:24
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
La verdad es que yo tampoco sé que es un "framewords"

Si estás hablando de "Frameworks", visita Wikipedia

En pocas palabras, es casi un sinónimo del viejo concepto de "librería", una "caja de herramientas" donde tendrás componentes "suficientemente genéricos" que podrás reutilizar en "nuevos contextos".
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #11 (permalink)  
Antiguo 14/06/2006, 11:35
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
estas cosas me hacen reflexionar...

Hace un tiempo estube hablando con dos personas que programaban en diferente ámbito. Una era un pythoniso un programador en python un sorprendente lenguage de scripting que permite la herencia multiple, bueno el tio era una máquina programaba tanto aplicaciones de escritorio pygtk como web con un framework llamado django que me sorprendió la verdad a pesar de tener una comunidad mucho menor de programadores ya tenian frameworks mucho más avanzados y maduros que los de php.


Hay algo con lo que no estoy de acuerdo y era sobre la crítica excesiba a mi entender que se marcó con la comunidad de programadores de php, sí el tio era un chulo pegotero. Decía que php no había evolucionado lo suficiente como lenguage en comparacion con otros. Y arremetia sin compasion contra la comunidad php. Si contenía a malos programadores, si el código no crecía... y principalmente decía que php era demasiado permisivo, es decir, que podias programar autenticas aberraciones y aun así funcionaba, cuando el código crecía se hacía tan inestable y complejo que la única solución era mantener a la persona que había creado la aplicación o volver a empezar el proyecto de nuevo ya que nadie era incapaz de sostenerlo mas que el autor. Y que para cuando sacaron una versión algo decente (php5) la gente estaba tan acostumbrada a sus sistemas procedurales complejos (recordemos desde php3) que era incapaz de adaptarse a las nuevas tendencias.


Yo creo que un mal programador es un mal programador independiente del lenguage. Pero es posible que el lenguage incite a una mala programación¿? Esto me recordaba o lo odioso que era programar en java por sus reglas tan estrictas, pero luego se hacía muy difícil hacer mal las cosas.
El segundo problema que me planteaba era sobre el potencial del lenguage. Realmente se pueden comparar lenguages entre sí¿?

La questión me quedó resuelta cuando hablé con la segunda persona.
Este era un programador de java que hace algún tiempo le hablé de Rails y me dijo que lo estaba mirando que la comunidad era muy buena..., directamente fue aprendiendo Rails y Ruby al mismo tiempo.


Cuando volvimos a hablar me sorprendió que los principales problemas que tenía era de diseño. Es decir básicamente no tenia problemas de sintaxis ni como crear formularios ni problemas con arrays... Sino como relacionar una tabla con otra y problemas de ingenieria del software, algunas cosas de css. pero básicamente había superado el problema rutinario del lenguage.
Ahora el tio esta liado con rails y ajax y es sorprendente lo que hace.
Esto me hace pensar si realmente php conseguirá seguir como lenguage lider o caerá por su propio peso.

Se acabará eliminando la versión 4 de php ?? o es la versión 4 un lastre para el avance del lenguage? Es bueno que existan tantos frameworks o debería dominar uno o dos?
...

Última edición por Casuis; 14/06/2006 a las 11:42
  #12 (permalink)  
Antiguo 14/06/2006, 11:36
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Cita:
Iniciado por enriqueplace
La verdad es que yo tampoco sé que es un "framewords"

Si estás hablando de "Frameworks", visita Wikipedia

En pocas palabras, es casi un sinónimo del viejo concepto de "librería", una "caja de herramientas" donde tendrás componentes "suficientemente genéricos" que podrás reutilizar en "nuevos contextos".
Tengo dudas Con el Zend Frameworks:
  1. Cual es el equivalente a mysql_num_rows?
  2. Como puedo recorrer un array del tipo mysql_fetch_array o mysql_fetch_assoc con while? (sin foreach)

ej: actualmente hago los siguiente para mostrar resultado de una consulta:

Código PHP:
?php

//ZEND
require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'usuariosdb');
                    
$db Zend_Db::factory('pdoMysql'$params);

// create a $db object, and then query the database.
// this time, use placeholder binding.

$result $db->query('SELECT * FROM tbl_usuarios WHERE id < :placeholder and username = :pelagato', array('placeholder' => 100000,
                                                                            
'pelagato' => '1613'));
// use the PDOStatement $result to fetch all rows as an array

foreach ($rows $result->fetchAll() as $row) {
print 
$row['id']."<br />";
print 
$row['username']."<br />";
print 
$row['email']."<br />";
}
?> 
pero la idea sería que fuese asi, pero no funciona:

Código PHP:
<?
while ($rows $result->fetchAll()) { // o $result->fetchAssoc()
print $row['id']."<br />";
print 
$row['username']."<br />";
print 
$row['email']."<br />";
}
?>
gracias,

Última edición por zsamer; 14/06/2006 a las 11:47
  #13 (permalink)  
Antiguo 14/06/2006, 11:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Cita:
Tengo dudas Con el Zend Frameworks:

1. Cual es el equivalente a mysql_num_rows?
2. Como puedo recorrer un array del tipo mysql_fetch_array o mysql_fetch_assoc con while? (sin foreach)
1. Puedes o hacer un select count() o hacer que te devuelva un array asociativo con $db->fetchAssoc() y luego hacer un count() sobre los registros.

2. No te recomiendo que utilices para nada el while. En vez de utilizar una consulta general como estas trabajando con solo una tabla utiliza el Zend_Db_Table y te recomiendo el asistente de Select.
Más información http://framework.zend.com/manual/en/zend.db.table.html
Zend_Db_Select
  #14 (permalink)  
Antiguo 14/06/2006, 12:20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Gracias Casuis, ya habia tenido en cuenta lo del select count(*)..., pero solo quería saber si esxistia el mysql_num_rows(ya que es mas simple, una sola función).

Lo otro, no entendí bien la funcionalidad de Zend_Db_Table, para que casos se aplica?

gracias

salu2

zsamer
  #15 (permalink)  
Antiguo 14/06/2006, 12:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Zend_Db_Table es para representar las tablas de la base de datos como objetos.
Asi acotas los selects.

Por ejemplo en el desarrollo de un blog tienes artículos, comentarios, tags...
Cada tabla representará un objeto. Así en el directorio de modelos tendras por ejemplo articulos: (cuidado con el pluralice en bbdd articles)
Código PHP:
class Article extends Zend_Db_Table {} 
Así una consulta tipo:

Código:
 SELECT * FROM articles
     WHERE nombre = Casuis'
    AND apellido = 'Kronos'
    ORDER BY nombre
Código PHP:
$where $db->quoteInto('nombre= ?''Casuis')
       . 
$db->quoteInto('AND apellido  = ?''Kronos');

$order 'nombre';

$row $articulo->fetchRow($where$order); 
Acotamos el problema para tener menos fallos. Tambien dentro de la clase que representa una tabla definimos todos los metodos que tengan que ver con la logica del modelo. Para más información mira algunos articulos sobre modelo-vista-controlador.
  #16 (permalink)  
Antiguo 14/06/2006, 13:02
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Gracias Casuis.

Con respecto a Zend_Db_Table, tengo lo siguiente:

Código PHP:

<?php

require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'usuariosdb');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
tbl_usuarios extends Zend_Db_Table {}

$table = new tbl_usuarios();

$db2 $table->getAdapter();
$where $db2->quoteInto('username = ?''1613'
       . 
$db2->quoteInto('AND id = ?''976');
$order 'id';
$row $table->fetchRow($where$order);
//print_r($row);

?>
y me arroja el siguiente error:
Código:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from, interes, actividad, celular, telefono, fax, firma, skins, skinsid,' at line 20' in C:\xampp\htdocs\Zend\Zend\Db\Adapter\Abstract.php:153 Stack trace: #0 C:\xampp\htdocs\Zend\Zend\Db\Adapter\Abstract.php(153): PDOStatement->execute(Array) #1 C:\xampp\htdocs\Zend\Zend\Db\Adapter\Abstract.php(393): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Select), NULL) #2 C:\xampp\htdocs\Zend\Zend\Db\Table.php(407): Zend_Db_Adapter_Abstract->fetchRow(Object(Zend_Db_Select)) #3 C:\xampp\htdocs\Zend\Zend\Db\Table.php(342): Zend_Db_Table->_fetch('Row', 'username = '161...', 'id', 1) #4 C:\xampp\htdocs\Zend\Zend_Db_Table.php(25): Zend_Db_Table->fetchRow('username = '161...', 'id') #5 {main} thrown in C:\xampp\htdocs\Zend\Zend\Db\Adapter\Abstract.php on line 153
Gracias
saludos,

Última edición por zsamer; 14/06/2006 a las 15:07
  #17 (permalink)  
Antiguo 14/06/2006, 15:45
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Cita:
$db2->quoteInto('AND id = ?', '976');
esto da como resultado id = '976' y supongo que el id es un autonumerico no un carácter. El quoteInto es apostrofar los caracteres y lo adapta a cada base de datos como sabes un numero no se acota.

en vez de id = '976' tendría que ser id = 976

Quitale el quoteInto

te recomiendo para debugar el método Zend::dump($variable); va genial.
  #18 (permalink)  
Antiguo 14/06/2006, 17:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Sigue arrojando en mismo error, no entendí a que te refieres con quitarle el quoteInto.

Código PHP:
<?php
require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'transexpress');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
Posters extends Zend_Db_Table {}

$table = new Posters();

$db $table->getAdapter();
$where $db->quoteInto('username = ?''1613')
        . 
$db->quoteInto('AND id = ?'976);
$order 'id';
$row $table->fetchRow($where$order);
?>
incluso lo probé sin la 2º condicion, el mismo error:

Código PHP:
<?php
require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'transexpress');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
Posters extends Zend_Db_Table {}

$table = new Posters();

$db $table->getAdapter();
$where $db->quoteInto('username = ?''1613');
$order 'username';
$row $table->fetchRow($where$order);
?>
  #19 (permalink)  
Antiguo 15/06/2006, 07:59
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Puede ser un problema con el nombre de la tabla y el denominado "camelize", por ejemplo si tu tabla en la bbdd se llama noticias_usuario en la clase utilizando Zend sería NoticiasUsuario.

El quoteInto lo que hace es lo siguiente:
Código PHP:
$where $db->quoteInto('username = ?''1613'
esto queria en verdad
Código PHP:
$where " username = '1613' "
Si declaras una clase :
Código PHP:
class Posters extends Zend_Db_Table {} 
tu tabla en la base de datos se llamará posters. Puedes cambiarlo manualmente también de la siguiente forma:
Código PHP:
class NombreClase extends Zend_Db_Table
{

    protected 
$_name 'el_nombre_que_quiero_darle';

Mira que en la tabla posters tengas un campo username y que sea tipo caracter que es como lo estas haciendo servir.
No te puedo decir mucho más con el código que has puesto. Bueno es un código copiado del manual, te aconsejo 3 cosas:
1) que antes de copiar y pegar te leas el manual previamente.
2) Utilices metodos de debug. Recuerdo Zend:dump();
3) te leas e implementes este tutorial de phpArchitect
4) Si no llevas mucho tiempo programando quizá sea menos complejo para ti utilizar otros métodos más clasicos para que puedas coger más experiencia.

El ZendFramework es un entorno profesional de desarrollo orientado a profesionales por la carencia de documentacion, tutoriales, digamos que tiene lo justo. Leyendo el manual te das cuenta que dan por hecho que el usuario tiene un alto grado de experiencia con el entorno, también requiere una asimilación del modelo-vista-controlador y por supuesto sigue una política de programación (Coding Style).

Última edición por Casuis; 15/06/2006 a las 08:05
  #20 (permalink)  
Antiguo 15/06/2006, 15:35
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias casuis, efectivamente la tabla es posters

lo que quiero hacer es lo siguiente:
SELECT * FROM posters where username='1316'

Sigo con el mismo error,


Código PHP:
<?php
require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'transexpress');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
Posters extends Zend_Db_Table {}

$table = new Posters();

$db $table->getAdapter();
$where " username = '1613' ";

$order ' username ';
$row $table->fetchRow($where$order);
?>

Última edición por zsamer; 15/06/2006 a las 15:47
  #21 (permalink)  
Antiguo 15/06/2006, 17:14
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Ya se lo que quieres hacer... en fin voy a poner yo un ejemplo.
Zend Framework Ubuntu y XAMPP
Versiones

Xampp la estable que encuentres
Ubuntu 5.10
Zend Framework 0.13


Empezamos. Primero me instalo el xampp
Código:
sudo tar xvfz xampp-linux-XXX.tar.gz -C /opt
puesta en marcha...
Código:
sudo /opt/lampp/lampp start
y miro que todo este correcto. Hago el phpinfo();

Código:
PHP Version 5.1.1  <-- Perfecto con esta version funciona Zend 
Apache 2.0 Handler <-- Me mola tu rollo
mod_rewrite           <-- genial xampp bien por vosotros
PDO drivers  mssql, mysql, sqlite2  <--- perfecto ya biene con mysql
(dios mio creo que hago menos esfuerzo con linux que con windows... que está pasando)

Ahora voy al phpMyadmin
Código:
MySQL 5.0.18    <-- mmmm no tiene activado INNODB con lo que me mola
Pues ya estamos preparados. Aunque yo quiero INNODB así que voy a la configuracion de mysql my.cnf y lo arreglo jujuju ya lo tengo.

Precaución!!!
vamos a asegurarnos en el php.ini
Código:
memory_limit = 8M  <--- Si te aparece esto te aconsejo que lo subas a 32M aunque con 16M va que chuta.

creo una base de datos de prueba

Código:
CREATE DATABASE `prueba` ;


CREATE TABLE `mensajes` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titulo` VARCHAR( 255 ) NOT NULL ,
`mensaje` TEXT NOT NULL ,
`autor` VARCHAR( 255 ) NOT NULL ,
`fecha` DATETIME NOT NULL
) TYPE = innodb;

INSERT INTO `mensajes` ( `id` , `titulo` , `mensaje` , `autor` , `fecha` )
VALUES (
NULL , 'Mensaje de prueba', 'Este es un mensaje de prueba', 'Casuis', '2006-06-08 00:42:25'
), (
NULL , 'Otro mensaje', 'segundo mensaje de prueba', 'Maria', '2006-06-16 00:42:46'
);
Bien ahora solo queda configurar Zend.
Creo una carpeta "prueba" a tu gusto pro ejemplo: /usr/local/web/prueba

y luego el añadimos el host en /etc/hosts 127.0.0.1 prueba

Miramos el httpd.conf y añadimos el virtual directory
Código:
<VirtualHost *:80>
  ServerName prueba
  DocumentRoot "/usr/local/web/prueba"
  DirectoryIndex index.php

  <Directory "/usr/local/web/prueba">
   AllowOverride All
   Allow from all
  </Directory>
</VirtualHost>
hacemos un restart al xampp
Código:
sudo /opt/lampp/lampp restart
Añado el .htaccess dentro del directorio prueba
Código:
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
php_value include_path "lib"
creo un subdirectorio lib y le añado el framework.

creo un archivo index.php y pongo el siguiente codigo:
Código PHP:
require_once 'Zend/Db.php';

$params = array (   'host'     => 'localhost',                 
                    
'username' => 'casuis',                 
                    
'password' => 'casuis',                 
                    
'dbname'   => 'prueba');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
Mensajes extends Zend_Db_Table {}

$table = new Mensajes();

$db $table->getAdapter();
$where $db->quoteInto("autor = ?","Casuis");


$order "autor";
$row $table->fetchRow($where$order); 

echo 
$row->titulo."<br />";
echo 
$row->autor."<br />"
Igual que tu no? pues ahora voy a localhost/prueba y la salida de pantalla...
Código:
Mensaje de prueba
Casuis
Pues entonces si que va. No hay ningun problema haz un repaso de que cumples los requisitos, el nombre de la base de datos esta bien tienes permisos etc. porque luego el codigo es simple.

Última edición por Casuis; 15/06/2006 a las 17:38
  #22 (permalink)  
Antiguo 15/06/2006, 18:41
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Muchas garcias,

Lo estaba hacien bien, el problema era otro, quizas sea un bugs, la causa del error que me causaba era que tengo un campo llamado "from" en mi tabla y eso era todo.

Lo otro cuando tengo nombre de campos largos, osea "nombre_usuario" y quiero imprimir el resultado de la siguiente forma:

Código PHP:
<?
echo $row->nombre_usuario."<br />";  
?>
Tambien me arroja un error:
Código:
Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'column 'direccion_usuario' not in row' in C:\xampp\htdocs\Zend\Zend\Db\Table\Row.php:97 Stack trace: #0 C:\xampp\htdocs\Zend\Zend_Db_Table.php(32): Zend_Db_Table_Row->__get('direccion_usuar...') #1 {main} thrown in C:\xampp\htdocs\Zend\Zend\Db\Table\Row.php on line 97
Y lo curioso que el campo o columna 'direccion_usuario' si existe.

alguna idea???
Gracias
salu2

zsamer
  #23 (permalink)  
Antiguo 22/06/2006, 15:03
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Problemas con Zend_Db_Table y nombre de campos largos

Problemas con Zend_Db_Table y nombre de campos largos, ej: "nombre_usuario" el código completo es el siguiente:

Código PHP:
<?
require_once 'Zend/Db.php';

$params = array (    'host'     => 'localhost',                 
                    
'username' => 'root',                 
                    
'password' => '',                 
                    
'dbname'   => 'zsamer');
                    
$db Zend_Db::factory('pdoMysql'$params);

require_once 
'Zend/Db/Table.php';

Zend_Db_Table::setDefaultAdapter($db);

class 
UserDatosUsuarios extends Zend_Db_Table {
    protected 
$_primary 'id_datos';
}

$table = new UserDatosUsuarios();

$db $table->getAdapter();

$where $db->quoteInto("direccion_usuario = ?","Apoquindo");

//. $db->quoteInto("AND id = ?",2);

$order "direccion_usuario ";

$row $table->fetchRow($where$order);

echo 
$row->direccion_usuario ."<br />"// Aqui es el problema, por que?
?>

Me arroja el siguiente mensaje de error:
Código:
Fatal error: Uncaught exception 'Zend_Db_Table_Row_Exception' with message 'column 'direccion_usuario' not in row' in C:\xampp\htdocs\Zend\Zend\Db\Table\Row.php:97 Stack trace: #0 C:\xampp\htdocs\Zend\Zend_Db_Table.php(32): Zend_Db_Table_Row->__get('direccion_usuar...') #1 {main} thrown in C:\xampp\htdocs\Zend\Zend\Db\Table\Row.php on line 97
Lo raro es que el campo o columna 'direccion_usuario' si existe.

alguna idea???
Gracias
salu2

zsamer
  #24 (permalink)  
Antiguo 22/06/2006, 18:31
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
por que no utilizas el Zend::dump(); como te dije?
Vuelves a tener el mismo error de siempre es por el Camelize.

Para ver los campos tienes la funcion info() [más información Zend_Db_Table]

Te devolverá un array de tres campos el nombre de la tabla, las columnas y la primary key.
Por ejemplo una tabla Usuario:

Código PHP:
$table = new UserDatosUsuarios();

$db $table->getAdapter(); 

$info $table->info();
Zend::dump($info); exit; 
Código PHP:
  ["name"] => string(6"usuario"
  
["cols"] => array(6) {
      [
"id"] => string(2"id"
      
["usuario"] => string(6"usuario"
      
["password"] => string(8"password"
      
["nombre"] => string(3"nombre"
      
["apellido1"] => string(7"apellido1"
      
["apellido2"] => string(7"apellido2"
  
}
  [
"primary"] => string(2"id" 
Veras como se llaman los campos espero que te sirva

Última edición por Casuis; 23/06/2006 a las 02:55
  #25 (permalink)  
Antiguo 24/06/2006, 01:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
gracias te pasaste,

eres de Gran ayuda.


saludos

zsamer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.