Foros del Web » Programando para Internet » PHP »

Uso del (!)

Estas en el tema de Uso del (!) en el foro de PHP en Foros del Web. para que sirve la admiracion ( ! ) que veo muchas veces en if? Si la respuesta puede ser detallada mejor. Gracias...
  #1 (permalink)  
Antiguo 06/11/2003, 11:08
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
Uso del (!)

para que sirve la admiracion (!) que veo muchas veces en if?
Si la respuesta puede ser detallada mejor.
Gracias
  #2 (permalink)  
Antiguo 06/11/2003, 11:20
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Hola. La admiración o signo de exclamación se utiliza para negar el valor de una variable o una función. Me explico, si tienes una variable que puede tomar dos valores (verdadero o falso) será algo así:

$variable=1 (verdadero) o $variable=0 (falso)

Ahora bien si tu quieres que se ejecute codigo p. ejem cuando el valor de $variable es 1 haces lo siguiente:

Código PHP:
if ($variable)  //se asume $variable==1
     
{
        ...
       } 
Si deseas ejecutar codigo cuando el valor sea 0:

Código PHP:
if (!($variable))  //se asume $variable==0
     
{
             .....
    } 
Esto es porque la condición del IF debe ser SIEMPRE verdadera para que pueda ejecutarse lo que está a continuación, como en el segundo caso $variable==0, al anteponer (!) transformas el valor de la condición en 1 (NO SE MODIFICA EL VALOR DE $VARIABLE, SOLO EL VALOR DE LA CONDICION) y por lo tanto SIEMPRE que tu valor sea 0 ejecutarás el código que está a continuación.

Saludos
  #3 (permalink)  
Antiguo 06/11/2003, 11:24
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
seria lo mismo que si usar la admiracion, lo pusieramos en else, i en if nada?
O sea quiero decir que lo que se ejecutaria si el valor fuese nulo usando admiracion, poniendolo en else sin admiracion seria lo mismo no? I aparte de esto, si kiero ke una pagina cargue un formulario dependiendo si antes ha estado enviad, seria poner la admiracion seguido del nombre de la variable, i si la variable en cuestion no tiene nada dentro se considera nulo por tanto se ejecutaria?
  #4 (permalink)  
Antiguo 06/11/2003, 11:40
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Haber, vamos por parte. Primero debe quedarte algo muy claro la condición de un IF o un While o cualquier sentencia de control o ciclo iterativo, para que pueda ejecutarse DEBE SER SIEMPRE VERDADERA. Con esto quiero decir que si tu deseas que "algo se ejecute" cuando los valores de la condición sean falsos o sean lo contrario de lo que tu esperas como resultado debes anteponer ! a esas condiciones (de esta forma será verdadera la condición). Para el ejemplo del if ... else

Código PHP:
IF ($variable)  //cuando esto es verdad
 
{ .... }
IF (!(
$variable)) //cuando esto es verdad
 
{ ... } 
es lo mismo que
Código PHP:
IF ($variable)
 {...}
else
 { ... } 
, pero ojo cuando utilices else, pues tu podrías querer especificar con exactitud (como en el primer ejem.) que deseas ejecutar código para la variable negada

Para cargar un formulario si has enviado una página, por lo que entiendo te refieres a ejecutar el el código dado por la llamada al archivo en el "action=algo.php" del form. En este caso en el form tu tienes una variable <input name="enviar" type="button" value="subir">. si quieres ejecutar el código solo cuando se ha presionado el boton enviar tu archivo algo.php debería decir una cosa asi:

Código PHP:
if ($_POST["enviar"]=="subir")
{
    
ejecutar el codigo
}
else
{
   
error

o que es lo mismo

Código PHP:
if ($_POST["enviar"]=="subir")
{
    
ejecutar el codigo
}
if (
$_POST["enviar"]!="subir"// != significa distinto
{
   
error

Ojala q esto aclare tus dudas
Saludos

Última edición por heraldex; 06/11/2003 a las 11:42
  #5 (permalink)  
Antiguo 06/11/2003, 11:46
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
Lo explicas bien pero refiriendo al formulario, keria decir ke si al poner la admiracion en la variable $_post, solo se ejecutaria si la variable no contiene nada ya que no se ha ejecutado el form?
Comprendes?
O sea que si no se ha ejecutado el form la variable $_post no tiene nada por tanto se ejecutara el if con admiracion, pero si la variable Spost contiene algo se ejecutara lo del esle no?
  #6 (permalink)  
Antiguo 06/11/2003, 11:52
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Se a lo que te refieres y me parece que lo q debes hacer es lo siguiente:

archivo form.php:

Código PHP:
if (isset($_POST["variable_form"])) //si el formulario se envio
{
  
ejecutar contenido de form.php
}
//si el formulario no se envio presionando el boton de enviar p.ej
else //es lo mismo aqui poner if (!isset($_POST["variable_form"]))
{
  
enviar a otra pagina

  #7 (permalink)  
Antiguo 06/11/2003, 11:52
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
pongo el codigo ke usaria, a ver si es correcto:
Código PHP:
<?php
if (!($_POST)) {
Aki se ejecutaria el formulario ya que se ke no se a ejecutado antes porke post esta vacia
}
else {
Muchas graciassu formulario ha sido enviado
}
Entendeis?
  #8 (permalink)  
Antiguo 06/11/2003, 11:54
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
El isset ese pa que sirve? i que tiene ke ver el boton submit?
  #9 (permalink)  
Antiguo 06/11/2003, 13:13
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Haber de nuevo, y me parece q todavia tienes alguna confusion que va mas alla de la utilidad de !. Trataré de explicarte.
Cuando tu envias una variable desde un formulario (por ejem. la variable que corresponde al boton de envío: <input type=submit name=enviar value=1>) para que puedas acceder a la variable, que en este caso se llama enviar, dentro del archivo algo.php la debes acceasr mediante la instruccion $_POST["enviar"] o $enviar dependiendo de la configuracion de tu PHP, de manera que :

if (!($_POST))
debe escribirse como if (!($_POST["enviar"]))

($_POST[] es una variable superglobal de PHP y debes ocuparla de esa forma).

Ahora, volviendo al <input> de mas arriba, cuando presionas el boton de envio la variable "enviar" toma valor 1 y eso indica q enviaste el formulario, entonces para detectar este echo debes escribir:

Código PHP:
 if ($_POST["enviar"]) 
(recuerda que enviar vale 1)

si el formulario tratas de accesarlo sin presionar el boton enviar por ejemplo la sintaxis deberia ser:
Código PHP:
 if (!($_POST["enviar"])) 
("enviar" tiene cualquier valor).

En forma alternativa las dos instrucciones anteriores las puedes escribir como:
Código PHP:
if ($_POST["enviar"]==1)
{
ejecutar el formulario}
else 
// o if ($_POST["enviar"]!=1)
 
hacer otra cosa
Con respecto a la función isset() es la tercera y, a mi parecer. la forma correcta de hacerlo. La función isset($var) devuelve verdadero (ó 1) si la variable $var ha sido seteada en algún valor, devuelve falso (ó 0) en caso constrario. Para oucparla con tus forms y chequear cuando un formulario ha sido enviado la debes ocupar como sigue:

Código PHP:
if (isset($_POST["enviar"])) //si la variable "enviar" ha tomado algun valor o sea si has pinchado el boton de envio de tu form
{
  
ejecutar algo
}
else 
//o if (!isset($_POST["enviar"])), si la variable "enviar no ha tomado ningún valor o el formulario se está tratando de enviar sin presionar el botón de envío"
{
   
indicar un error
}

Para concluir te puedo decir que el símbolo [B]![/Blo puedes aplicar a funciones o valores de variables que puedan retornar solo dos tipos de valores (verdadero==1 o falso==0para evaluar cuando una variable que guarda un string esta o no vacia debes ocupar otras funcionesTe recomiendo que investigues un poco más a fondo los operadores lógicos de PHP para que te quede más clarocreo que en las FAQ de este foro puedes encontrar algo.

Espero haberte ayudadocualquier cosa solo postea y alguien te responderá.

Saludos
Heraldex 
  #10 (permalink)  
Antiguo 06/11/2003, 13:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
escampa ..y que tiene que ver el botón submit? xD ..

Para PHP es una simple variable más de tantas que puedes pasar por tu formulario.

El isset() (www.php.net/isset) te sirve para comprobar la existencia o no de una variable (de cualquier tipo .. normales o arrays ..) Y es lo que deberías usar. Tambien tienes empyt() para ver si ademas de estar definida tu variable .. tiene valor (distinto de NULL '' o cero )

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 06/11/2003, 14:01
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
Ah o sea el isset te dice se ha recogido algun voler, entnces si pongo la admiracion con el isset es la forma de comprobar si el formulario ha sido enviado.
Muchas gracias o sea seria:
Código PHP:
<?php
if(!isset($_post["aki cualkier name de una varaible del formulario"])) {
/*Aqui hemos comprobado que post no tiene valor, i en caso de que no lo tenga mostrara lo de las llaves*/
Aqui va el formulario
};
else {
aki el contenido de agradecimiento pro aver completado el form
};
?>
Esta la cosa correcta así?
  #12 (permalink)  
Antiguo 06/11/2003, 14:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm exactamente no .. isset() dice "si está creada o no" .. pero no mira su valor .. eso lo haces tu a continuación de comprobar si exite o bien usas empyt() que te dice eso justamente "existe y con valor .. sino da un "false" ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 06/11/2003, 14:38
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Si lo que tu quieres es mostrar el formulario todas las veces que no se hallan ingresado datos o cuando no se presiona el boton enviar, entonces esta Bien.

Pero recuerda.
<form name="formulario" action="algo.php" method="post">
.......
<input type=submit name=enviar value=1></form>


el contenido de algo.php debería ejecutarse SIEMPRE y cuando presiones el boton de envio, luego tu codigo php debera "hacer algo" si se presiono el boton y "mostrar el formulario de nuevo" si no se ha presionado (o sea si la variable name es vacia)

Saludos
  #14 (permalink)  
Antiguo 06/11/2003, 16:11
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
heraldex pero el arxivo es el mismo, o sea el mismo arxivo ke contiene el form, envia el form i t da las gracias dependiendo de si a encontrao las variables, respresenta que el ya capta si las tiene i si las tiene te lo agradece i si no las tiene te mete el form pa ke les des los valores.
  #15 (permalink)  
Antiguo 06/11/2003, 16:33
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Bueno en realidad da lo mismo si es el mismo archivo, o estas llamando a otro, el método sigue siendo igual, en todo caso el tema ya para otro lado distinto de tu pregunta inicial q era el uso de (!). Si quieres postea otro mensaje con una nueva pregunta para q te quede mas claro, aunque a mi parecer
ya lo tienes claro.

saludos
  #16 (permalink)  
Antiguo 06/11/2003, 16:38
 
Fecha de Ingreso: octubre-2003
Ubicación: Delante del PC
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 1
Muchas gracias Heraldex i cluster.
Me habeis sido de gran ayuda.
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 18:12.