Foros del Web » Programando para Internet » PHP »

Variables

Estas en el tema de Variables en el foro de PHP en Foros del Web. Como hago para que PHP me devuelva todas las variables que tengo definidas en formato para enviarlo por GET es decir: Código PHP: $nombre  =  ...
  #1 (permalink)  
Antiguo 24/07/2004, 06:03
Avatar de kesthers  
Fecha de Ingreso: mayo-2004
Ubicación: Valencia
Mensajes: 358
Antigüedad: 19 años, 11 meses
Puntos: 2
Variables

Como hago para que PHP me devuelva todas las variables que tengo definidas en formato para enviarlo por GET es decir:

Código PHP:
$nombre "Esther";
$edad "18";
$pais "Spain"
Tendria que devolver:
Código:
nombre=Esther&edad=18&pais=Spain
Pero esto automaticamente ya que tengo muchas varibles y no me apetece hacerlo a mano.

Nota: Las variables estan definidas no se envian a traves de formulario.

Gracias
  #2 (permalink)  
Antiguo 24/07/2004, 08:35
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
Pero que tipo de variables son?
Estan dentro de algun array? (Esto facilitaria enormemente lo que quieres hacer...)
Forman parte de alguna clase? (variables de instancia)
  #3 (permalink)  
Antiguo 24/07/2004, 08:59
Avatar de kesthers  
Fecha de Ingreso: mayo-2004
Ubicación: Valencia
Mensajes: 358
Antigüedad: 19 años, 11 meses
Puntos: 2
Son variables como las que escribi en el ejemplo.

Aunque si es mas facil podria ponerlas en un array.

Gracias
  #4 (permalink)  
Antiguo 24/07/2004, 09:17
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
Hace un tiempo, para probar con la POO en PHP, hice una clase para gestionar los enlaces que puede que te sirva.

Tiene un metodo para añadir variables al objeto, y despues metodos para expandir todas estas variables en una url.

Supongo que si la modificas un poco, se puede adaptar a lo que quieres.

No se pueden adjuntar archivos a los posts?
  #5 (permalink)  
Antiguo 24/07/2004, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
xavivars

abajo en el foro (pié de página) que te sale en:
"Reglas de Mensaje" (si dice "Tú no puedes adjuntar archivos" ..) ya sabes. En tal caso sería bueno simplemente que pegases el código de tu classe (usa el botón "php" para que quede mejor).

Un saludo,

PD: Si puedes adjuntar archivos .. avisame para validar el archivo ..
  #6 (permalink)  
Antiguo 24/07/2004, 09:41
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
No, no puedo adjuntar archivos :S

Código PHP:
<?php
/**
 * GestioURL - PHP control d'enllaços url
 * @author Xavier Ivars i Ribes
 * @email [email][email protected][/email]
 * @copyright 2004 Xavier Ivars i Ribes
 */


class GestioURL
{

    
/////////////////////////////////////////////////
    // VARIABLES PRIVADES
    /////////////////////////////////////////////////

    
var $url="";
    var 
$href=true;
    var 
$variables= array();
    var 
$afegit=0;
    var 
$name="";
    var 
$classe="";
    var 
$id="";
    var 
$target="";
    var 
$onmouseover="";
    var 
$onmouseout="";
    var 
$onclick="";
    var 
$cadena_variables="";


    
/////////////////////////////////////////////////
    // METODES PUBLICES
    /////////////////////////////////////////////////

    /*
     * Constructor.
     * Funció que es crida automàticament 
     * al fer $variable=new GestioURL
     * Pot portar un paràmetre, que li donarà 
     * un nom intern a l'enllaç.
     * Per defecte, no té nom concret.
     */
    
function GestioURL($cad="")
    {
        
$this->name=$cad;
        
$this->reset_url();
    }


    function 
clean()
    {
        
$this->reset_url();
        
$this->variables='';
        
$this->afegit=0;
        
$this->name="";
        
$this->classe="";
        
$this->id="";
        
$this->target="";
        
$this->onmouseover="";
        
$this->onmouseout="";
        
$this->onclick="";
        
$this->cadena_variables="";
        
$this->href=true;
    }


    function 
canviar_url($string)
    {
        
$this->url=$string;
        return;
    }

    function 
reset_url()
    {
        
$this->url=$_SERVER['PHP_SELF'];
        return;
    }

    function 
afegir_var($nom,$valor)
    {
        
$this->afegit=true;

        
$this->variables[$nom]=$valor;
        return;
    }

    function 
borrar_var($nom)
    {
        unset(
$this->variables[$nom]);
    }
    
    function 
obtenir_variables()
    {
        
$primer=true;
        if(
$this->afegit)
        {
            
ksort($this->variables); // PIJAETA
            
$this->cadena_variables="?";
            foreach(
$this->variables as $nom => $valor)
            {
                if(!
$primer)
                    
$this->cadena_variables.="&amp;";
                else
                    
$primer=false;

                
$this->cadena_variables.="$nom=$valor";
            }
        }
        return 
$this->cadena_variables;
    }

    function 
propagar_get()
    {
        foreach(
$_GET as $nom => $valor)
        {
            
$this->afegir_var($nom,$valor);
        }
        return;
    }

    function 
propagar_de_get($var)
    {
        if(isset(
$_GET[$var]))
            
$this->afegir_var($var,$_GET[$var]);
    }

    function 
canviar_class($nova)
    {
        
$this->classe=$nova;
    }    

    function 
canviar_id($nova)
    {
        
$this->id=$nova;
    }    

    function 
canviar_target($nou)
    {
        
$this->target=$nou;
    }    

    function 
canviar_onmouseover($nova)
    {
        
$this->onmouseover=$nova;
    }    

    function 
canviar_onmouseout($nova)
    {
        
$this->onmouseout=$nova;
    }

    function 
canviar_onclick($nova)
    {
        
$this->onclick=$nova;
    }

    function 
status($text)
    {
        
$text=addslashes($text);
        
$this->onmouseout="javascript:window.status=''";
        
$this->onmouseover="javascript:window.status='$text';return true;";

    }    

    function 
obrir_url()
    {
        
$this->obtenir_variables();
        
$obrir="<a ";

        if(
$this->classe!="")
            
$obrir.="class=\"".$this->classe."\" ";
        if(
$this->id!="")
            
$obrir.="id=\"".$this->id."\" ";
        if(
$this->target!="")
            
$obrir.="target=\"".$this->target."\" ";
        if(
$this->onmouseover!="")
            
$obrir.="onmouseover=\"".$this->onmouseover."\" ";
        if(
$this->onmouseout!="")
            
$obrir.="onmouseout=\"".$this->onmouseout."\" ";
        if(
$this->onclick!="")
            
$obrir.="onclick=\"".$this->onclick."\" ";
        if(
$this->href)
            
$obrir.="href=\"".$this->url.$this->cadena_variables."\" ";

        
$obrir.=">";
        return 
$obrir
    }

    function 
tancar_url()
    {
        return 
"</a>";
    }

    function 
form()
    {
        foreach(
$this->variables as $nom=>$valor)
        {
            echo 
"<input type=\"hidden\" name=\"$nom\" value=\"$valor\" />\n";
        }
    }
}
?>
Lo que me falta por hacer es una buena documentacion...
  #7 (permalink)  
Antiguo 24/07/2004, 09:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo ideal sería trabajar tus variables en un array asociativo:

Código PHP:
$pais="francia";
$varibles=array("nombre"=>"pepe","pais"=>$pais); 
así podrás hacer

Código PHP:
$url="nose.php?";
foreach (
$variables as $variable=>$valor){
   
$url .= $variable."=".$valor."&";
}
echo 
$url
El ejemplo básico dejaría un & de más al final (habría que controlarlo).

Reflexión:
Ahora .. la pregunta es "valdrá la pena"? .. Te lo comento por qué si igualmente vas a tener que "hacer" ese array para luego poder aplicar la función/código que usas .. Tu veras si te vale la pena ..

El otro detalle sería:
¿Por qué tantas variables debes propagar por el URL?. En muchas ocasiones eso sucede por qué tal vez obtengas esos datos de una BD o similar y quieres "presenarlos" o trabajar esos datos en sí en otra página. Bien, para estos casos simplemente lo que debería propagar en el URL sería poco más que "Identificadores" de ese registro de donde salieron esos datos (ID por ejemlo) y como mucho variables de "filtrado" si es que se trata de hacer algun listado (consulta) de bajo esas condiciones). Esto entre otras cosas te hace más seguro tu aplicación .. esos datos que viajan por el URL podrían ser fácilmente alterables ..

Un saludo,
  #8 (permalink)  
Antiguo 24/07/2004, 09:46
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
Mas o menos la clase se basa en arrays asociativos, lo unico que también implementa la gestion de todos los parametros que puede tener el tag <a> de HTML.

Tiene metodos para propagar variables de $_GET (todas o alguna en concreto), y mas cosas
  #9 (permalink)  
Antiguo 24/07/2004, 09:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
xavivars

Te faltó un ejemplo de uso ..

(Recuerda que nuestro compañero decía que las variable no las propagaba en GET/POST .. etc sino que són variables que genera en su própio script (no externas) .. No obstante partes de tu classe seguro que le ayudarán y en conjunto (con el ejemplo) a alguien más le servirá.

Un saludo,
  #10 (permalink)  
Antiguo 24/07/2004, 09:56
Avatar de kesthers  
Fecha de Ingreso: mayo-2004
Ubicación: Valencia
Mensajes: 358
Antigüedad: 19 años, 11 meses
Puntos: 2
El motivo de pasarlo por url es que voy a usarlo por sockets.
  #11 (permalink)  
Antiguo 24/07/2004, 10:36
Avatar de xavivars  
Fecha de Ingreso: enero-2002
Ubicación: Benissa - la Marina Alta
Mensajes: 212
Antigüedad: 22 años, 3 meses
Puntos: 1
Cierto, ahi va el ejemplo
Código PHP:
<?php
     
include('class.gestiourl.php');

     
$nombre='pedro';
     
$apellido='garcia';

     
$url= new GestioURL();

     
$url->afegir_var('nombre',$nombre);

     
$url->afegir_var('apellido',$apellido);

     
$url->canviar_url('destino.php');

     echo 
$url->obtenir_variables(); // Mostraria  "?nombre=pedro&apellido=garcia"

     
echo $url->obrir_url(); // Mostraria  '<a href="destino.php?nombre=pedro&apellido=garcia">'
?>
Este es un ejemplo muy sencillo, en el que no se usan con toda su potencia los métodos obrir_url() (gestion del tag <a>) ni el form() (gestion del tag <form>)

Última edición por xavivars; 24/07/2004 a las 10:40
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 07:24.