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

problema con controlador y formulario

Estas en el tema de problema con controlador y formulario en el foro de Frameworks y PHP orientado a objetos en Foros del Web. buenas: estoy intentando encontrar donde esta el error en el cual cuando mando un formulario para crear una noticia no me toma el texto. el ...
  #1 (permalink)  
Antiguo 11/07/2008, 21:27
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
problema con controlador y formulario

buenas:
estoy intentando encontrar donde esta el error en el cual cuando mando un formulario para crear una noticia no me toma el texto.

el controller es este:
Código PHP:
class NoticiasController extends ControllerBase {
        
        
        public function 
index(){
            include(
'modelos/NoticiaModel.php');
            
$noticia= new NoticiaModel();
            
            
$data["noticias"]=$noticia->ListarNoticias();
            
            
$this->view->show('noticias.php',$data);
            
        }
        
                
        public function 
NuevaNoticia(){
            include(
'modelos/NoticiaModel.php');
            
$noticia= new NoticiaModel();
            
            
$titulo=$_POST["titulo"];
            
$texto=$_POST["noticia"];
            
$data["mensaje"]=$noticia->NuevaNoticia($titulo,$texto);
            
$this->view->show('noticias.php',$data);
        }
        
        public function 
EditarNoticia(){
            include(
'modelos/NoticiaModel.php');
            
$noticia= new NoticiaModel();
            
            
$data["noticia"]=$noticia->BuscarNoticia($_POST["id"]);
            
$this->view->show('editar_noticia.php',$data);
        }
...... 
mi vista (se que lo del $paginacion= new PHPPaging; no es lo mejor pero... funca jejeje) es :
Código PHP:
<?php
    
include('head.php');
?>

    <div class="listado">
        <?php 
        $paginacion
= new PHPPaging
        
$data["paginacion"]=$paginacion->agregarConsulta($noticias);
        
$paginacion->porPagina(1); 
        
$paginacion->ejecutar();
        
        
        while(
$datos $paginacion->fetchResultado()) {?>
            <p>ID: <?php echo $datos['id'];?></p>
            <p>Titulo: <?php echo $datos['titulo'];?></p>
            <p>Texto: <?php echo $datos['texto'];?></p>
            <p>Fecha<?php echo $datos['fecha'];?></p>
            <br/><?php
        
}
        
$links $paginacion->fetchNavegacion(); 
        echo 
$links
        
?>
        
    </div>
    <?php
        
if (!$_POST["enviar"]){?>
    <div id="noticianueva">
        <form action="?controlador=noticias&amp;accion=nuevanoticia" method="POST">
            <p>Titulo:</p>
            <p><input type="text" name="titulo" id="titulo" value="" /></p>
            <p>Texto Noticia</p>
            <p><textarea name="noticia" id="noticia" cols="30" rows="15"></textarea></p>
            
            <p><input type="submit" name="enviar" value="Enviar" /></p>
        </form>
        
    </div>
    <?php
        
}
    if (
$_POST["enviar"]){
    
?>
    
    <div id="mensaje">
        <?php echo $mensaje;?><br/>
        <a href="?controlador=noticias&amp;accion=index">Volver</a>
    </div>
    <?php
        
echo "<br>texto=".$_POST["noticia"];
    }
?>
    
    
<?php
    
include('footer.php');
?>
y mi modelo es:
Código PHP:
class NoticiaModel {
        
        
/**
         * Guarda una nueva noticia
         *
         * @param string $titulo
         * @param string $texto
         * @return string
         */
        
public function NuevaNoticia($titulo,$texto){
            if (
$titulo=="" or $texto=""){
                
$noticia="el titulo o el texto estan vacios, debes completar todos los datos";
                return 
$noticia;
            }
            else{
                
$sql="insert into noticias (titulo,texto) values ('$titulo','$texto')";
                if (!
mysql_query($sql)){
                    
$noticia="Error al intentar guardar la noticia.<br/>".mysql_error();
                    return 
$noticia;
                }
                else{
                    
$noticia="La noticia se guardo correctamente<br/>";
                    return 
$noticia;
                }
                
            }
            
        }
        
        
/**
         * Busca una noticia
         *
         * @param integer $id
         * @return Noticia (array)
         */
        
public function BuscarNoticia($id){
            
$sql="select * from noticias where id='$id'";
            if (!
mysql_query($sql)){
                
$noticia="No se encontro la noticia que buscabas.<br>".mysql_error();
            }
            else{
                
$result=mysql_query($sql);
                
$noticia=mysql_fetch_array($result);
                return 
$noticia;
            }
        }
..... 
el problema esta en el metodo nuevanotica del controller nose porque no me toma el valor de $_post["noticia"] pero si me toma el valor de $_post["titulo"], porque pasa esto?

salu2
  #2 (permalink)  
Antiguo 12/07/2008, 17:20
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: problema con controlador y formulario

listo no contesten ya lo solucione el error estaba aca:
public function NuevaNoticia($titulo,$texto){
if ($titulo=="" or $texto=""){

me falto un = jajaja eso por programar a la madrugada esperando que empiecen los san fermines jajajaja

salu2
  #3 (permalink)  
Antiguo 13/07/2008, 13:40
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con controlador y formulario

lo mejor para que no se te colen ese tipo de "errores" con el simbolo de igual (== ) es hacerlo de esta forma

Código PHP:
if ("" == $titulo or "" == $texto) { ... 
de esta forma si te equivocas y escribes '=' en vez de '==' php te soltará un error y lo solucionaras en el momento :)
  #4 (permalink)  
Antiguo 13/07/2008, 16:53
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: problema con controlador y formulario

Estimado, debes respetar las reglas de codificación, te estás "comiendo" (literalmente) los espacios en blanco.

Eso genera también que te confundas.

Te recomiendo usar un IDE (no un editor) del tipo Eclipse, ya que este tipo de cosas las detecta y te las muestra en línea, como el hecho de crear una variable que no usas en todo el método, etc.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 13/07/2008, 16:55
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: problema con controlador y formulario

Nunca se me ocurriría sugerir hacer las comparaciones al revés, ya que también genera confusion.

Sugiero que sigas las reglas que sugiere Zend y no inventes una propia (por más buena intención que tengas).
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 13/07/2008, 18:40
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con controlador y formulario

Pues ya lo siento pero, ni me parece que generen confusión ni en esas reglas de Zend que me has puesto veo que sugiera nada para las comparaciones.
  #7 (permalink)  
Antiguo 13/07/2008, 19:16
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: problema con controlador y formulario

Creo que a nadie se le ocurriría hacer este tipo de comparación (valor primero, variable después), no recuerdo ningún curso de programación o libro que haga lo mismo, tampoco es lógico hacer el razonamiento inverso, y menos, para no cometer un error en el "==", por consiguiente estás yendo en contra de la corriente y distorsionando el concepto base (que otros entiendan lo que estás haciendo).

Lo de Zend, es por concepto general, porque ya veo que la "reinvención de la rueda" se convirtió en una pandemia.

PD: muchachos, hay tanto para inventar, que perder tiempo en estas tonterías cuando está todo inventado es perder el tiempo de forma exagerada.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 14/07/2008, 12:00
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: problema con controlador y formulario

Cita:
Iniciado por enriqueplace Ver Mensaje
Estimado, debes respetar las reglas de codificación, te estás "comiendo" (literalmente) los espacios en blanco.

Eso genera también que te confundas.

Te recomiendo usar un IDE (no un editor) del tipo Eclipse, ya que este tipo de cosas las detecta y te las muestra en línea, como el hecho de crear una variable que no usas en todo el método, etc.
Te comento enrique que como ide uso Zend Studio (Zend Development Environment), no se si es mejor o peor que eclipse lo que si se que consume muchos menos recursos jeje. En todo caso la gente de Zend debería poner las opciones que decis en su IDE, porque yo no lo encontre
  #9 (permalink)  
Antiguo 14/07/2008, 12:07
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: problema con controlador y formulario

Sorry, destor77, el IDE no te detecta la falta de espacios como un error, le puedes decir que te lo indente y le agrega los espacios (CTRL + ALT + F). Sí te detecta errores de variables no usadas y similares (muy común cuando erras el nombre de una).

Y con CTRL + SHIFT + L te muestra todas las hotkeys.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com

Última edición por enriqueplace; 14/07/2008 a las 13:21
  #10 (permalink)  
Antiguo 14/07/2008, 13:15
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con controlador y formulario

a todo esto, ya que estáis con eclipse y la indentación. Si no estoy equivocado, me parece que utiliza tabuladores en vez de cuatro espacios, que es justo lo contrario a los estándares de PEAR y Zend. No?
  #11 (permalink)  
Antiguo 14/07/2008, 13:30
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: problema con controlador y formulario

Sí, no he visto habilitado por defecto que sustituya los tabs por espacios, hay que habilitarlos para que lo haga.

Comentario aparte, este es de los pocos puntos que no estoy muy de acuerdo (igual que con las llaves iniciales contra el margen izquierdo de las clases y métodos), pero cierro la boca y sigo adelante, con el tiempo te acostumbras y el beneficio es para todos.

PD: para que vean que los "superhéroes" también tenemos nuestros momentos de debilidades como cualquier mortal y no todo es tan perfecto y fácil
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #12 (permalink)  
Antiguo 14/07/2008, 14:56
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: problema con controlador y formulario

tengo el eclipse v3.3.2
y por defecto me pone tabuladores xd
Mira la imagen:

Le acabo de dar a "Restore dedaults" para asegurarme.

Por lo menos esta bien saber que se puede cambiar esto desde las opciones. Ahora ya me pone 4 los espacios :)

PD: Opino igual que tu, lo de los 4 espacios es mucho mas costoso que poner un tabulador. Supongo que esto tendrá su lógica..
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 06:05.