Foros del Web » Programando para Internet » PHP »

mostrar contenido segun Parametro

Estas en el tema de mostrar contenido segun Parametro en el foro de PHP en Foros del Web. Hola estimads, queria hacerles una preguntita, stoy trabajando en un sistema de avisos simple, el usuario ingresa a un formulario, publica el aviso, estos se ...
  #1 (permalink)  
Antiguo 16/07/2014, 15:34
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
mostrar contenido segun Parametro

Hola estimads, queria hacerles una preguntita, stoy trabajando en un sistema de avisos simple, el usuario ingresa a un formulario, publica el aviso, estos se muestran en una pagina de resultados (solo algunos datos de los avisos), y tengoun enlace que debe llevarme a una pagina "detalle" de ese aviso y mostrarme todo el contenido.

Estoy trabajando con PDO, recien estoy comenzando con esta tecnica, hasta ahora mi crud resulta bien: puedo crear avisos, se almacenan bien en la bd, puedo actualizar pero no me puedo plantear bien el tema de mstrar el detalle. vi algunos ejemplos aca en la apgina y a algo llegue, pero si borro el aprametro desde el borowser deja de funcionar todo. Les dejo algo de codigo a ver si me pueden ayudar un poco...Saludos a todos

Codigo Pagina de Resultados:
Código PHP:
<?php
require ('crud/conexionDB.php');
require (
'crud/funcionesCrud.php');

$modelo= new Operaciones;
$modelo->select='*';
$modelo->from='avisos';
/*$modelo->condition='cod_aviso=1';*/
$modelo->Seleccionar();
$filas=$modelo->rows;

$total_avisos=count($filas);

?>
<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
            </head>
    <body>
        
        <!--Contenedor Principal-->
        <div class="container">

            
            <div id="filtro">
                <strong>Filtrar por Fecha de Publicación:</strong>
                <strong>Filtrar por Categoria de Aviso:</strong>
                <strong>Filtrar por Comuna:</strong>
            </div>
            <div id="buscador">
                <strong>Buscar Aviso:</strong>
                <form>
                    <label for="busca">Buscar:</label>
                    <input type="text" name="busca" placeholder="Buscar Aviso"/>
                    <input type="submit" name="buscar" value="Buscar"/>
                </form>
            </div>
            
            <div id="resultados">
                <h1>Avisos Publicados</h1>
                <!--Mostramos el Total de Avisos Publiados-->
                <strong>Tenemos: <?php echo $total_avisos?> Avisos Publicados</strong><br>
                <!--Mostramos los avisos-->
                <div class="row">
                    <?php
                    
                    
foreach($filas as $fila)
                    {
                    
                        echo
"<article id='aviso' class='col-lg-4'>";
                            
//Imagen

                            
echo "<p>".$fila['cod_aviso']."</p>";
                            echo 
"Comuna:" .$fila['comuna']."<br>";        
                        echo 
"Categoria:" .$fila['categoria_aviso']."<br>";
                        echo 
"valor:" .$fila['valor_producto']."<br>";
                        echo 
"Aviso:" .$fila['aviso']."<br>";
                        echo 
"Nombre:" .$fila['nombre']."<br>";
                        echo 
"Telefono Celular:" .$fila['tel_celular']."<br>";
                        echo 
"Telefono Fijo:" .$fila['tel_fijo']."<br>";
                        echo 
"Email:" .$fila['correo_electronico']."<br>";
                        echo 
"Direccion :" .$fila['direccion']."<br>";
                            
                            
//Boton para ir a Detalle de Aviso
                            
echo "<a href='detalleaviso.php?cod_aviso=".$fila['cod_aviso']."'>Ver Aviso</a>";
                        echo
"</article>";
                        
                    }
                
                
?>    
                        
                
                </div><!--row-->
                
                
                
                
                
                
                
            </div>
            
            
        </div><!--Contenedor Principal-->

    </body>
</html>
Si en la url escribo por ejempo : http://localhost:8080/sist_avisos/detalleaviso.php?cod_aviso=2, me muestra perfecto todo lo del aviso con codigo 2, pero si coloco por ejempo cod_aviso=20, muestra errores ya que no existe ese registro.

Este es el codigo de la pagina "detalle":
Código PHP:
<?php
/**
* @author: Nicolás Ezequiel Almonacid
* @category: Script
* @copyright: @nicoalmonacid - www.nicolasalmonacid.com
*/
require ('crud/conexionDB.php');
require (
'crud/funcionesCrud.php');

if(
$_REQUEST['cod_aviso'])
{
$cod_aviso= ($_REQUEST['cod_aviso']);
$modelo= new Operaciones;
$modelo->select='*';
$modelo->from='avisos';
$modelo->condition"cod_aviso=$cod_aviso";
$modelo->Seleccionar();
$filas=$modelo->rows;

foreach(
$filas as $fila)
{
    
$cod_aviso=$fila['cod_aviso'];
    
$comuna=$fila['comuna'];
    
$titulo_aviso=$fila['titulo_aviso'];
    
$categoria_aviso=$fila['categoria_aviso'];
    
$valor_producto=$fila['valor_producto'];
    
$aviso=$fila['aviso'];
    
$nombre=$fila['nombre'];
    
$tel_celular=$fila['tel_celular'];
    
$tel_fijo=$fila['tel_fijo'];
    
$correo_electronico=$fila['correo_electronico'];
    
$direccion=$fila['direccion'];
    
}    
}


?>
<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title></title>
        <meta name="description" content="">
        <!--<meta name="viewport" content="width=device-width, initial-scale=1">-->

        <link rel="stylesheet" href="css/normalize.min.css">
        <link rel="stylesheet" href="css/bootstrap.css">
        <link rel="stylesheet" href="css/main.css">

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>
    </head>
    <body>
        
        <!--Contenedor Principal-->
        <div class="container">
            <h1>Avisos Clasificados de CHILOE AVISOS</h1>
                    
            <div id="resultados">
                <h1>Avisos Publicados</h1>
                <!--Mostramos los avisos-->
                <div class="row">
                    <?php
                    
                        
echo"<div id='fullaviso' class='col-lg-4'>";
                        echo 
"Codigo Aviso:" .$fila['cod_aviso']."<br>";
                        echo 
"Comuna:" .$fila['comuna']."<br>";        
                        echo 
"Categoria:" .$fila['categoria_aviso']."<br>";
                        echo 
"valor:" .$fila['valor_producto']."<br>";
                        echo 
"Aviso:" .$fila['aviso']."<br>";
                        echo 
"Nombre:" .$fila['nombre']."<br>";
                        echo 
"Telefono Celular:" .$fila['tel_celular']."<br>";
                        echo 
"Telefono Fijo:" .$fila['tel_fijo']."<br>";
                        echo 
"Email:" .$fila['correo_electronico']."<br>";
                        echo 
"Direccion :" .$fila['direccion']."<br>";
                        echo
"</div>";
                
                    
?>    
                        
                
                </div><!--row-->
                
                
                
                
                
                
                
            </div>
            
            
        </div><!--Contenedor Principal-->


    </body>
</html>
y el archivo del crud (hasta ahora)
Código PHP:
<?php

/**

*/
class Operaciones{

//Inserción de Datos
public $insertInto;
public 
$insertColumns;
public 
$insertValues;
public 
$mensaje;
//Select de Registros
public $select;
public 
$from;
public 
$condition;
public 
$rows;
//Actualizacion
public $update;
public 
$set;



//Metodo para la Insercion de Registros
public  function Insertar()
{
    
//Creamos la conexion
    
$modelo= new ConexionDB;
    
    
//llamamos al meotdo conectar
    
$conexion =$modelo->conectar();
    
    
//Parametrizamos las variables
    
$insertInto=$this->insertInto;
    
$insertColumns=$this->insertColumns;
    
$insertValues=$this->insertValues;
    
    
//
    
$sql="INSERT INTO $insertInto ($insertColumns) VALUES($insertValues)";
    
    
//Preparamos la Consulta
    
$consulta$conexion->prepare($sql);
    
    
//Comprobamos si existe algun error
    
if(!$consulta)    {
        
//Si existe algun error
        
$this->mensaje="No se pudo Publicar El mensaje, contacte con el Administrador de la Plataforma";
    }else{
        
//si no hay error ejecutamos la consulta
        
$consulta->execute();
        
$this->mensaje="Aviso Publicado con Exito..CLICK AQUI PARA VISUALIZARLO";
    }
    
}
// Fin Insertar

//Seleccionar
public function Seleccionar()
{
    
$modelo= new ConexionDB;
    
    
$conexion$modelo->conectar();
    
    
$select$this->select;
    
$from$this->from;
    
$condition$this->condition;
    
    if(
$condition != ''){
    
        
$condition " WHERE " $condition;
    }
    
    
$sql"SELECT $select FROM $from $condition";
    
    
//preparamos la consulta
    
$consulta=$conexion->prepare($sql);
    
    
$consulta->execute();
    
    
//Recorremos todos los registros con un bucle
    
while($filas $consulta->fetch())
    {
        
$this->rows[] = $filas;
    }
        
}
//Fin Seleccionar

public function Actualizar()
{
    
$modelo = new ConexionDB;
    
$conexion $modelo->conectar();
    
    
$update $this->update;
    
$set $this->set;
    
$condition $this->condition;
    
    if(
$condition != ''){
        
        
$condition " WHERE " $condition;
    }
    
$sql="UPDATE $update SET $set $condition";
    
$consulta$conexion->prepare($sql);
    
    if(
$consulta){
        
$this->mensaje="Error al Actualizar el Aviso...Contacte con el Administrador";
    }else{
        
$consulta->execute();
        
$this->mensaje="Aviso actualizado con Exito";
    }
    
}
//fin actualizar


}//Fin clase

?>
Agradesco a todos su ayuda...
  #2 (permalink)  
Antiguo 16/07/2014, 16:52
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: mostrar contenido segun Parametro

has un condicional, que si no envía el parámetro que necesitas te redireccione a otro lugar
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 16/07/2014, 17:08
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: mostrar contenido segun Parametro

Cita:
Iniciado por carlos_belisario Ver Mensaje
has un condicional, que si no envía el parámetro que necesitas te redireccione a otro lugar
gracias carlos por tu respuesta, si habia intentado con un if pero no me resulta, habia itentado con:

if($cod_aviso = null), en el archivo detalle, pero no se si sera asi, y si va en ese archivo, sera mas o menos asi como memencionas?
  #4 (permalink)  
Antiguo 16/07/2014, 17:24
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: mostrar contenido segun Parametro

pues el condicional que colocas esta errado en lo siguiente
1) = es para asignar == es para comparar.
puedes hacerlo de la siguiente manera

Código PHP:
Ver original
  1. if (!isset($_GET['cod_aviso'])) {
  2.     header('location:sitio.php');
  3. }
  4. //resto de tu código

como consejo usa $_GET cuando envíes parámetros por url y $_POST cuando envíes por medio de un form, ya que $_REQUEST te recibe cualquier parámetro, de esa manera es más seguro
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 16/07/2014, 20:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: mostrar contenido segun Parametro

ok carlos, probare lo que me comentas, aunque en la pagina de resultado no manejo formulario, solo mediante un select muestro el listado total de avisos, y un link que me lleva al detalle del aviso, pruebo y si n me resulta vuelvo por aca ejeje, gracias nuevamente
  #6 (permalink)  
Antiguo 16/07/2014, 21:04
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: mostrar contenido segun Parametro

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues el condicional que colocas esta errado en lo siguiente
1) = es para asignar == es para comparar.
puedes hacerlo de la siguiente manera

Código PHP:
Ver original
  1. if (!isset($_GET['cod_aviso'])) {
  2.     header('location:sitio.php');
  3. }
  4. //resto de tu código

como consejo usa $_GET cuando envíes parámetros por url y $_POST cuando envíes por medio de un form, ya que $_REQUEST te recibe cualquier parámetro, de esa manera es más seguro

estimado, sabes que intente con lo que me dices y no me resulta, este es el codigo que use:
Pagina detalleaviso.php
Código PHP:
$cod_aviso $_GET["cod_aviso"];

if (!isset(
$_GET['cod_aviso'])) {
       echo 
"No hay aviso con ese id";
    }else{
        if(
$_REQUEST['cod_aviso'])
{
    
$cod_aviso= ($_REQUEST['cod_aviso']);
$modelo= new Operaciones;
$modelo->select='*';
$modelo->from='avisos';
$modelo->condition"cod_aviso=$cod_aviso";
$modelo->Seleccionar();
$filas=$modelo->rows;
    
    }
    
//resto de tu código

foreach($filas as $fila)
{
    
$cod_aviso=$fila['cod_aviso'];
    
$comuna=$fila['comuna'];
    
$titulo_aviso=$fila['titulo_aviso'];
    
$categoria_aviso=$fila['categoria_aviso'];
    
$valor_producto=$fila['valor_producto'];
    
$aviso=$fila['aviso'];
    
$nombre=$fila['nombre'];
    
$tel_celular=$fila['tel_celular'];
    
$tel_fijo=$fila['tel_fijo'];
    
$correo_electronico=$fila['correo_electronico'];
    
$direccion=$fila['direccion'];
    
}

}
//codigo html para mostrar resultado detalle 
  #7 (permalink)  
Antiguo 17/07/2014, 13:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 14 años
Puntos: 1
Respuesta: mostrar contenido segun Parametro

bien, ahora tengo lo siguiente: al pinchar en el link de un aviso, me muestra correctamente el detalle del mismo, hast ahi bien, pero si en el browser coloco un id de aviso que no existe ej(detalleaviso.php?cod_aviso=55)
me sale lo siguiente:
Warning: Invalid argument supplied for foreach() y errores notice, debido a que no hay contenido de las variables que recorre el foreach...

asi tengo el codigo:
Código PHP:
<?php
/**
* @author: Nicolás Ezequiel Almonacid
* @category: Script
* @copyright: @nicoalmonacid - www.nicolasalmonacid.com
*/
/*error_reporting(E_ALL ^ E_NOTICE);*/
require ('crud/conexionDB.php');
require (
'crud/funcionesCrud.php');

$cod_aviso$_GET['cod_aviso'];

    
    
$modelo= new Operaciones;
    
$modelo->select='*';
    
$modelo->from='avisos';
    
$modelo->condition"cod_aviso= $cod_aviso";
    
$modelo->Seleccionar();
    
$filas=$modelo->rows;

if(isset(
$_GET['cod_aviso'])){
    
/*echo "cargar la consulta";*/


    
foreach($filas as $fila)
        {
        
$cod_aviso=$fila['cod_aviso'];
        
$comuna=$fila['comuna'];
        
$titulo_aviso=$fila['titulo_aviso'];
        
$categoria_aviso=$fila['categoria_aviso'];
        
$valor_producto=$fila['valor_producto'];
        
$aviso=$fila['aviso'];
        
$nombre=$fila['nombre'];
        
$tel_celular=$fila['tel_celular'];
        
$tel_fijo=$fila['tel_fijo'];
        
$correo_electronico=$fila['correo_electronico'];
        
$direccion=$fila['direccion'];
        }
}
/*else{
    echo "redirigir porque no existe cod_aviso";
}*/

?>
<!DOCTYPE html>
        <link rel="stylesheet" href="css/normalize.min.css">
        <link rel="stylesheet" href="css/bootstrap.css">
        <link rel="stylesheet" href="css/main.css">

        <script src="js/vendor/modernizr-2.6.2.min.js"></script>
    </head>
    <body>
        
        <!--Contenedor Principal-->
        <div class="container">
            <h1>Avisos Clasificados de CHILOE AVISOS</h1>
                    
            <div id="resultados">
                <h1>Avisos Publicados</h1>
                <!--Mostramos los avisos-->
                <div class="row">
                    <?php
                    
                        
echo"<div id='fullaviso' class='col-lg-4'>";
                    
                        echo 
"Codigo Aviso:" .$fila['cod_aviso']."<br>";
                        echo 
"Comuna:" .$fila['comuna']."<br>";    
                        echo 
"Titulo:" .$fila['titulo_aviso']."<br>";    
                        echo 
"Categoria:" .$fila['categoria_aviso']."<br>";
                        echo 
"valor:" .$fila['valor_producto']."<br>";
                        echo 
"Aviso:" .$fila['aviso']."<br>";
                        echo 
"Nombre:" .$fila['nombre']."<br>";
                        echo 
"Telefono Celular:" .$fila['tel_celular']."<br>";
                        echo 
"Telefono Fijo:" .$fila['tel_fijo']."<br>";
                        echo 
"Email:" .$fila['correo_electronico']."<br>";
                        echo 
"Direccion :" .$fila['direccion']."<br>";
                        echo
"</div>";
                
                    
?>    
                        
                
                </div><!--row-->
                
                
                
                
                
                
                
            </div>
            
            
        </div><!--Contenedor Principal-->

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.0.min.js"><\/script>')</script>
        <script src="js/vendor/bootstrap.js"></script>
        <script src="js/plugins.js"></script>
        <script src="js/main.js"></script>

    </body>
</html>
Gracias nuevamente

Etiquetas: parametros, pdo
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 21:57.