Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] pasar parametro por url (clasica pagina detalle)

Estas en el tema de pasar parametro por url (clasica pagina detalle) en el foro de PHP en Foros del Web. Hola amigos, queria ver si me podian ayudar en esto: tengo una pagina php que hace un listado de todas las noticas de una bd, ...
  #1 (permalink)  
Antiguo 17/07/2014, 16:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 13 años, 5 meses
Puntos: 1
pasar parametro por url (clasica pagina detalle)

Hola amigos, queria ver si me podian ayudar en esto: tengo una pagina php que hace un listado de todas las noticas de una bd, en cada una de ellas hay un link del tipo noticias.php?cod_noticia=1, que me lleva a una pagina detallenoticia.php.

Ahora, hago uso de una variable get, con la cual recogo en la pagina detallenotica.php el id de la noticia, y muestro la notica a full, me funciona bien, pero mi problema es:

si yo en la barra de navegacion, cambio el cod_noticia=1, y coloco cualquier numero, por ejemplo 8, y no tengo esa noticia, quiero hacer que muestre un mensaje o redireccione, o sea que si modifican el id, y si ese numero no tiene contenido, que rediriga o muestre un mensaje.

probe hacer una condicional asi if(!empty($_get['cod_aviso'])){codigo de conexion, foreach para mostrar filas,etc}
y no me funciona

busque en el foro y ninguna de las cosas que probe me resulto, Agradeceria si alguien me puede ayudar, debe ser una tontera pero no doy con la solucion, estoy trabajando con PDO..

Saludos y gracias

Pagina detallenoticia.php
Código:
<?php

/*error_reporting(E_ALL ^ E_NOTICE);*/
require ('crud/conexionDB.php');
require ('crud/funcionesCrud.php');



if($_GET['cod_aviso']){
	/*echo "cargar la consulta";*/
	$cod_aviso= $_GET['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'];
		}
}else{
	echo "redirigir porque no existe cod_aviso";
}
php de la pagina noticias.php (litsado de todas las noticias)
Código:
require ('crud/conexionDB.php');
require ('crud/funcionesCrud.php');




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

$total_avisos=count($filas);
  #2 (permalink)  
Antiguo 17/07/2014, 16:15
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: pasar parametro por url (clasica pagina detalle)

Holas, nimaki25.

Hay que aclarar acá un punto que tal vez no tengas claro:

En la línea:
Código PHP:
if($_GET['cod_aviso']) 
Lo que estás preguntando es si la variable tiene contenido o no (al tratar una variable de cadena como un booleano, lo que consigues realmente es saber si la variable está vacía (false) o no (true)).
Si lo que quieres es mostrar un mensaje cuando el valor de cod_aviso no existe en la BD, tendrás que agregar otra validación más a tu código: una donde averigües si el registro asociado al cod_aviso recibido existe; si no existe, muestras el aviso o redireccionas, según lo que te convenga más.

Yo de plano te sugiero cambiar la primera validación por la que corresponde, tratando la variable de cadena como tal, no como booleana, para luego agregar la nueva validación. Algo como:

Código PHP:
if(!empty($_GET['cod_aviso']))
{
  
// busca la noticia en la bd
  // y entonces valida aprovechando la propiedad o método rows de tu clase:
  
$filas=$modelo->rows;

  if (
count($filas) > 0)
  {
     
// muestras la noticia
  
}
  else
  {
     
// muestra mensaje de que el aviso no existe
  
}
}
else
{
  
// mensaje de que falta cod_aviso para buscar noticia

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 17/07/2014, 16:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 131
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: pasar parametro por url (clasica pagina detalle)

Cita:
Iniciado por quinqui Ver Mensaje
Holas, nimaki25.

Hay que aclarar acá un punto que tal vez no tengas claro:

En la línea:
Código PHP:
if($_GET['cod_aviso']) 
Lo que estás preguntando es si la variable tiene contenido o no (al tratar una variable de cadena como un booleano, lo que consigues realmente es saber si la variable está vacía (false) o no (true)).
Si lo que quieres es mostrar un mensaje cuando el valor de cod_aviso no existe en la BD, tendrás que agregar otra validación más a tu código: una donde averigües si el registro asociado al cod_aviso recibido existe; si no existe, muestras el aviso o redireccionas, según lo que te convenga más.

Yo de plano te sugiero cambiar la primera validación por la que corresponde, tratando la variable de cadena como tal, no como booleana, para luego agregar la nueva validación. Algo como:

Código PHP:
if(!empty($_GET['cod_aviso']))
{
  
// busca la noticia en la bd
  // y entonces valida aprovechando la propiedad o método rows de tu clase:
  
$filas=$modelo->rows;

  if (
count($filas) > 0)
  {
     
// muestras la noticia
  
}
  else
  {
     
// muestra mensaje de que el aviso no existe
  
}
}
else
{
  
// mensaje de que falta cod_aviso para buscar noticia

Saludos!
Hola quinqui, en primer lugrar agradecer tu tiempo y tu ayuda, FUNCIONO!!!! sabia que faltaba un condicional mas pero no sabia donde, probe de mil maneras y no me resultaba, te agardesco muchisimo estimado....

Saludos cordiales

Etiquetas: parametro, select, url, variable
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 12:28.