Foros del Web » Programando para Internet » PHP »

Evitar error al no definir variable

Estas en el tema de Evitar error al no definir variable en el foro de PHP en Foros del Web. Hola, estoy haciendo un pequeño ejercicio en php, ya que estoy comenzando a entender las variables y los array, bueno emm... Mi codigo trata de ...
  #1 (permalink)  
Antiguo 20/12/2011, 22:28
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Evitar error al no definir variable

Hola, estoy haciendo un pequeño ejercicio en php, ya que estoy comenzando a entender las variables y los array, bueno emm...

Mi codigo trata de lo siguiente,

Quiero que desde un formulario con un textfield, se pueda agregar una opcion al menu, que aparece en la misma pagina, este es el codigo :

Código PHP:
<?php

$mes1
=$_POST["mes1"];

$meses[0]="$mes1";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";
?>

<p>
  <select name="combo">
    <option value="0">Seleccione el mes</option>
    
    <?php
for ($z=0;$z<count($meses);$z++)
{
?>
    <option value="<?php echo $meses[$z]?>" title="<?php echo $meses[$z]?>">
    <?php echo $meses[$z]?>
    </option>
    <?php
}

?>
    
  </select>
  
</p>

<form id="form1" name="form1" method="post" action="cinco.php">
  <label for="textfield">Ingrese el mes</label>
  <input type="text" name="mes1" id="textfield" />
  <input type="submit" name="submit" id="button" value="Enviar" />
</form>
Problemas:

1.- Como no hay nadie en la variable $mes1 dado a que ésta será llenada por el usuario a travez del textfield, me muestra el error diciendo que no hay una variable definida (quiero evitar ese error)

2.- En el select aparece la primera opcion en blanco, esperando a que se sea llenada por el usuario (quiero evitar que quede en blanco)

Eso necesito saber como hacerlo, porfavor... :)
__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #2 (permalink)  
Antiguo 20/12/2011, 22:39
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Evitar error al no definir variable

Hola. Si pones una condición antes de usar la variable te evita que salte el error cuando la variable no esté definida. Así:

Código PHP:
Ver original
  1. if(isset[$variable]){
  2.     //hago algo con la $variable
  3. }

Solo se hace algo si la variable está definida.

Saludos
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #3 (permalink)  
Antiguo 20/12/2011, 22:51
 
Fecha de Ingreso: diciembre-2007
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Evitar error al no definir variable

como te dice jorge encierra tu codigo en un condicional y para que no te salga ningun error

utiliza el arroba antes del condicional algo asi

@if(isset[$_POST]){

$meses[0]="$mes1";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";
}

si no quieres, depende lo que vayas a hacer pues agrega el arroba antes de cada variable

Última edición por enriquezm; 20/12/2011 a las 23:02
  #4 (permalink)  
Antiguo 21/12/2011, 00:30
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Evitar error al no definir variable

No entiedo bien, ademas probe el codigo y no me funciono! :(

¿para que es el @ antes del condicional?

podrias ser mas espicifico al entregarme el codigo, porfavor, apenas comienzo a entender un poco esto, copie el codigo que me diste pero no me funciono,

hice esto

Código PHP:

if(isset($_POST['mes1'])){

$mes1=$_POST["mes1"];

$meses[0]="$mes1";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";
}

else {
$meses[0]="enero";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";

pero no creo que sea la solucion mas eficiente...

esta es otra manera:

Código PHP:
if(isset($_POST['mes1'])){

$mes1=$_POST["mes1"];

$meses[0]="$mes1";
$meses[1]="febrero";
$meses[2]="marzo";
$meses[3]="abril";
$meses[4]="mayo";
$meses[5]="junio";
$meses[6]="julio";
$meses[7]="agosto";
$meses[8]="septiembre";
$meses[9]="octubre";
$meses[10]="noviembre";
$meses[11]="diciembre";

Pero solo se mostrarian las opciones al enviar el campo textfield...

Creo que la primera opcion esta buena, pero no quisiera tener que utilizar ELSE
__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #5 (permalink)  
Antiguo 21/12/2011, 01:24
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Evitar error al no definir variable

¿Qué tal así?
Código PHP:
Ver original
  1. $meses = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');
  2. if(isset($_POST['mes1']))
  3.     $meses[0] = $_POST['mes1'];
Hay que ponerse a leer
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 21/12/2011, 11:06
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Evitar error al no definir variable

Ya habia pensado en esa solucion, el problema estaria en el select/menu porque la variable empieza a contar los array desde [0]

Código HTML:
 <select name="menu">
    <option value="0">Seleccione el mes</option>
    
    <?php 

//aqui es donde comienza a recorre los array desde el [0]

for ($z=0;$z<count($meses);$z++)
{
?>
    <option value="<?php echo $meses[$z]?>" title="<?php echo $meses[$z]?>">
    <?php echo $meses[$z]?>
    </option>
    <?php
}

?>
    
  </select> 
Entonces si el [0] no esta definido va a arrojar un error y aunq cambiara la variable $z=1 comenzaria a contar los arrays desde el 1 y se perderia la variable $mes1 q introduciria el usuario

Creo q es algo simple, pero aun no me doy por entendido!

Gracias por sus respuestas, creo que la solucion va por el lado de

Código PHP:
    if(isset[$variable]){
        
//hago algo con la $variable
    

__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #7 (permalink)  
Antiguo 21/12/2011, 14:40
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Evitar error al no definir variable

Pero el 0 siempre va a estar definido en el código que te puse.
¿Por qué no lo pruebas?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #8 (permalink)  
Antiguo 21/12/2011, 21:20
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Evitar error al no definir variable

Cita:
Iniciado por Sourcegeek Ver Mensaje
Pero el 0 siempre va a estar definido en el código que te puse.
¿Por qué no lo pruebas?
:O toda la razon men, perdon! Gracias por la solucion..

Pero tengo una duda, como se puede lograr el mismo resultado de la solucion que me diste, pero sin sacar el indice [0][1][2]...., porque ya no podre llamar a una variable dinamicamente

por ejemplo, no se podria hacer esto:

Código PHP:
echo '$meses[2]'
__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #9 (permalink)  
Antiguo 21/12/2011, 21:31
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Evitar error al no definir variable

No entiendo muy bien a qué te refieres, pero claro que se puede:
Código PHP:
Ver original
  1. echo $meses[2];
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #10 (permalink)  
Antiguo 21/12/2011, 21:46
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Evitar error al no definir variable

Cita:
Iniciado por Sourcegeek Ver Mensaje
No entiendo muy bien a qué te refieres, pero claro que se puede:
Código PHP:
Ver original
  1. echo $meses[2];
jajajaja! me vuelvo a equivocar, perdon y gracias!

Entonces eso es posible por el ARRAY que agregaste:

Código PHP:
Ver original
  1. $meses = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');

porque cuando dices
Código PHP:
Ver original
  1. echo $meses[2];

No existe el $meses[2] no se si me explico bien :S

Talvez me podrias explicar el codigo, me seria de gran ayuda para mi aprendizaje
__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #11 (permalink)  
Antiguo 21/12/2011, 22:38
Avatar de cuervo699  
Fecha de Ingreso: febrero-2011
Mensajes: 104
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Evitar error al no definir variable

Ya entendi como funciona esto, muchisimas gracias por su orientacion, estuve buscando informacion y al final lo deje asi

Código PHP:
Ver original
  1. $meses = array('enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre');
  2.  
  3.     if (isset($_POST['mes1'])) {
  4.         array_unshift($meses, $_POST['mes1']);     
  5. }

array_unshift añade a la variable $meses otro indice al principio del array, de esta manera al enviar el formulario, en vez de reemplazar, ENERO por el texto que ingresa el usuario, lo agrega...

Gracias nuevamente!!
__________________
Quieres aprender a crear sitios web dinamicos, no te pierdas, usa Dreamweaver CS5
  #12 (permalink)  
Antiguo 21/12/2011, 23:06
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Evitar error al no definir variable

Me alegra que lo hayas conseguido

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: definir, formulario, variables, usuarios
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 22:20.