entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

obtener un id ó bandera no establecido para javascript ?

Saludos buen lector.

Resulta que estoy imprimendo en mi pagina index informacion que corresponde a una tabla "noticias" compuesta por numero,titulo,fecha,contenido.
Utilizando una consulta por separado, en index muestro solo los titulos, fechas de cada noticia. Ahora bien, quiero realizar la opcion que al seleccionar el titulo de la noticia le lleve a una pagina donde ahora mostraré toda la informacion correspondiente a la noticia seleccionada.

enter image description here

El numero es un atributo(int) autoincrementable que diferencia a cada noticia(no se muestra), ahora necesito enviar ése numero a la nueva página para hacer la consulta única para ése campo. Pensaba en enviarlo por ajax pero...

El problema es que nose como podria enviar el valor por ajax ya que cuando imprimo los titulos los hago sin hacer uso de ID el cual necesito para el evento $('id').on('click',function()) .

Imprimo de ésta forma:

 <?php
        include('logica/view.php'); //es sólo para incluir mi: conexion y el select que me traeria valores numero,titulo,fecha de la tabla

        foreach ($con->query($sql) as $row ) {

        echo " <div class='col-md-10'>
            <article class='white-panel'>
              <div class='row'>

                 <div class='col-md-10'>
                   <h4><a href='#''>".$row['titulo']."</a></h4>
                   <span>Fecha publicacion: ".$row['fecha']."</span>
                 </div> 
              </div>
            </article>
          </div>";
          # code...
        }

    ?>

Entonces que podria hacer en éste caso? que herramienta ó ejemplo es recomendable para ya sea generar un ID ó enviar el valor a mi otra pagina?.

2 Respuestas

2votos

bultack Puntos1390

Hola Oscar,

leyendo tu preguntas y respuestas, lo que saco en claro es que quieres redireccionar al usuario a otra página cuando haga clic sobre un titular para que pueda leerla.

Yo directamente lo que haría sería añadir el enlace al botón mientras los imprimes por pantalla, de esta forma cuando un usuario clique sobre el botón será redireccionado a la noticia.

En tu última respuesta el enlace que te quedaría es:

http://www.jacvalledupar.hol.es/otro/noticia.php?id=%3C?=6?%3E

En tu archivo noticia.php debes comprobar el valor id con la variable global $_GET.

$_GET["id"];

Te recomendaría que cuando accedieses a esta variable realizaras comprobaciones para evitar inyecciones SQL y que no se pasen valores no permitidos. Ya que el método $_GET es el más delicado.

0voto

Dr oscar comentado

COmprobaciones como cuáles ?

1voto

wroque Puntos4630

Si vas a usar jquery, utiliza el metodo each

te recomiendo que al tag article le des un id

$('article#noticias a').each(function(elem) {

    $(elem).click(function(event) {

        $.get('../', function(data) {

        });

        event.preventDefault();
    });

});

0voto

Dr oscar comentado

Sucede que lo he declarado como una función y ahora imprimo un tipo button en cada noticia por lo que al dar click sobre el botón, entonces mando el valor numero al evento onclick del botón:


        foreach ($con->query($sql) as $row ) {

        echo " <div class='col-md-10'>
            <article class='white-panel'>
              <div class='row'>     
                 <div class='col-md-10'>
                   <h4><u>".$row['titulo']."</u></h4>
                   <span>Fecha publicacion: ".$row['fecha']."</span>

                 </div>
                 <div class='col-md-10'>
                    <input type:'button' class='btn btn-xs btn-primary' onclick='mandar(".$row['numero'].")' value='Leer más...'>
                 </div> 
              </div>
            </article>
          </div>";
          # code...
        }

Y la función la defino en la misma pagina para enviar por ajax asi:

<script >
              function mandar(numero){

                     $.ajax({
                          type:"post",
                          url:"logica/estaNoticia.php",
                          data:('numero='+numero),

                        success: function(valor){
                           window.location.href="otro/noticia.php";
                        }     
                     });              
              }
      </script>

Éste valor llega por post a una pagina "estaNoticia.php" donde hago la consulta del numero y defino variables con los valores que devuelve la consulta:

//obtenemos el numero de la noticia por POST
     $numero=$_POST['numero'];

     include('conexion.php'); //incluimos nuestra conexion a la BD

     $sql = "SELECT *from noticia where numero=:numero"; //Creamos la select 
    $query = $con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
    $query-> bindParam(':numero', $numero); //Substituimos las variables de la SELECT
    $query-> execute(); //Ejecutamos la consulta

    $result= $query-> fetch(PDO::FETCH_ASSOC);

    $noticia['titulo']=$result['titulo'];
    $noticia['cod_Junta']=$result['cod_Junta'];
    $noticia['fecha']=$result['fecha'];
    $noticia['asistencia']=$result['asistencia'];
    $noticia['anotacion']=$result['anotacion'];

Bien ahora luego de que haga el proceso, mi funcion ajax anterior me hace la redirección a otra página "noticia.php" en la cual voy a incluir la pagina de la consulta para obtener y mostrar las variables que allí se definieron:

<div class="container">

          <div class="well">

              <?php
                 include('../logica/estaNoticia.php');

                 echo "<center><h3>".$noticia['titulo']."</h3></center><br>
                       <strong>Junta comunal Barrio: </strong>".$noticia['barrio']."
                       <strong>Fecha publicacion: </strong>".$noticia['fecha']."<br>
                       <strong>Asistieron: </strong>".$noticia['asistencia']." personas<br>
                       <strong>Presidente de la junta: </strong>".$noticia['nombres']." ".$noticia['apellidos']."<br><br>
                       ".$noticia['anotacion']."";
              ?>

          </div>

    </div>

Ahora mal, mi problema es que no está mostrando los datos mi pagina "noticia.php" al parecer no hace la consulta mi página "estaNoticia.php" y ocurren dos cosas extrañas:

  1. Si defino mi variable que llega por post($numero) como un valor por defecto, es decir, $numero=1 y actualizo "noticia.php", entonces si me muestra los datos de la consulta. Por lo que creía que entonces no se enviaba la variable por post...

  2. Entonces quité en redireccionamiento del ajax e hice que en "estaNoticia.php" me mostrara con un echo de la variable post, y si mostró el valor, entonces nose que ocurre con el redireccionamiento o la inclusión de una página dentro de otra...

Alguna idea de lo que aqui ocurre?

0voto

wroque comentado

esta mal. Sabes lo que hace tu función mandar, enviar un ajax de tipo post y espera un resultado, cuando finaliza el ajax, redirecciona sin ningun valor.

          function mandar(numero){

                 $.ajax({
                      type:"post",
                      url:"logica/estaNoticia.php",
                      data:('numero='+numero),

                    success: function(valor){
                       // aqui veras lo que devolvio el ajax.
                       alert(valor);

                       // lo que hace aqui es redireccionar como un get.
                       //window.location.href="otro/noticia.php";
                    }     
                 });              
          }

Si no sabes como funciona el ajax, es mejor no utilizarlo y dejar algo asi

<a href="otranoticias.php?id=<?=$noticia['id']?>">ver mas..</a>

asi obtienes el parametro por url y haces la consulta.

0voto

Dr oscar comentado

Pero es que no necesito que me muestre nada, solo que mande el valor y al final me redireccione.
Entonces le mando cualquier valor de regreso y luego redirecciono?

0voto

wroque comentado

es un contador lo que quieres hacer o que ?

0voto

Dr oscar comentado

No, lo que quiero es mandar desde "index.php" un valor a "estaNoticia.php" para hacer una consulta a mi base de datos y definir unas variables que contengas los valores que devuelve la consulta, luego en una página "noticia.php" voy a mostrar las variables que se definieron en "estaNoticia.php"

0voto

Dr oscar comentado

Bueno, según la forma que me dijistes anteriormente mi button quedaria:

 <a href='otro/noticia.php?id=<?=".$row['numero']."?>'>  <input type:'button' class='btn btn-xs btn-primary' value='Leer más...'></a>

Ahora bien, el enlace quedaria tal:

http://www.jacvalledupar.hol.es/otro/noticia.php?id=%3C?=6?%3E

Cómo puedo ahora en noticia.php obtener el valor(6) para la consulta?(primera vez que uso éste metodo)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta