En este post voy a tratar de explicar como enviar y leer variables con los métodos $_POST y $_GET de PHP. Antes de nada deciros que tiene relación con los posts: problemas que surgen al recargar div contenedor y código PHP y javascript para redireccionar a otra página. Podéis echarle un vistazo si queréis. También está relacionado con la página del taller de mecánica que le he hecho a un amigo.
Bueno, vamos al grano. En un post anterior ya comenté como, mediante el método load() de jQuery, enviábamos una variable a una página y la recogíamos con el método $_POST en PHP. Ahora voy a comentar como enviar una variable con el método $_GET y recogerla usando javascript. La siguiente línea, perteneciente al código que os comentaba del anterior post, nos puede ayudar:
<?php
if (!isset($_POST['primera']))echo "<SCRIPT>location.href='index.html?pag=2';</SCRIPT>";
?>
Como podéis ver, el anterior código combina PHP y javascript para redireccionar a otra página enviando, mediante el método $_GET, una variable a la página solicitada ('pag=2'). Como sabéis, enviando '?nombrevariable=loquesea' al final de la url, la variable y su valor lo tenemos que recoger en la página solicitada con el método $_GET de PHP, pero, en este caso lo vamos a hacer en javascript, ¿como?. Primero, escribiendo (o copiando) el siguiente código javascript entre los <head> de nuestra página (código que encontré por ahí, todo hay que decirlo):
<script type="text/javascript">
(function(){
var $_GET = function (param) {
var delimiter = "?";
var separator = "&";
var url = location.href;
var get_exists = (url.indexOf(delimiter) > -1) ? true : false;
if (get_exists) {
var url_get = {};
var params = url.substring(url.indexOf(delimiter)+1);
var params_array = params.split(separator);
for (var i=0; i < params_array.length; i++) {
var param_name = params_array[i].substring(0,params_array[i].indexOf('='));
var param_value = params_array[i].substring(params_array[i].indexOf('=')+1);
url_get[param_name] = param_value;
}
return (param !== undefined && !!url_get[param]) ? url_get[param] : url_get;
}
return false;
}
window.$_GET = $_GET();
})();
</script>
Para los que saben javascript (y los que no lo sabemos) no me voy a extender mucho explicando este script. Sólo decir que lo que hace es agregar la variable $_GET al objeto window y poder usarla después igual que en PHP. Por ejemplo del siguiente modo:
var cargadiv=function(){
if ($_GET['pag']){ // si nos devuelve 'true' se ejecuta lo siguiente:
var npag=$_GET['pag'];//obtenemos en npag el valor de pag
var href="index-"+npag+".php";//href contiene ahora el nombre de la página
$("#content").fadeOut(500,function(){//hacemos desaparecer el div 'content' y, cuando desaparezca ejecutamos la siguiente linea
$("#content").load(href,{primera:"no"}).fadeIn(700);//hacemos aparecer el div 'content' con el nuevo contenido (la página cuyo nombre contiene href y a la cual enviamos la variable 'primera' con el valor 'no' )
});//fin de fadeOut
};//fin de if
}//fin de function (cargadiv)
Esta función la tengo, junto con otras, en un archivo aparte con la extensión .js y la llamo, después, en la página, si la necesito.
Bueno, vamos al grano. En un post anterior ya comenté como, mediante el método load() de jQuery, enviábamos una variable a una página y la recogíamos con el método $_POST en PHP. Ahora voy a comentar como enviar una variable con el método $_GET y recogerla usando javascript. La siguiente línea, perteneciente al código que os comentaba del anterior post, nos puede ayudar:
<?php
if (!isset($_POST['primera']))echo "<SCRIPT>location.href='index.html?pag=2';</SCRIPT>";
?>
Como podéis ver, el anterior código combina PHP y javascript para redireccionar a otra página enviando, mediante el método $_GET, una variable a la página solicitada ('pag=2'). Como sabéis, enviando '?nombrevariable=loquesea' al final de la url, la variable y su valor lo tenemos que recoger en la página solicitada con el método $_GET de PHP, pero, en este caso lo vamos a hacer en javascript, ¿como?. Primero, escribiendo (o copiando) el siguiente código javascript entre los <head> de nuestra página (código que encontré por ahí, todo hay que decirlo):
<script type="text/javascript">
(function(){
var $_GET = function (param) {
var delimiter = "?";
var separator = "&";
var url = location.href;
var get_exists = (url.indexOf(delimiter) > -1) ? true : false;
if (get_exists) {
var url_get = {};
var params = url.substring(url.indexOf(delimiter)+1);
var params_array = params.split(separator);
for (var i=0; i < params_array.length; i++) {
var param_name = params_array[i].substring(0,params_array[i].indexOf('='));
var param_value = params_array[i].substring(params_array[i].indexOf('=')+1);
url_get[param_name] = param_value;
}
return (param !== undefined && !!url_get[param]) ? url_get[param] : url_get;
}
return false;
}
window.$_GET = $_GET();
})();
</script>
Para los que saben javascript (y los que no lo sabemos) no me voy a extender mucho explicando este script. Sólo decir que lo que hace es agregar la variable $_GET al objeto window y poder usarla después igual que en PHP. Por ejemplo del siguiente modo:
var cargadiv=function(){
if ($_GET['pag']){ // si nos devuelve 'true' se ejecuta lo siguiente:
var npag=$_GET['pag'];//obtenemos en npag el valor de pag
var href="index-"+npag+".php";//href contiene ahora el nombre de la página
$("#content").fadeOut(500,function(){//hacemos desaparecer el div 'content' y, cuando desaparezca ejecutamos la siguiente linea
$("#content").load(href,{primera:"no"}).fadeIn(700);//hacemos aparecer el div 'content' con el nuevo contenido (la página cuyo nombre contiene href y a la cual enviamos la variable 'primera' con el valor 'no' )
});//fin de fadeOut
};//fin de if
}//fin de function (cargadiv)
Esta función la tengo, junto con otras, en un archivo aparte con la extensión .js y la llamo, después, en la página, si la necesito.
Comentarios
Publicar un comentario