Foros del Web » Programando para Internet » PHP »

sobre isset ..

Estas en el tema de sobre isset .. en el foro de PHP en Foros del Web. hola, queria que me aclaraseis para que sirve la funcion isset, porque no estoy seguro. Me gustaria poner el ejemplo de un if.. Código PHP: ...
  #1 (permalink)  
Antiguo 12/02/2003, 14:33
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta sobre isset ..

hola, queria que me aclaraseis para que sirve la funcion isset, porque no estoy seguro. Me gustaria poner el ejemplo de un if..
Código PHP:
<?php
if(isset($nombre))
{
echo 
"hola $nombre";
}
else
{
?>
Inserte su nombre
Aqui formulario con el campo de texto nombre
<?php
}
?>
En este ejemplo que aria exactamente el isset ese? No aria lo mismo que sin el isset?
O bueno tb si meto el formulario fuerda el else, y si la variable $nombre no existe, el isset hace que se salte el if y el else?
Alomejor en el codigo hay algun fallillo, pero lo eh echo asi rapidillo
Gracias
  #2 (permalink)  
Antiguo 12/02/2003, 14:47
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
isset() sirve para ver si una variable ha sido definida o no.

ejemplo.php
Código PHP:
if (isset($hola)) {echo $hola;} else {echo "adios";} 
Si llamo a ejemplo.php desde el navegador sin pasarle ningún parámetro, me devolverá:
Cita:
adios
Pero si llamo: ejemplo.php?hola=hola
Me devuelve:
Cita:
hola
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 12/02/2003, 14:51
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
Entonces en ese ejemplo si quitas el isset aria la misma funcion, ¿ o no ?
  #4 (permalink)  
Antiguo 12/02/2003, 14:58
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Pues no lo sé, teóricamente no tiene porqué hacer lo mismo.

Si la variable no está definida, hacer:

if($var) { tal cosa }

Equivale a hacer

if() { tal cosa }


Pero puede que para PHP las variables sean booleanas en sí mismas, será cuestión de probarlo
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 12/02/2003, 15:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si en el ejemplo se usa:

nose.php?variable=

un isset() dirá q está definida . pues así lo está (siempre q se use register_globals a ON .. recuerden usar $_GET['variable'] o los arrays asociados correspondientes).

Para ver si una variabel tiene o no valor ademas de estar definida pueden emplear:

empty() .. o el clasico $variable == "" ..

Lo de las variables q se asumen como booleanos .. No se la teória al respecto ..pero si la variable no es estricatamente Booleana (oses .. q devuelva TRUE o FALSE) NO deberia de emplearse así .. (a mi personalmente me lian "codigos" que usan esa estructura o asumen eso ...)

Un saludo,
  #6 (permalink)  
Antiguo 12/02/2003, 15:08
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
Ya tengo la solucion
Código PHP:
<?php
if(isset($nombre))
{
echo 
"hola $nombre";
}
else
{
?>
Inserte su nombre
Aqui formulario con el campo de texto nombre
<?php
}
?>
Si no estubiera el isset, enve de mostrarme el else, al abrir ese script saldra "hola" , pero con el isset no puede estar la variable $nombre sin nada, jejeje
De todos modos, gracias Cain.
Alomejor te lo e aclarado ati tambien eh XDDD
  #7 (permalink)  
Antiguo 12/02/2003, 15:10
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
UUPPSS, cuando encontre la solucion vine a contarlo tan rapido, que no me di cuenta de que cruster me abia respondido, es mas, antes no avia recargado la pagina y no salia el cruster, jejeje, Gracias a ti tb cruster
  #8 (permalink)  
Antiguo 12/02/2003, 15:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129


Código PHP:
if (isset($nombre)) {
echo 
"Está definida... Hola $nombre";
} else {
echo 
"NO Está defindia";
}
?>
usandolo:
nose.php?nombre=

(suponiendo como digo antes q usas register_globasl a ON)

Y probastes lo q te decía acerca de q una cosa es q esté definida la variable y otra q tenga valor ..?

que te dá el ejemplo q pongo aquí ?

Un saludo,
  #9 (permalink)  
Antiguo 12/02/2003, 15:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. lo q tendrias q usar como ya te comenté antes es empty()

Código PHP:
if (!empty($nombre)) {
echo 
'Está definida... Y el valor es: '.$nombre;
} else {
echo 
"NO Está defindia o el valor es NULLo";

Un saludo,
  #10 (permalink)  
Antiguo 12/02/2003, 15:28
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
Si ya lo entiendo, cuando vine tan emocionado con la respuesta antes era porque ya lo entendi :) , de todas maneras te respondo:
si lo ejecuto me sale :NO Está defindia
y si ejecuto pagina.php?nombre=joputa :Está definida... Hola joputa
Gracias Cluster
Aber si te pasas por php_para_torpes , que a crecido desde la ultima vez que te vi alli
Graciasss
  #11 (permalink)  
Antiguo 12/02/2003, 15:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

joputa (vaya nick), ¿has probado a llamar a tu script con script.php?nombre= ? Es decir sin dar valor a nombre (o valor nada).

Y sobre lo de usar variables como booleanos. PHP espera que la expresion que esta donde se ponen las condiciones en los if devuelva un valor booleano. Si no es un booleano, el implicitamente hace un casting (conversion de tipos). Asi, si una variable no esta definida (isset($nombre) igual a false), para PHP esa variable devuelve NULL (hace mas cosas, luego lo cuento). Como NULL no es booleano, hace el casting. NULL se convierte a FALSE. Por lo que la condicion falla.

¿Os acordais que os dije que PHP hace algo mas que suponer NULL cuando encuentra una variable no definida? Pues lo que hace es generar una Notice (el nivel menos grave de los mensajes de error de PHP). Mucha gente tiene configurado PHP para que no muestre los Notice.

Cluster, ¿como dices que te lian los codigos que usan las variables como booleanas cuando no lo son? Te suena este codigo:
Código PHP:
while ($row=mysql_fetch_array($result))
{
  ...

¿verdad? Pues en teoria te deberia "liar", ya que "supone" que la expresion $row=mysql_fetch_array() devuelve un booleano, cuando solo es cierto cuando no hay mas registros que leer. La forma "completa" seria:
Código PHP:
while (FALSE!==($row=mysql_fetch_array($result)))
{
  ...

si no me equivoco. Esta forma me parece un poco mas "liosa".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 12/02/2003, 15:38
 
Fecha de Ingreso: febrero-2003
Mensajes: 47
Antigüedad: 21 años, 2 meses
Puntos: 0
De acuerdo

Gracias josemi por la esplicacion
El nick... pues esque no recuerdo el password de mi nick , y registre uno rapido ( casi todos los que ponian estaban registrados ) y puse joputa xDD.
Gracias a todos
  #13 (permalink)  
Antiguo 12/02/2003, 15:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No no .. josemi .. ese ejemplo no me lia .. Pero no me lia porque uso una función y se q me devuelve algo hasta q me da un FALSE cuando no hay mas registros .. Pero eso lo veo en la definicion de esa funcion ...

a mi lo q me lia es:

if ($variable){

Así simplemente . pero ahora con la teoria ya me queda claro q es si no está definida será FALSE ..

Osease .. q por el "desconocimiento" me hacia dudar y por eso ante la duda voy a lo seguro: isset() o empty() .. segun corresponda ..

Un saludo,
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 00:12.