Foros del Web » Programando para Internet » PHP »

Obtener id mediante GET

Estas en el tema de Obtener id mediante GET en el foro de PHP en Foros del Web. Hola a todos! Tengo un sistema de noticas,lo que quiero hacer es mostrar el contenido mediante la variable id, tipo id=1 y aparece la primera ...
  #1 (permalink)  
Antiguo 30/10/2008, 12:08
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Obtener id mediante GET

Hola a todos!
Tengo un sistema de noticas,lo que quiero hacer es mostrar el contenido mediante la variable id, tipo id=1 y aparece la primera noticia.
se que se hace con un get pero no me aclaro

aqui mi DB:
Código:
CREATE TABLE `sn_noticias` (
  `not_id` int(11) NOT NULL auto_increment,
  `notTitulo` varchar(255) NOT NULL,
  `notTexto` text NOT NULL,
  `notCategoriaID` int(11) NOT NULL,
  `fecha` date NOT NULL,
  PRIMARY KEY  (`not_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=32 ;
  #2 (permalink)  
Antiguo 30/10/2008, 12:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

A ver, si generás algo como

noticias.php?id=1234

podés obtener el valor de id via $_GET['id'].

Ahora, ¿el problema es generar el enlace que contiene el id, u obtener la noticia a partir del id?

Saludos.
  #3 (permalink)  
Antiguo 30/10/2008, 14:15
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

generar el enlace que contiene el id

gracias de antemano!
  #4 (permalink)  
Antiguo 30/10/2008, 18:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

A ver, si es un sistema de noticias, asumo que como mínimo tiene dos partes: un listado de noticias, y el detalle de una de ellas.

Pienso que deberías pegar el código de la página de listado para que te podamos orientar en las modificaciones que debés hacer.


Saludos.
  #5 (permalink)  
Antiguo 31/10/2008, 09:31
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

aqui el codigo,muestras las noticias con un bucle...y lo quiero modificar para mostrarla por id...la DB esta en el primer post

Código:
<?php
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
    // asignamos los valores
    // a las variables que usaremos
    $cat_ID = $_GET['id'];
    $categoria = $_GET['categoria'];
    $clausula = "WHERE notCategoriaID = '$cat_ID'";
    // tambien armamos el titular de la pagina
    $titulo = "Noticias en la categoria $categoria";
}else{
    // de lo contrario
    // el titulo sera general
    $titulo = "Todas las noticias";
}
// armamos la consulta
$sqlQueryNot = mysql_query("SELECT notTitulo, notTexto FROM sn_noticias
                            $clausula", $db_link)
                            or die(mysql_error);
echo "<h1>$titulo</h1>";
// mostramos las noticias,
// otra vez usanod un bucle while
while($rowNot = mysql_fetch_array($sqlQueryNot)){
    echo "<h1>$rowNot[notTitulo]</h1>";
    echo nl2br("$rowNot[notTexto]");
}
?>
gracias por la ayuda!
  #6 (permalink)  
Antiguo 31/10/2008, 10:31
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

Bien, por lo que veo esa sería tu página de "listado".

- en principio deberías modificar la consulta para que te devuelva también el campo ID
- luego, generar un enlace así:
Código PHP:
<a href="noticias.php?id=$rowNot['not_id']">Leer m&#225;s</a> 
Y luego, en noticias.php, obtener los datos con una consulta como esta:

Código PHP:
$sqlQueryNot mysql_query("SELECT notTitulo, notTexto FROM sn_noticias
                            WHERE not_id = "
.intval($_GET['id']), $db_link)
                            or die(
mysql_error); 
(intval es una forma rápida aunque un poco desprolija de obtener el valor entero, te puede ayudar a evitar la inyección SQL)


Salut
  #7 (permalink)  
Antiguo 31/10/2008, 11:37
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

en primere lugar te agradezco mucho la ayuda.
Aun estoy un poco perdido...:S
no tengo un noticias.php simplemente ago un include de list-noticias.php
intente cambiando los querys como me djiste pero aun asi obtengo error.
seguro que no me explique bien,lo que quiero es que se muestren toda las noticias con un bucle como el de list php,pero cuando apreten en la noticia se les veo sola la noticia selecciona quedando la url asi: www.web.com/index.php?not_id=1 y asi poder integrar el leer mas.

gracias por la ayuda!
  #8 (permalink)  
Antiguo 31/10/2008, 11:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

No pues, que noticias.php era solamente un ejemplo.
Te recomiendo leer sobre SQL, parece que no lo dominás. Siempre es importante conocer lo que se está usando

Ve paso a paso, primero deberías lograr agregar el enlace. Luego crear la página que recibirá el ID y mostrará la noticia.


Saludos.
  #9 (permalink)  
Antiguo 31/10/2008, 12:28
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

pues claro que no lo domino,aun estoy empezando...lo poco que he aprendido lo he hecho autodidacticamente...[illasaron.com(curso php sql y foro)presisamente empiezo a codear estos scripts para aprender,porque podria usar cualquier cms....

Bueno,entonces lo que tengo que hacer en crear una pagina que cree el enlace mediante un get y en esa pagina el bucle para mostrar las noticas...aver que sale.

gracias por todo y saludos!
  #10 (permalink)  
Antiguo 31/10/2008, 12:33
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

Cita:
Iniciado por Wilfred Ver Mensaje
crear una pagina que cree el enlace mediante un get
No, esa misma página en la que tenés el listado debe generar un enlace que contenga el ID, en realidad el listado no tiene nada que ver con GET :)
La página que recibe el GET es independiente del listado.


Saludos y suerte :)
  #11 (permalink)  
Antiguo 31/10/2008, 12:47
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

entonces en la pagina del listado, genero el enlace,al entrar la pagina se veria normal index.php pero por ejemplo al dar a leer mas con esto
Código:
<a href="noticias.php?id=$rowNot['not_id']">Leer más</a>
Se veria id=1

gracias por la paciencia
  #12 (permalink)  
Antiguo 31/10/2008, 12:56
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

exactamente, esa es la idea
  #13 (permalink)  
Antiguo 31/10/2008, 13:02
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

gracias por la ayuda alvlin y por responder tan rapido :D
  #14 (permalink)  
Antiguo 01/11/2008, 08:14
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

ya lo consegui solo tuve ke pensar un poco mucho xD
aki list php:
Código:
<link href="css2.css" rel="stylesheet" type="text/css" />

<?php
include('db-cnx.php');
// verificamos si se ha enviado
// alguna variable via GET
if(isset($_GET['id']) && $_GET['categoria']){
    // asignamos los valores
    // a las variables que usaremos
    $cat_ID = $_GET['id'];
    $categoria = $_GET['categoria'];
    $clausula = "WHERE notCategoriaID = '$cat_ID'";
    // tambien armamos el titular de la pagina
    $titulo = "Noticias en la categoria $categoria";
}else{
    // de lo contrario
    // el titulo sera general
    $titulo = "Todas las noticias";
}
// armamos la consulta
$sqlQueryNot = mysql_query("SELECT *, notTitulo, notTexto,fecha,DATE_FORMAT(fecha,'%d-%m-%y ') AS fecha FROM sn_noticias ORDER BY not_ID DESC limit 3 
                            $clausula ", $db_link)
                            or die(mysql_error);
//echo "<h1>$titulo</h1>";
// mostramos las noticias,
// otra vez usanod un bucle while
while($rowNot = mysql_fetch_array($sqlQueryNot)){
    echo "<h1>$rowNot[notTitulo]</h1>";
    echo substr($rowNot['notTexto'], 10, 150);
	echo "<span class='Estilo4'>Escrito el: </span><span class='Estilo5'>$rowNot[fecha]</span>";
	echo "<a href=ver.php?id=$rowNot[not_id]>Leer más</a>" ;
}
?>
AQUI VER PHP:
Código:
   
      <?
	   $id=$_GET[id];
  
include('db-cnx.php');
  
    
  
    
  
      $result=mysql_query("select * from sn_noticias where not_id='$id'",$db_link);
  
    //Una vez seleccionado el registro, mostramos la noticia completamente
 
      while($row=mysql_fetch_array($result)) {
 
      echo "<h2>".$row[notTitulo]."</h2><br>
 
      <p>".$row[notTexto]."</p><br>
 
      <div>";
  
      }
  
      mysql_free_result($result);
 
      ?>
  #15 (permalink)  
Antiguo 01/11/2008, 11:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener id mediante GET

No olvides usar intval() con el valor del ID, como te lo mencionaba antes. De otra forma, sos vulnerable a un ataque de inyección SQL.

Pensá qué sucede si voy a esta URL:

ver.php?id=' OR 1='1

la consulta queda

select * from sn_noticias where not_id='' OR 1='1'

¿se entiende? al no filtrar correctamente el valor que te pasan, se puede armar cualquier consulta SQL de forma sencilla. Esta que puse como ejemplo es inofensiva, pero de la misma forma puede agregarse algo destructivo (un DROP o TRUNCATE, por ejemplo)


Saludos.
  #16 (permalink)  
Antiguo 02/11/2008, 08:22
Avatar de Wilfred  
Fecha de Ingreso: octubre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Obtener id mediante GET

es verdad me olvide la seguridad...tanto defacing y casi me olvido de lo esencial xD
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:36.