FAQ
Hola lista, mi problema es el siguiente:

Tengo un formulario con una evaluación, en donde tengo una serie de preguntas, en cada una de ellas hay tres pobilidades de respuesta (3 checkbock por pregunta) de donde el usuario debe elegir solo una respuesta para cada pregunta para que posteriormente una página PHP la procese y entregue el resultado.
Lo que quiero hacer es que se cargue la página sin ninguna respuesta contestada por defecto, pero mi problema es que cuando el usuario no contesta alguna pregunta no pasa la variable hacia la página PHP (o algo pasa),lo que produce que al preguntar por ella me genera un error. ¿Como lo soluciono?

GRACIAS.

Jorge

Jorge Mancilla
jomancil@chile.com

Search Discussions

  • Javier Leyba at Jan 4, 2002 at 6:37 pm

    On 04/01/2002 at 15:37 Jorge Mancilla R. wrote:

    Tengo un formulario con una evaluación, en donde tengo una serie de
    preguntas, en cada una de ellas hay tres pobilidades de respuesta (3
    checkbock por pregunta) de donde el usuario debe elegir solo una respuesta
    para cada pregunta para que posteriormente una página PHP la procese y
    entregue el resultado.
    Lo que quiero hacer es que se cargue la página sin ninguna respuesta
    contestada por defecto, pero mi problema es que cuando el usuario no
    contesta alguna pregunta no pasa la variable hacia la página PHP (o algo
    pasa),lo que produce que al preguntar por ella me genera un error. ¿Como
    lo soluciono?

    Hola

    Pone al lado de cada check un campo hidden y luego cuando recibis compara valores. Si existe la variable hidden y alguno de los 3 checks, todo bien. Si existe hidden pero no hay check, entonces no respondieron nada.


    Se entiende ?

    Saludos

    <jk>




    _________________________________________________________
    Do You Yahoo!?
    Get your free @yahoo.com address at http://mail.yahoo.com
  • Xytras at Jan 4, 2002 at 7:07 pm
    por que no en vez de checkbox usas option, por que si pones checkbox se
    pueden elegir mas de una. la idea del campo hidden puedes tomarla, o validar
    en el script que si la variable viene vacia le agregue algun valor que tu
    elijas como que esta vacia

    Suerte
    Xytras
    ----- Original Message -----
    From: "Javier Leyba" <xleyba@yahoo.com>
    To: "Lista PHP" <lista@phpes.com>
    Sent: Friday, January 04, 2002 11:45 AM
    Subject: Re: [PHP-ES] Paso de variables vacias .....

    On 04/01/2002 at 15:37 Jorge Mancilla R. wrote:

    Tengo un formulario con una evaluación, en donde tengo una serie de
    preguntas, en cada una de ellas hay tres pobilidades de respuesta (3
    checkbock por pregunta) de donde el usuario debe elegir solo una
    respuesta
    para cada pregunta para que posteriormente una página PHP la procese y
    entregue el resultado.
    Lo que quiero hacer es que se cargue la página sin ninguna respuesta
    contestada por defecto, pero mi problema es que cuando el usuario no
    contesta alguna pregunta no pasa la variable hacia la página PHP (o algo
    pasa),lo que produce que al preguntar por ella me genera un error. ¿Como
    lo soluciono?

    Hola

    Pone al lado de cada check un campo hidden y luego cuando recibis compara
    valores. Si existe la variable hidden y alguno de los 3 checks, todo bien.
    Si existe hidden pero no hay check, entonces no respondieron nada.

    Se entiende ?

    Saludos

    <jk>




    _________________________________________________________
    Do You Yahoo!?
    Get your free @yahoo.com address at http://mail.yahoo.com


    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com
  • Angel Fenoy at Jan 4, 2002 at 7:33 pm

    Divendres 04 Gener 2002 19:37, Jorge Mancilla R. dixit:

    Hola lista, mi problema es el siguiente:

    Tengo un formulario con una evaluación, en donde tengo una serie de
    preguntas, en cada una de ellas hay tres pobilidades de respuesta (3
    checkbock por pregunta) de donde el usuario debe elegir solo una respuesta
    para cada pregunta para que posteriormente una página PHP la procese y
    entregue el resultado. Lo que quiero hacer es que se cargue la página sin
    ninguna respuesta contestada por defecto, pero mi problema es que cuando el
    usuario no contesta alguna pregunta no pasa la variable hacia la página PHP
    (o algo pasa),lo que produce que al preguntar por ella me genera un error.
    ¿Como lo soluciono?
    Deberías comprobar si existe la variable antes de usarla, y en el caso que sí
    exista, deberias comprobar también que tiene uno de los tres valores que
    esperas que tenga, algo así:

    <?

    if (isset($lavariablequesea)) {

    if($lavariablequesea == 1) {
    // el código para cuando vale 1
    } elseif ($lavariablequesea == 2) {
    // el código para cuando vale dos
    } elseif ($lavariablequesea == 3) {
    // el código para cuando vale 3
    } else {
    // Ni 1 ni 2 ni 3, ¿Está intentando crackear?
    }

    } else {

    // el código para cuando no existe

    }

    ?>

    Saludos
    Àngel
  • Jesus Aneiros at Jan 5, 2002 at 12:53 am

    El Fri, 4 Jan 2002 a las 3:37pm, Jorge Mancilla R. escribio:

    Lo que quiero hacer es que se cargue la página sin ninguna
    respuesta contestada por defecto, pero mi problema es que cuando el
    usuario no contesta alguna pregunta no pasa la variable hacia la
    página PHP (o algo pasa),lo que produce que al preguntar por ella me
    genera un error. ¿Como lo soluciono?
    Al preguntar por ella o al utilizarla sin hacer un isset?

    Saludos, jas.

    --
    Jesus Aneiros Sosa
    mailto:aneiros EN jagua PUNTO cfg PUNTO sld PUNTO cu
    http://jagua.cfg.sld.cu/~aneiros
  • Francisco José Naranjo at Jan 5, 2002 at 1:02 pm
    Yo cuando quiero comprobar a ver si se han metido los datos en
    los campos simplemente lo compruebo con sentencias del estilo (ojo!!,
    vale únicamente para cuando todas las respuestas son distintas de cero,
    es decir, cuando en valor de cualquiera de las posibilidades es distinto
    de cero o vacío):

    if(!$variable)
    {
    // Aquí lo que quieras para cuando no está definido
    }
    else
    {
    // Aquí la variable tiene un valor
    }

    En formularios a mi me ha funcionado bien hasta el momento. Si
    alguna de las respuestas es cero (esto es, debe devolverse el valor cero) la
    cosa se complica un poco más puesto que se tiene que comprobar que está
    definida la variable con el isset y así.

    Fran
    --
    Francisco José Naranjo <fjnaranjo@ave128.retena.es>
  • Angel Fenoy at Jan 5, 2002 at 3:49 pm

    Dissabte 05 Gener 2002 14:12, Francisco José Naranjo dixit:

    Yo cuando quiero comprobar a ver si se han metido los datos en
    los campos simplemente lo compruebo con sentencias del estilo (ojo!!,
    vale únicamente para cuando todas las respuestas son distintas de cero,
    es decir, cuando en valor de cualquiera de las posibilidades es distinto
    de cero o vacío):

    if(!$variable)
    {
    // Aquí lo que quieras para cuando no está definido
    }
    else
    {
    // Aquí la variable tiene un valor
    }

    En formularios a mi me ha funcionado bien hasta el momento. Si
    alguna de las respuestas es cero (esto es, debe devolverse el valor cero)
    la cosa se complica un poco más puesto que se tiene que comprobar que está
    definida la variable con el isset y así.
    No lo entiendo, ¿Porqué no compruebas directamente con isset()?

    <?

    if(! isset($variable)) {
    // Aquí lo que quieras para cuando no está definido
    } else {
    // Aquí la variable tiene un valor, puede ser 0, puede
    // ser un valor válido tal como esperas o puede ser una
    // orden SQL maliciosa para intentar borrar todas tus
    // bases de datos. En necesario comprobar que el valor se
    // ajusta a lo deseado antes de hacer nada con la variable.
    }

    ?>

    Pero además, tu código:

    if(!$variable) {

    dará un warning de variable no definida cuando la variable no exista. Si no
    te está apareciendo el warning es porque tienes el nivel de control de
    errores (error_reporting()) demasiado bajo. Yo no podría programar así,
    ignorando todos esos warnings que tanto me ayudan a depurar el código,
    fíjate, si por ejemplo te equivocas y escribes:

    if ($varaible == 1) {

    en lugar de escribir:

    if ($variable == 1) {

    al no tener el error_reporting() configurado para que PHP te advierta de que
    estás usando una variable inexistente, te va a costar bastante encontrar el
    error. Si lo tubieras configurado para que te avisara, PHP te iva a decir la
    línea exacta de tu código donde tienes el error...

    En fin, supongo que por lo menos, cuando la variable tiene un valor distinto
    de cero, compruebas que ese valor sea un valor válido, y no cualquier cadena
    maliciosa.

    Saludos
    Àngel
  • Francisco José Naranjo at Jan 5, 2002 at 9:56 pm
    Hombre, yo no conocía que se podían cambiar los niveles de error
    puesto que no lo había leido en ningún sitio... Además, he probado PHP
    desde servers distintos (uno llevado por mi y otro ajeno a mi en cuanto
    a la instalación se refiere) y en ambos nunca había definido el error
    con lo que no había buscado más información.

    Lo de no utilizar isset es debido a que me enteré de su
    existencia más tarde y como al fin y al cabo, con este nivel de error
    funciona sin problema y siempre te acostumbras a un tipo de programación,
    pues no cambie (supongo que también es algo de vageza, jeje).

    Voy a probar como va lo del error_reporting (porque no se si me
    he enterado bien de cómo va) puesto q eso de que avise de variables no
    definidas es en algunos momentos ventajoso pero en otros no tanto (como
    por ejemplo en este)

    Yo de hecho, cuando pones lo de $variable y $varaible como bien
    dices no me lo da como error y a veces sí que es un poco costoso
    encontrar este tipo de errores.

    Por cierto, el error_reporting() se utiliza por script o se
    puede dejar el server con un valor específico?

    Un saludo

    Fran
    --
    Francisco José Naranjo <fjnaranjo@ave128.retena.es>
  • Angel Fenoy at Jan 6, 2002 at 12:58 am

    Dissabte 05 Gener 2002 23:06, Francisco José Naranjo dixit:

    Voy a probar como va lo del error_reporting (porque no se si me
    he enterado bien de cómo va) puesto q eso de que avise de variables no
    definidas es en algunos momentos ventajoso pero en otros no tanto (como
    por ejemplo en este)
    Bueno, según mi punto de vista es ventajoso siempre, ya que es un grave
    peligro trabajar con variables no inicializadas, no ya porque la lógica del
    programa esté menos clara, sino porque a las variables no inicializadas
    calquiera puede darles valor (maliciosamente) pasando el nombre de variable y
    su valor por la URL, por ejemplo.

    En tu caso (y en el de otros listeros), si tienes muchas líneas de código
    escritas y has trabajado siempre alegremente con variables sin inicializar,
    es posible que al modificar el 'error_reporting' te aparezcan 1.000.000 de
    warnings. En ese caso vas a tener bastante faena para arreglarlo, deberás
    repasar todo tu código para inizializarlas todas :(, ya que PHP solo avisa en
    el momento de ejecutar la línea de código que tiene la variable no
    inicializada, ya que si la lógica del programa hace que esa línea no se
    llegue a ejecutar, PHP no sabe si la variable está inicializada o no.
    Yo de hecho, cuando pones lo de $variable y $varaible como bien
    dices no me lo da como error y a veces sí que es un poco costoso
    encontrar este tipo de errores.
    Por defecto, el 'error_reporting' de PHP está puesto a E_ALL ^ E_NOTICE, o
    sea, todos los errores excepto notificaciones. De este modo no avisa de
    variables no inicializadas. En mis programas tengo puesto E_ALL, o sea, todos
    los errores, entonces sí avisa.
    Por cierto, el error_reporting() se utiliza por script o se
    puede dejar el server con un valor específico?
    Las dos cosas. En el fichero php.ini tienes una directiva 'error_reporting',
    y todos los programas del servidor se ejecutan con el nivel de aviso que
    definas en esa directiva. Pero luego, en cada uno de los programas, puedes
    modificar el nivel de error con la función error_reporting():

    http://www.php.net/manual/en/function.error-reporting.php

    Incluso, en un mismo programa, puedes tener unos trozos de código con un
    nivel de error y otros trozos con otro nivel. Ten en cuenta también que el
    error_reporting() que hayas definido mediante la función no lo heredan los
    programas que incluyas con include() o require(), éstos se ejecutan con el
    error_reporting que tengas definido en el php.ini

    Saludos
    Àngel

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJan 4, '02 at 6:33p
activeJan 6, '02 at 12:58a
posts9
users6
websitephp.net

People

Translate

site design / logo © 2022 Grokbase