New question

Question:

Date: 21-04-2017 13:33:38 (In Spanish)

Enviar ampersand por URL con PHP[Resolved]

Buenas noches, quisiera saber si podriais solucionarme un error, vereis estoy realizando una aplicacion web que al recibir datos desde la BBDD puede contener datos como "S&C" que significaria por ejemplo "Sistemas y comunicacion".

Pues bien al mandarlo por PHP como sabreis ya el "&" lo toma como codigo no como cadena y estuve probando con urlencode, urlcode, rawurlencode y no, sigue sin cogerme la cadena.

Mi código seria el siguiente:

Son dos botones que indexo en mi sitio, uno que elimina y otro para poder editar.

<td>
    <a href="?action=editar&id=<?php echo $r->acronimo; ?>"><img src="icon_editthis.png" width="30px" height="30px"/></a>
</td>
<td>
    <a href="?action=eliminar&acronimo=<?php echo $r->acronimo; ?>"><img src="delete.png" width="30px" height="30px"/></a>
</td>


Desde ya muchas gracias people!!
Tags: MySQL - PHP - PHP PDO - Question - URL - Web Votes: 1 - Answers: 3 - Views: 11 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 22-04-2017 00:44:26 1. al mandarlo por php? te refieres que lo envias mediante ajax?

    2. php no es el encargado o no debería ser el que lea una url, si no lo que se pasa por ella usando $_GET ejemplo:

    <?php $palabra = "jose";?>
    <a href="?action=editar&id=<?=$palabra;?>"><img src="icon_editthis.png" width="30px" height="30px"/></a>
    
    // se imprimirá lo que hay en en la url al darle click a la imagen
    <?=$_GET['action'] . $_GET['id'];?> //  Resultado: editarjose y ya con esto hacer una setencia SQL para traer ciertos datos de la Base D Datos (:v) 
    
      Votes: 0 - Link answer
     
  • Date: 22-04-2017 05:14:14 Hola Ana, ante todo bienvenida a la comunidad.

    Leyendo tu pregunta entiendo que quieres enviar vía GET URL un "acronimo" (el cual es tu "id" para identificar el registro en la base de datos), y este puede contener el famoso ampersand &..., ahora bien, el problema que se te presenta (lógicamente) es que el mismo es interpretado como separador de parametro de URL y no como un string. Para entenderlo mejor veamos tu problema en código.

    Aquí un código que emula el problema que esta teniendo Ana:
    <?php
    if (isset($_GET['id'])) {
        echo '<pre>';
        print_r($_GET);
        echo '</pre>';
        exit;
    }
    ?>
    <a href="?action=editar&id=<?php echo 'S&C'; ?>">Clic para Editar</a>
    

    Observar que en el array $_GET se reciben 3 parámetros en vez de 2:
    Array
    (
        [action] => editar
        [id] => S
        [C] => 
    )
    


    ----------

    La solución al caso es utilizar la función nativa de PHP urlencode(), veamos como salvar el ejemplo anterior:
    <?php
    if (isset($_GET['id'])) {
        echo '<pre>';
        print_r($_GET);
        echo '</pre>';
        exit;
    }
    ?>
    <a href="?action=editar&id=<?php echo urlencode('S&C'); ?>">Clic para Editar</a>
    

    Observar que ahora en el array $_GET se reciben los parámetros correctos:
    Array
    (
        [action] => editar
        [id] => S&C
    )
    


    ----------

    Por otro lado, luego tienes que realizar la consulta SQL para recuperar tu registro, aquí podría suceder que el caracter & sea sanitizado (o sea, quitado) o escapado en la consulta para evitar una posible inyección sql... habrá que ver si también esta sucediendo esto o no...

    Saludos y buen código!
      Votes: 2 - Link answer
     
  • Date: 27-04-2017 09:22:05 Al final segui el consejo de Fernano Mosquera para dicha realización y funciona perfectamente, siento la tardanza en responder, muchisimas gracias a los dos por vuestra ayuda una maravilla!!   Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com