Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema enviar variables desde href

Estas en el tema de Problema enviar variables desde href en el foro de PHP en Foros del Web. Hola, a veces cosas tan sencillas no me salen. Explico-> desde un archivo index.php intento enviar la variable $foo , al archivo ropa.php: Código HTML: ...
  #1 (permalink)  
Antiguo 21/10/2015, 13:40
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Problema enviar variables desde href

Hola, a veces cosas tan sencillas no me salen. Explico-> desde un archivo index.php intento enviar la variable $foo , al archivo ropa.php:

Código HTML:
<!DOCTYPE html>
<body>
<a href="ropa.php?foo=2345">Recto</a>
<a href="ropa.php?foo=9876">Talle alto</a>
</body>
</html> 
el archivo ropa.php:
Código PHP:
<!DOCTYPE html>
<head>
    <meta charset="utf-8" />
    <?php 
    
include('lib/templates/meta.php');
    require(
'lib/util/helper.php');
    require(
'configuration.php');
    
//var_dump($_GET['foo']);
    
?>
</head>
<body>
            <div class="resultados"></div>
</body>
</html>
Los archivos vinculdos son los siguientes:
archivo helper.php (consula a bd):
Código PHP:
<?php
class Helper{
public 
$foo;
public function 
get_resultados($foo){    
            
$this->dbh = new Conexion(); 
            @
$foo $_GET["foo"];//1
            
$offset 0;//2
            
$limit 30;//3
            
$sql "SELECT imagen,precio FROM ropa";
            
$sql $sql" WHERE codigo = ? ";
            
$sql $sql" ORDER BY precio ASC ";
            
$sql $sql" LIMIT ?,? ";
            
$query $this->dbh->prepare($sql);
            
$query->bindValue(1$fooPDO::PARAM_STR);             
            
$query->bindValue(2, (int) $offsetPDO::PARAM_INT); 
            
$query->bindValue(3, (int) $limitPDO::PARAM_INT);             
            
$query->execute(); 
            if(
$query->rowCount() > 0)
            {                 
                 return 
$query->fetchAll(PDO::FETCH_ASSOC);    
            }}

}
el archivo confiration.php (conexion a bd):
Código PHP:
<?php

class Conexion{    
     public function 
__construct()
    {
        
$host '127.0.0.1'
        
$dbname 'bd';
        
$user 'root';
        
$pass '';
         
$options = array(
                
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                
PDO::ATTR_EMULATE_PREPARES => false
                
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
                
PDO::ATTR_PERSISTENT => true
                
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',                 
            );
            
$this->dbh = new PDO("mysql:host=$host;dbname=$dbname;"$user$pass$options);
    }
private 
$dbh;
      public function 
prepare($sql)
    { 
        return 
$this->dbh->prepare($sql); 
    }
    } 
?>
y el archivo meta de donde se vincula el archi ajax.js
meta.php:
Código PHP:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="js/ajax.js"></script> 
y ajax.js el cual llama a un archivo datagrid.php:
Código HTML:
function advar(foo){
    $.get("lib/dinamic/datagrid.php/?foo=" + foo, function(data){
     		if(data){
            $html = "";
            	json = JSON.parse(data);
				for(datos in json.prdcts){
					$html += "<div class='row'>";
						$html += "<img class='imagen' src=" + json.prdcts[datos].imagen + ">";
						$html +=  + json.prdcts[datos].precio ;
					$html += "</div>";
				}
            $(".resultados").html("");
            $(".resultados").html($html);		
  
        }});}

$(window).on("load", function(){
    advar();
});
y el archivo datagrid.php:
Código PHP:
<?php
      
require("../../lib/util/helper.php");
      require(
"../../configuration.php");
    
$variables = new Helper();    
    @
$foo $_GET["foo"];
    
$productos $variables->get_resultados($foo);
    echo 
json_encode(array(
                    
"prdcts" => $productos
                    
));
?>
En conclusión quiero enviar la variable $foo a la consulta y que la vista sea en el archivo ropa.php, si alguien me puede ayudar le doy las gracias de antemano y saludo
  #2 (permalink)  
Antiguo 21/10/2015, 14:09
 
Fecha de Ingreso: octubre-2015
Mensajes: 12
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Si es que estas enviando un variable asi sin formulario y directamente por url, no deberiar ser $_GET, ni $_POST, deberia ser $_REQUEST, no soy experto en esto pero se muy bien que debes recoger la variable por $_REQUEST
  #3 (permalink)  
Antiguo 21/10/2015, 14:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Gracias por responder, sigue sin funcionar via $_REQUEST...

Saludos
  #4 (permalink)  
Antiguo 21/10/2015, 14:20
 
Fecha de Ingreso: octubre-2015
Mensajes: 12
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Pueba haciendo un echo de la variable aver si es que si la esta pasando y el problema es en otra parte
  #5 (permalink)  
Antiguo 21/10/2015, 14:23
 
Fecha de Ingreso: octubre-2015
Mensajes: 12
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

otra cosa, no se si es aproposito que tienes esta variable asi : //var_dump($_GET['foo']);, esa variable esta comentada y por lo tanto no servira
  #6 (permalink)  
Antiguo 21/10/2015, 14:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Hola, gracias de nuevo por responder var_dump sirve para ver si la variable/s se reciben en el archivo donde etsa var_dump, en el archivo ropa.php donde sta var_dump la variable sea por $_GET o por $_REQUEST si se recibe, esta comentada para que en el remoto caso que alguien copie el codigo la descomente y compruebe que se recibe en ese archivo.
En el archivo ropa.php si se recibe, donde no se recibe es en la consulta:
Código PHP:
$sql $sql" WHERE codigo = ? ";
//
$query->bindValue(1$fooPDO::PARAM_STR); 
gracias de nuevo y saludos
__________________
pips
  #7 (permalink)  
Antiguo 21/10/2015, 16:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 11 meses
Puntos: 25
Respuesta: Problema enviar variables desde href

Cita:
Iniciado por NickyDis19 Ver Mensaje
Si es que estas enviando un variable asi sin formulario y directamente por url, no deberiar ser $_GET, ni $_POST, deberia ser $_REQUEST, no soy experto en esto pero se muy bien que debes recoger la variable por $_REQUEST
¿? Pero... ¿Qué dices? Las variables GET son las variables que se envian por URL, ese no es el fallo.

El $_REQUEST lo único que tiene son todas las variables: $_POST y $_GET, además de las de $_COOKIE.

Fuente:
http://php.net/manual/es/reserved.variables.get.php
http://php.net/manual/es/reserved.variables.request.php

El var_dump es para debug, y depurar una variable:
http://php.net/manual/es/function.var-dump.php

Una cosa es que no seas un experto, pero otra es que no tengas ni idea...
  #8 (permalink)  
Antiguo 21/10/2015, 17:08
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 11 meses
Puntos: 25
Respuesta: Problema enviar variables desde href

En helper.php esta linea te sobra:

Código PHP:
@$foo $_GET["foo"];//1 
Es redundante, ya que en data grid se la estas enviando como parametro.

Creo que te estas haciendo un lio con el AJAX. Tu le estas pasando la variable foo, por URL, ropa.php?foo=1234

Y ropa.php lo obtiene, pero no lo obtiene el datagrid.php que ejecuta Ajax, ya que cuando haces llamas a la función javascript:
Código PHP:
$(window).on("load", function(){
    
advar();
}); 
No le estas pasando el foo que obtienes en ropa.php por Get, asi que debes hacer esto:
Código PHP:
$(window).on("load", function(){
    advar(<?php echo $_GET['foo']; ?>);
});
Lo que no entiendo porque lo estas haciendo por ajax, pero supongo que será para una funcionalidad que pienses hacer.

Espero que te sirva.
  #9 (permalink)  
Antiguo 22/10/2015, 02:13
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Hola,gracias por responder,lo he intentado y no imprime nada, aparece en la consola Uncaught SyntaxError: Unexpected token en la linea donde se encuentra advar(<?php echo $_GET['foo']; ?>); y console.log(data); no devuelve nada. Sigo intentando.
saludos y gracias

Última edición por pips; 22/10/2015 a las 02:44
  #10 (permalink)  
Antiguo 22/10/2015, 04:22
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: Problema enviar variables desde href

Haz un var_dump de todo lo que recibes por get:

var_dump($_GET);
  #11 (permalink)  
Antiguo 22/10/2015, 05:24
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Hola, gracias por responder, var_dump($_GET); en archivo ropa.php y en helper.php me muestra la variable y console.log(data); me devuelve los resultados, la variable llega a helper.php.
Intento hacer un var_dump($sql); para ver qué consulta hace y no imprime nada...
__________________
pips
  #12 (permalink)  
Antiguo 22/10/2015, 06:28
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

He probado sin ajax y funciona, asi que el problema vendrá de ajax.js el cual no procesa correctamente la variable
__________________
pips
  #13 (permalink)  
Antiguo 22/10/2015, 06:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

al pasar la variable $foo console.log(data); informa de :{"prdcts":null}
__________________
pips
  #14 (permalink)  
Antiguo 22/10/2015, 09:28
 
Fecha de Ingreso: enero-2014
Mensajes: 36
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: Problema enviar variables desde href

Entonces solucionado? En cualquier caso debe haber una explicación. Probablemente sea que estés enviando un json y tengas que hacerle un decode en php "json_decode"
  #15 (permalink)  
Antiguo 22/10/2015, 09:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Gracias por responder, no aún no muestra nada con ajax, si le quito:

Código PHP:
$sql $sql" WHERE codigo = ? "
funciona e imprimme los resultados, el problema esta en la recepcion de la varaible, me imagino que en el archivo ajax.js

gracias, saludos
__________________
pips
  #16 (permalink)  
Antiguo 22/10/2015, 10:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 169
Antigüedad: 10 años, 11 meses
Puntos: 25
Respuesta: Problema enviar variables desde href

Cita:
Iniciado por pips Ver Mensaje
Gracias por responder, no aún no muestra nada con ajax, si le quito:

Código PHP:
$sql $sql" WHERE codigo = ? "
funciona e imprimme los resultados, el problema esta en la recepcion de la varaible, me imagino que en el archivo ajax.js

gracias, saludos
Pips, por favor, explicanos un poco el funcionamiento paso a paso, de lo que quieres hacer. Es porque exactamente creo que estas usando AJAX innecesariamente.

El ajax es para cuando no queremos recargar todo el documento, y solo cargamos el elemento web que queremos, en este tu caso quieres recargar el div resultados, solamente, haciendo peticiones ajax. Pero no tiene sentido lo que estás haciendo, de pasarle las variables vía GET en la URL. Porque entonces estarías cargando la página, y no tiene sentido usar Ajax, ya que puedes imprimer directamente el resultado con PHP.

¿Por qué estas usando AJAX?
Es que por más que lo veo, me parece que estas haciendo llamadas redundantes.
  #17 (permalink)  
Antiguo 22/10/2015, 12:46
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Hola, gracias por responder.
index.php hace de menu con sus categorias, lo que quiero es que en ropa.php se imprima condicionado a la categoria que le paso ($foo); lo paso así porque luego en el archivo ropa.php utilizo paginación, ordenar por y filtros que irán via ajax y solo van a cargar en la calse "resultados".

de esta manera me funciona:

Código PHP:
class Helper
public 
$foo
public function 
get_resultados($foo){     
            
$this->dbh = new Conexion();  
            [
U][B]@$foo 'pantalones';[/B][/U]
            
$offset 0;//2 
            
$limit 30;//3 
            
$sql "SELECT imagen,precio FROM ropa"
            
$sql $sql" WHERE codigo = ? "
            
$sql $sql" ORDER BY precio ASC "
            
$sql $sql" LIMIT ?,? "
            
$query $this->dbh->prepare($sql); 
            
$query->bindValue(1$fooPDO::PARAM_STR);              
            
$query->bindValue(2, (int) $offsetPDO::PARAM_INT);  
            
$query->bindValue(3, (int) $limitPDO::PARAM_INT);              
            
$query->execute();  
            if(
$query->rowCount() > 0
            {                  
                 return 
$query->fetchAll(PDO::FETCH_ASSOC);     
            }} 


y de esta manera no
Código PHP:
class Helper
public 
$foo
public function 
get_resultados($foo){     
            
$this->dbh = new Conexion();  
            [
B][U]@$foo $_GET["foo"];[/U][/B]//1 
            
$offset 0;//2 
            
$limit 30;//3 
            
$sql "SELECT imagen,precio FROM ropa"
            
$sql $sql" WHERE codigo = ? "
            
$sql $sql" ORDER BY precio ASC "
            
$sql $sql" LIMIT ?,? "
            
$query $this->dbh->prepare($sql); 
            
$query->bindValue(1$fooPDO::PARAM_STR);              
            
$query->bindValue(2, (int) $offsetPDO::PARAM_INT);  
            
$query->bindValue(3, (int) $limitPDO::PARAM_INT);              
            
$query->execute();  
            if(
$query->rowCount() > 0
            {                  
                 return 
$query->fetchAll(PDO::FETCH_ASSOC);     
            }} 
Lo que no entiendo es que si pongo $foo='pantalones'; imprime y si paso la variable $foo via url/GET $foo=$_GET['foo']; no imprime,
Lo estoy rehaciendo de nuevo a ver si localizo el fallo, si lo soluciono lo cuelgo y si alguien lo ve antes perfecto y muy agradecido.

Saludo y gracias
  #18 (permalink)  
Antiguo 22/10/2015, 14:04
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema enviar variables desde href

Hola pips,

Creo, y solo creo, que al llamar a una variable dentro de una función, si no la has declarado global, no te la toma, me explico, estás declarando global la variable $foo, pero no le estás asignando el valor de $_GET['foo'].

Prueba si es eso, si quieres y nos cuentas...

Código PHP:
Ver original
  1. //Esto es para que no te genere errores si viene vacía o no está declarada la variable, también conviene
  2. //hacer una "limpieza" para evitar código indeseado, pero eso ya te lo dejo a ti.
  3. if ( isset($_GET['foo']) && !empty($_GET['foo']) ) {
  4. $foo = $_GET['foo'];
  5. } else {
  6. $foo = "";
  7.  
  8. class Helper{
  9. public $foo;
  10. public function get_resultados($foo){
  11. global $foo;
  12.             $this->dbh = new Conexion();  
  13.             $offset = 0;//2
  14.             $limit = 30;//3  
  15. ///////El resto de tu código

Espero que te sirva...
  #19 (permalink)  
Antiguo 22/10/2015, 14:57
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Hola rbczgz muchas gracias por responder
he colocado el codigo así:
Código PHP:
if ( isset($_GET['foo']) && !empty($_GET['foo']) ) {
$foo $_GET['foo'];
} else {
$foo "";
}
class 
Helper{  
public 
$foo;  
public function 
get_resultados($foo){ 
            global 
$foo;     
            
$this->dbh = new Conexion();
            
$offset 0
            
$limit 30
            
$sql "SELECT imagen,precio FROM ropa";  
            
$sql $sql" WHERE codigo = ? ";  
            
$sql $sql" ORDER BY precio ASC ";  
            
$sql $sql" LIMIT ?,? ";  
            
$query $this->dbh->prepare($sql);  
            
$query->bindValue(1$fooPDO::PARAM_STR);               
            
$query->bindValue(2, (int) $offsetPDO::PARAM_INT);   
            
$query->bindValue(3, (int) $limitPDO::PARAM_INT);               
            
$query->execute();   
            if(
$query->rowCount() > 0)  
            {                   
                 return 
$query->fetchAll(PDO::FETCH_ASSOC);      
            }}

console.log(data); me devuelve: {"prdcts":null} no imprime nada.... lo he vuelto a rehacer y nada...

Muchas gracias por responder y un saludo
  #20 (permalink)  
Antiguo 22/10/2015, 15:44
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema enviar variables desde href

<saludo>
Pues he copiado la estructura, pero no encuentra el archivo js.

Detallo la estructura que tengo

carpeta_raiz
/lib
/dinamic/datagrid.php
/templates/meta.php
/templates/js/ajax.js
/util/helper.php
- configuration.php
- index.php
- ropa.php

Esta todo en su sitio, o allá esta diferente?
</saludo>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #21 (permalink)  
Antiguo 22/10/2015, 15:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

hola, muchas gracias por tu tiempo

js/ajax.js
lib/dinamic/datagrid.php
lib/templates/meta.php
lib/util/helper.php

- configuration.php
- index.php
- ropa.php

ajax.js lo tengo fuera de lib, en carpeta js


saludos
__________________
pips
  #22 (permalink)  
Antiguo 22/10/2015, 16:07
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema enviar variables desde href

<saludo>
Ahora sí, en el archivo meta.php agrega esto
Código Javascript:
Ver original
  1. <script>
  2. advar(<?php echo $_GET['foo']; ?>);
  3. </script>
</saludo>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #23 (permalink)  
Antiguo 22/10/2015, 16:21
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

muchas gracias!!!, a ti te funciona?
a mi me sale Uncaught ReferenceError: 1234 is not defined y console.log(data) ->{"prdcts":null}
es que he estado tocando y retocando y no se si es por eso que no funciona

gracias de nuevo saludos
  #24 (permalink)  
Antiguo 22/10/2015, 16:23
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

Ya estaaaaaa!!! me faltaban unas comillas en

<script> advar('<?php echo $_GET['foo']; ?>');
</script>

eres un crack!!!!!!!!

MUchas muchas graciaasss!!!
__________________
pips
  #25 (permalink)  
Antiguo 22/10/2015, 16:25
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema enviar variables desde href

Saludo

¡Por su pollo que me funciona!

Ese mensaje pareciera como sí ese código de ropa no existiera,
pasa con todas las referencias?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #26 (permalink)  
Antiguo 22/10/2015, 16:29
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Problema enviar variables desde href

algunas son alfanumericas y le daba a una alfanumerica con guiones y no enganchaba. lo doy por solucionado !! y de nuevo muchas gracias!!
__________________
pips

Etiquetas: pdo, variablesphp
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 20:56.