Foros del Web » Programando para Internet » PHP »

Que esta mal POO

Estas en el tema de Que esta mal POO en el foro de PHP en Foros del Web. Hola amigos tengo un listado que me nuestra las noticias por categorias bueno eso es lo que intento haces, tengo un select con la opciones ...
  #1 (permalink)  
Antiguo 31/03/2009, 10:09
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Que esta mal POO

Hola amigos tengo un listado que me nuestra las noticias por categorias bueno eso es lo que intento haces, tengo un select con la opciones de busqueda pongo buscar pero no me muestra nada me da error
Este es mi listado
Código php:
Ver original
  1. <FORM NAME="selecciona" action="index.php?mod=noticias3&pag=listado_noticia" METHOD="POST">
  2. <P>Mostrar noticias de la categoría:
  3. <SELECT NAME="categoria">
  4.    <OPTION VALUE="Todas" SELECTED>Todas
  5.    <OPTION VALUE="Promociones">Promociones
  6.    <OPTION VALUE="Ofertas">Ofertas
  7.    <OPTION VALUE="Costas">Costas
  8.    <OPTION VALUE="GENERAL">GENERAL
  9. </SELECT>
  10. <INPUT TYPE="submit" NAME="actualizar" VALUE="Actualizar"></P>
  11. </FORM>
  12.  
  13.          <table border="1">
  14.          <tr>
  15.          <th align="center" colspan="7"> Lista de Delegados Deportivos </th>
  16.          </tr>
  17.               <tr>
  18.                 <td>ID</td>
  19.                 <td>titulo</td>
  20.                 <td>texto_Corto</td>
  21.                 <td>Texto Completo </td>
  22.                 <td>estado</td>
  23.                 <td>categoria</td>
  24.                 <td align="center" colspan="2">Opciones</td>
  25.               </tr>
  26.               <?php
  27.                 foreach ($items_noticia1 as $item_noticia1) {
  28.               ?>
  29.               <tr>
  30.                 <td><?php echo $item_noticia1->id ?></td>
  31.                 <td><?php echo $item_noticia1->titulo ?></td>
  32.                 <td><?php echo $item_noticia1->texto_corto ?></td>
  33.                 <td><?php echo $item_noticia1->texto_completo ?></td>
  34.                 <td><?php echo $item_noticia1->estado ?></td>
  35.                 <td><?php echo $item_noticia1->categoria ?></td>
  36.                 <td> <a href="index.php?mod=noticias3&pag=editar&id=<?php echo $item_noticia1->id; ?> "> modificar </a>
  37.                 </td>

Este es mi parte de ctrl donde esta viendo:
Código php:
Ver original
  1. case 'listado_noticia':
  2.         default:
  3.            $categoria = $_POST['categoria'];
  4.            $id = intval($_GET['id']);
  5.                    
  6.                 if(empty($id)){
  7.                     $items_noticia1 = $MOD['noticias']->getNoticia($id);
  8.                 } else {
  9.                     $items_noticia1 = $MOD['noticias']->getNoticia($id);
  10.                 }
  11.                 include('modulos/noticias3/vistas/listado_noticia.html.php');

Y este es mi modulo
Código php:
Ver original
  1. function getNoticia($categoria) {
  2.             global $MOD;
  3.            
  4.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias WHERE categoria='.$categoria);
  5.        
  6.             return $consulta;
  7.         }
  8.        
  9.         function getNoticias() {
  10.             global $MOD;
  11.            
  12.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias');
  13.        
  14.             return $consulta;
  15.         }

Al hacer clivk en mi boton no me produce nada sigue igual

Última edición por majony; 31/03/2009 a las 10:11 Razón: error de codigo
  #2 (permalink)  
Antiguo 31/03/2009, 10:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Que esta mal POO

A que te refieres con que te da "error" muestra claramente que es lo que te falla.

Por otro lado:
Código php:
Ver original
  1. if(empty($id)){
  2.                     $items_noticia1 = $MOD['noticias']->getNoticia($id);
  3.                 } else {
  4.                     $items_noticia1 = $MOD['noticias']->getNoticia($id);
  5.                 }

En ese código que intentas hacer? o para que lo tienes, si aunque compruebes si esta vacio $id, de todos modos lo mandas como parámetro...
  #3 (permalink)  
Antiguo 31/03/2009, 10:27
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Que esta mal POO

No entiendo Gator se supone que cuando mando de aqui
Código html:
Ver original
  1. <form name="buscar" action="index.php?mod=noticias3&pag=listado_noticia" method="post">
  2.  
  3. <P>Mostrar noticias de la categoría:
  4.    <select name="categoria"> <option value=""> Escoger Lista </option>
  5.    <OPTION VALUE="Todas" SELECTED>Todas
  6.    <OPTION VALUE="Promociones">Promociones
  7.    <OPTION VALUE="Ofertas">Ofertas
  8.    <OPTION VALUE="Costas">Costas
  9.    <OPTION VALUE="GENERAL">GENERAL
  10. <INPUT TYPE="submit" NAME="actualizar" VALUE="Actualizar"></P>
  11. </FORM>
  12.  
  13.          <table border="1">
  14.          <tr>
  15.          <th align="center" colspan="7"> Lista de Delegados Deportivos </th>
  16.          </tr>

A mi controlador
Código php:
Ver original
  1. case 'listado_noticia':
  2.         default:
  3.            $categoria = $_POST['categoria'];
  4.            
  5.             $items_noticia1 = $MOD['noticias']->getNoticia($categoria);
  6.                 include('modulos/noticias3/vistas/listado_noticia.html.php');

Con mi modulo este
Código php:
Ver original
  1. function getNoticia($categoria) {
  2.             global $MOD;
  3.            
  4.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias WHERE categoria='.$categoria);
  5.        
  6.             return $consulta;
  7.         }
  8.        
  9.         function getNoticias() {
  10.             global $MOD;
  11.            
  12.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias');
  13.        
  14.             return $consulta;
  15.         }

Me deberia mostrar lo que elegi en mi slect pero me nuestra el error aqui

Error: SELECT * FROM noticias WHERE categoria=GENERAL se que esta mal el modulo pero no se pq si toda la consulta esta bien
Bueno pongo como te select busco general pongo actualizar y no me muestra nada y me sale error= select etc etc
  #4 (permalink)  
Antiguo 31/03/2009, 10:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Que esta mal POO

No entiendo tu duda, si te sale el error es porque tu Query esta mal, trata de ponerla entre comillas simples:
Código sql:
Ver original
  1. SELECT * FROM noticias WHERE categoria='GENERAL'

Aunque te recomendaría que tuvieras llaves foraneas para relacionar las noticias.

Saludos.
  #5 (permalink)  
Antiguo 31/03/2009, 10:54
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Que esta mal POO

Sere mas explixativo bueno tengo en una sola tabla llamada noticias 7 campos uno de ellos se llama categoria
Ahora antes de que se me ocurra esta idea tenia cuando podia esto asi
http://localhost/proyecto_cisco/inde...istado_noticia me muestra todas las noticias con sus distintas categorias, bien ahora en este mismo listado agregue un select con las categoria y cuando pongo por decir GENERAL y click en actualizar no me genera esa consulta me sigue mostrando la misma tabla con todas las noticias
Este es mi listado.php donde mando a mi controlador
Código html:
Ver original
  1. <center>
  2. <form name="buscar" action="index.php?mod=noticias3&pag=listado_noticia" method="post">
  3.  
  4. <P>Mostrar noticias de la categoría:
  5.    <select name="categoria"> <option value=""> Escoger Lista </option>
  6.    <OPTION VALUE="Todas" SELECTED>Todas
  7.    <OPTION VALUE="Promociones">Promociones
  8.    <OPTION VALUE="Ofertas">Ofertas
  9.    <OPTION VALUE="Costas">Costas
  10.    <OPTION VALUE="GENERAL">GENERAL
  11. <INPUT TYPE="submit" NAME="actualizar" VALUE="Actualizar"></P>
  12. </FORM>
  13.  
  14.          <table border="1">
  15.          <tr>
  16.          <th align="center" colspan="7"> Lista de Delegados Deportivos </th>
  17.          </tr>
  18.               <tr>
  19.                 <td>ID</td>
  20.                 <td>titulo</td>
  21.                 <td>texto_Corto</td>
  22.                 <td>Texto Completo </td>
  23.                 <td>estado</td>
  24.                 <td>categoria</td>
  25.                 <td align="center" colspan="2">Opciones</td>
  26.               </tr>
  27.               <?php
  28.                 foreach ($items_noticia1 as $item_noticia1) {
  29.               ?>
  30.               <tr>
  31.                 <td><?php echo $item_noticia1->id ?></td>
  32.                 <td><?php echo $item_noticia1->titulo ?></td>
  33.                 <td><?php echo $item_noticia1->texto_corto ?></td>
  34.                 <td><?php echo $item_noticia1->texto_completo ?></td>
  35.                 <td><?php echo $item_noticia1->estado ?></td>
  36.                 <td><?php echo $item_noticia1->categoria ?></td>

Ahora en mi controlador recupero con post lo que mande en mi listado.php para que me muestre
Código php:
Ver original
  1. $pagina = $_GET['pag'];
  2.     include('modulos/noticias3/noticias3.mod.php');
  3.         case 'listado_noticia':
  4.         default:
  5.            $categoria = $_POST['categoria'];
  6.            
  7.             $items_noticia1 = $MOD['noticias']->getNoticias($categoria);
  8.                 include('modulos/noticias3/vistas/listado_noticia.html.php');
  9.          
  10.            
  11.    
  12.        /*

Pero te preguntaras donde hago mi consulta bien la hago en mod.php
Código php:
Ver original
  1. function getNoticia($categoria) {
  2.             global $MOD;
  3.            
  4.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias WHERE categoria='.$categoria);
  5.        
  6.             return $consulta;
  7.         }
  8.        
  9.         function getNoticias() {
  10.             global $MOD;
  11.            
  12.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias');
  13.        
  14.             return $consulta;
  15.         }

Mu duda en resumen como hago para que cuando elija en mi select por decir GENERAL me muestre en mi listado todas las noticias de categoria GENERAL hasta el momento no puedo generar lo que elijo busca pero me muestra todas las noticias ??
  #6 (permalink)  
Antiguo 31/03/2009, 11:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Que esta mal POO

Asegurate que venga un valor haciendo un var_dump($_POST). Con eso puedes ver, por otro lado si el error ya te lo esta marcando directamente en la consulta SQL, el problema esta ahí trata de agregar las comillas como te indique

Por otro lado la sintaxis correcta de un select es:
Código html:
Ver original
  1. <select name="foo">
  2.       <option value="bar">Bar</option>
  3.       <option value="baz" selected="selected">Baz</option>

Saludos.
  #7 (permalink)  
Antiguo 31/03/2009, 14:13
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Que esta mal POO

Nuevamente Gator hice lo que me dijiste pero mi pregunta es ahora esta bien mi funcion que hice
Código php:
Ver original
  1. function getNoticias() {
  2.             global $MOD;
  3.            
  4.             $consulta = $MOD['mysql']->consulta('SELECT * FROM noticias');
  5.        
  6.             return $consulta;
  7.         }
  8.        
  9.         function elegirNoticia($categoria) {
  10.             global $MOD;
  11.            
  12.             $consulta = $MOD['mysql']->consulta("SELECT * FROM noticias WHERE categoria='.$categoria'");
  13.        
  14.             return $consulta;
  15.         }

Bien ahora arregle esto de mi select:
Código html:
Ver original
  1. <center>
  2. <form name="buscar" action="index.php?mod=noticias3&pag=listado_noticia" method="post">
  3.  
  4. <P>Mostrar noticias de la categoría:
  5.    <select name="categoria"> <option value=""> Escoger Lista </option>
  6.    <OPTION VALUE="Todas" > Todas </OPTION>
  7.    <option value="Promociones">Promociones</option>
  8.    <OPTION VALUE="Ofertas">Ofertas</OPTION>
  9.    <OPTION VALUE="Costas">Costas</OPTION>
  10.    <OPTION VALUE="GENERAL">GENERAL</OPTION>
  11. <INPUT TYPE="submit" NAME="actualizar" VALUE="Actualizar"></P>
  12. </FORM>
  13.  
  14.          <table border="1">
  15.          <tr>
  16.          <th align="center" colspan="7"> Lista de Delegados Deportivos </th>
  17.          </tr>
  18.               <tr>
  19.                 <td>ID</td>
  20.                 <td>titulo</td>
  21.                 <td>texto_Corto</td>
  22.                 <td>Texto Completo </td>
  23.                 <td>estado</td>
  24.                 <td>categoria</td>
  25.                 <td align="center" colspan="2">Opciones</td>
  26.               </tr>
  27.               <?php
  28.                 foreach ($items_noticia1 as $item_noticia1) {
  29.               ?>
  30.               <tr>
  31.                 <td><?php echo $item_noticia1->id ?></td>
  32.                 <td><?php echo $item_noticia1->titulo ?></td>
  33.                 <td><?php echo $item_noticia1->texto_corto ?></td>
  34.                 <td><?php echo $item_noticia1->texto_completo ?></td>
  35.                 <td><?php echo $item_noticia1->estado ?></td>
  36.                 <td><?php echo $item_noticia1->categoria ?></td>
  37.                 <td> <a href="index.php?mod=noticias3&pag=editar&id=<?php echo $item_noticia1->id; ?> "> modificar </a>
  38.                 </td>
  39.                 <td>
  40.                     <a href="index.php?mod=noticias3&pag=eliminar&id=<?php echo $item_noticia1->id; ?> ">Eliminar</a>
  41.                 </td>
  42.               </tr>
  43.               <?php
  44.                 }
  45.               ?>
  46.               <tr>
  47.                 <td colspan="7" align="left">Nro de Resultados: <?php echo count($items_noticia1); ?></td>
  48.               </tr>
  49.            
  50.            
  51.               <tr><td colspan="7"   align="center">
  52.             <a href="index.php?mod=noticias3&pag=insertar" >Nuevo</a></td></tr>
  53.            
  54.            
  55.            
  56.             </table>
  57.             </center>

Y en mi controlador hice esto:
Código php:
Ver original
  1. break;
  2.         case 'listado_noticia':
  3.         default:
  4.             var_dump($_POST['categoria']);
  5.             $categoria = $_POST['categoria'];
  6.             $items_noticia1 = $MOD['noticias']->elegirNoticia($categoria);// con esta quiero que me muestre las notcias pero con la categoria que eleji
  7.            
  8.             $items_noticia1 = $MOD['noticias']->getNoticias();// con esta linea me muestra todas las noticias de manera general
  9.             //if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  10.                 include('modulos/noticias3/vistas/listado_noticia.html.php');
Pese a todo esto sigo sin poder ver las notcias que seleciono en mi select no me hace la accion ???
  #8 (permalink)  
Antiguo 31/03/2009, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Que esta mal POO

Tu consulta es incorrecta:
Código php:
Ver original
  1. $consulta = $MOD['mysql']->consulta("SELECT * FROM noticias WHERE categoria='$categoria'");

Tenias un "." de mas.

Luego en este archivo:
Código php:
Ver original
  1. break;
  2.         case 'listado_noticia':
  3.         default:
  4.             var_dump($_POST['categoria']);
  5.             $categoria = $_POST['categoria'];
  6.             $items_noticia1 = $MOD['noticias']->elegirNoticia($categoria);// con esta quiero que me muestre las notcias pero con la categoria que eleji
  7.            
  8.             $items_noticia1 = $MOD['noticias']->getNoticias();// con esta linea me muestra todas las noticias de manera general
  9.             //if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  10.                 include('modulos/noticias3/vistas/listado_noticia.html.php');

Sobreescribes el valor de $items_noticia1, con las de todo el listado por eso no te filtra.

Saludos.
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 19:43.