FAQ
Buenas,

Estoy haciendo una función para validar los campos de un formulario.

Tengo este código:

function error($motivo) {
echo" se ha detectado un error en el proceso. $motivo. Si cree que es un
error por favor contacte con nosotros";
exit;
}

function validar($texto) {
$texto = trim($texto);
$texto = str_replace(chr(145), chr(39), $texto);
$texto = str_replace(chr(146), chr(39), $texto);
$texto = str_replace("'", "'", $texto);
$texto = str_replace(chr(147), chr(34), $texto);
$texto = str_replace(chr(148), chr(34), $texto);
$texto = str_replace(chr(10), " ", $texto);
$texto = str_replace(chr(13), " ", $texto);
return $texto;
}

function existe($existe1) {
if (empty($existe1)) {
$motivo_error="el campo $existe1 se encuentra vacío";
error($motivo_error);
}
else {
return validar($existe1);
}
}

Yo lo que hago es poner existe($_GET["producto"]); Y cuando el campo
producto se encuentra vacío, aparece este error: se ha detectado un
error en el proceso. el campo se encuentra vacío. Si cree que es un
error por favor contacte con nosotros. Pero me interesaría que
apareciera el nombre del campo en el error, es decir, el campo producto
se encuentra vacío.

¿Qué hago mal?. Otra cosa, alguien tiene una función mejor o sugerencias??

Gracias,
Álvaro

Search Discussions

  • Camilo Uran at Oct 21, 2007 at 6:50 pm
    Has intentado usando la función de php isset() ? Yo la uso cuando tengo que
    verificar datos de GET o POST, y comprueba que las variables si se hayan
    inicializado. Intentalo con eso a ver.
    Se usa asi:

    if ( isset ( $_GET['producto'] ) ) {
    // codigo
    }else{
    // error
    }

    Saludos.
  • Álvaro at Oct 21, 2007 at 11:51 pm
    Gracias por tu respuesta, pero no era a eso a lo que me refería, sino a
    la hora del error, me aparezca en nombre del campo vacío. La cosa es
    escribir $producto, el nombre de la variable, no el contenido sin el
    símbolo $.
    Álvaro


    Camilo Uran escribió:
    Has intentado usando la función de php isset() ? Yo la uso cuando tengo que
    verificar datos de GET o POST, y comprueba que las variables si se hayan
    inicializado. Intentalo con eso a ver.
    Se usa asi:

    if ( isset ( $_GET['producto'] ) ) {
    // codigo
    }else{
    // error
    }

    Saludos.
  • Leo Espejo at Oct 22, 2007 at 1:08 am
    Apoyo completamente, la propuesta de Camilo Uran, al usar la función isset,
    así sabes si la variable ha sido definida o no. Ahora bien, cabría
    preguntarse entonces.

    ¿Por qué usar isset si se está validando el contenido del campo?, muy
    simple.

    Si el campo que estás esperando, no tiene ningún valor asignado al momento
    del submit, entonces, no recibirás nada, es decir, la variable aparece como
    no asignada, no como vacía (quizás esta sea la confusión).

    ¿En que caso, se recibiría ese campo, con un valor vacío?, en el caso que el
    usuario te envíe uno o más espacios en blanco, y tu validación al recibir,
    le hiciera un trim.

    Definitivamente, el uso de la función isset, es lo más apropiado en estos
    casos.

    Saludos,

    Leo Espejo
    On 10/21/07, Álvaro wrote:

    Gracias por tu respuesta, pero no era a eso a lo que me refería, sino a
    la hora del error, me aparezca en nombre del campo vacío. La cosa es
    escribir $producto, el nombre de la variable, no el contenido sin el
    símbolo $.
    Álvaro


    Camilo Uran escribió:
    Has intentado usando la función de php isset() ? Yo la uso cuando tengo que
    verificar datos de GET o POST, y comprueba que las variables si se hayan
    inicializado. Intentalo con eso a ver.
    Se usa asi:

    if ( isset ( $_GET['producto'] ) ) {
    // codigo
    }else{
    // error
    }

    Saludos.
    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --
    Saludos,

    Leo Espejo
  • Camilo Uran at Oct 22, 2007 at 11:53 am
    A ver, que creo que lo he entendido mejor.

    Pasas una variable $_GET['producto']. El php te mira cuando hay algún error
    y te dice:

    Se ha detectado un error en el proceso. el campo se encuentra vacío. Si cree
    que es un
    error por favor contacte con nosotros

    Y lo que tu quieres es que haga algo como:

    Se ha detectado un error en el proceso. el campo $_GET['producto'] se
    encuentra vacío. Si cree que es un error por favor contacte con nosotros.

    Es así? Si es así, según lo he entendido, pues la verdad no se como
    ayudarte, porque mi experiencia no dá para saber como imprimir literalmente
    el nombre de la variable. A ver si alguien que sepa algo más puede ayudarte,
    yo supondría que tiene que haber alguna función PHP que te averiguase el
    nombre del campo $_GET, he encontrado una función llamada key() pero no
    estoy seguro de su funcionamiento (no tengo PHP aquí en este ordenador),
    leete la referencia en php.net y mira a ver si es la que necesitas. Sorry .
  • SkuNk at Oct 22, 2007 at 12:48 pm
    Primera, el uso del empty() [1] es más efectivo que el uso del isset(), ya
    que el primero te evalua si la variable existe y además si está vacía, el
    segundo sólo comprueba si existe. Si leeis un poco en la documentación
    oficial saldréis de dudas, y por si las moscas, traduzco.

    Lo siguientes casos son considerados empty (o vacíos):
    "" (una cadena vacía)
    0 (0 como entero)
    "0" (0 como cadena)
    NULL
    FALSE
    array() (una matriz vacía)
    var $var; (una variable declarada, pero sin valor)

    Como podéis ver, el empty() hace la función de isset() y además evalua su
    valor.

    [1] es.php.net/empty

    Segunda, para mostrar literalmente una variable, no hay más complicación que
    esta:

    echo '$mivariable';

    Con comillas simples no evaluará dicha variable y mostrará exactamente eso,
    por supuesto, hay otras formas de mostrarla también, pero esta es la más
    común.

    Espero os sirva.

    El día 22/10/07, Camilo Uran <camilou@gmail.com> escribió:
    A ver, que creo que lo he entendido mejor.

    Pasas una variable $_GET['producto']. El php te mira cuando hay algún
    error
    y te dice:

    Se ha detectado un error en el proceso. el campo se encuentra vacío. Si
    cree
    que es un
    error por favor contacte con nosotros

    Y lo que tu quieres es que haga algo como:

    Se ha detectado un error en el proceso. el campo $_GET['producto'] se
    encuentra vacío. Si cree que es un error por favor contacte con nosotros.

    Es así? Si es así, según lo he entendido, pues la verdad no se como
    ayudarte, porque mi experiencia no dá para saber como imprimir
    literalmente
    el nombre de la variable. A ver si alguien que sepa algo más puede
    ayudarte,
    yo supondría que tiene que haber alguna función PHP que te averiguase el
    nombre del campo $_GET, he encontrado una función llamada key() pero no
    estoy seguro de su funcionamiento (no tengo PHP aquí en este ordenador),
    leete la referencia en php.net y mira a ver si es la que necesitas. Sorry
    .

    Saludos!

    --
    Philipp Keweloh
    skunk1@gmail.com
  • Camilo Uran at Oct 22, 2007 at 6:08 pm
    OK Skunk, pero creo que en este caso el problema es que
  • Camilo Uran at Oct 22, 2007 at 6:10 pm
    ..Perdon, se me envio antes de tiempo.
    Lo que decía es que el problema es que ella tiene algo así:

    function existe($existe1) {
    if (empty($existe1)) {
    $motivo_error="el campo $existe1 se encuentra vacío";
    error($motivo_error);
    }
    else {
    return validar($existe1);
    }
    }

    Si llama existe($_GET['producto]), la idea es que imprima
    "$_GET[`producto`]se encuentra vacio", cosa que no se puede solucionar
    simplemente quitandole
    las comillas dobles y poniendo simples.
    Ahora me siento curioso yo también, a ver si alguien nos dice como poder
    imprimir el nombre de una variable y no su contenido ;)
  • Álvaro at Oct 22, 2007 at 8:22 pm
    Eso es camilo, yo quiero imprimir el nombre de la variable, no el
    contenido. Estoy tras ello y no doy con la solución, ¿alguien nos ayuda?.
    Álvaro


    Camilo Uran escribió:
    ..Perdon, se me envio antes de tiempo.
    Lo que decía es que el problema es que ella tiene algo así:

    function existe($existe1) {
    if (empty($existe1)) {
    $motivo_error="el campo $existe1 se encuentra vacío";
    error($motivo_error);
    }
    else {
    return validar($existe1);
    }
    }

    Si llama existe($_GET['producto]), la idea es que imprima
    "$_GET[`producto`]se encuentra vacio", cosa que no se puede solucionar
    simplemente quitandole
    las comillas dobles y poniendo simples.
    Ahora me siento curioso yo también, a ver si alguien nos dice como poder
    imprimir el nombre de una variable y no su contenido ;)
  • Ever Daniel Barreto Rojas at Oct 22, 2007 at 8:46 pm

    El 22/10/2007 a las 04:22 p.m., escribiste:
    Eso es camilo, yo quiero imprimir el nombre de la variable, no el
    contenido. Estoy tras ello y no doy con la solución, ¿alguien nos ayuda?.
    una simple búsqueda en google me arrojó esto:

    http://us2.php.net/manual/en/language.variables.php#49997

    les sirve?

    Cordiales saludos,

    -------------------
    Ever Daniel Barreto Rojas
    e.mail: ebarreto@nexusit.com.py :: Nexus Information Technologies
    web: www.nexusit.com.py
    22/10/2007 05:47 p.m.

    ---------------------
    El odio es un lastre.
    La vida es demasiado corta como para estar siempre cabreado.
    – Danny, American History X (1998)
    ---------------------
  • Fernando Ortiz at Oct 22, 2007 at 8:48 pm
    Hola,

    Pudiera ser haciendo un pequeño cambio a la hopra de validar?

    Opcion 1) Invocas a la funcion con el nombre de la variable, el
    'indice' a tu $_GET

    existe(''producto");

    y en la funcion

    function existe($var) {
    if (empty($_GET[$var]) {
    $motivo_error="el campo $var ( \$_GET[$var]) se encuentra vacío";
    error($motivo_error);
    }
    else {
    return validar($_GET[$var]);
    }
    }

    Opcion2) mandas el nombre de la variable completa entre apostrofes

    existe('_GET["producto"]');

    y en la funcion usas el $$

    function existe($var) {
    if (empty($$var) {
    $motivo_error="el campo $$var se encuentra vacío";
    error($motivo_error);
    }
    else {
    return validar($$var]);
    }
    }

    Espero te sirva

    Álvaro escribió:
    Eso es camilo, yo quiero imprimir el nombre de la variable, no el
    contenido. Estoy tras ello y no doy con la solución, ¿alguien nos ayuda?.
    Álvaro


    Camilo Uran escribió:
    ..Perdon, se me envio antes de tiempo.
    Lo que decía es que el problema es que ella tiene algo así:

    function existe($existe1) {
    if (empty($existe1)) {
    $motivo_error="el campo $existe1 se encuentra vacío";
    error($motivo_error);
    }
    else {
    return validar($existe1);
    }
    }

    Si llama existe($_GET['producto]), la idea es que imprima
    "$_GET[`producto`]se encuentra vacio", cosa que no se puede solucionar
    simplemente quitandole
    las comillas dobles y poniendo simples.
    Ahora me siento curioso yo también, a ver si alguien nos dice como poder
    imprimir el nombre de una variable y no su contenido ;)

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedOct 21, '07 at 5:10p
activeOct 22, '07 at 8:48p
posts11
users6
websitephp.net

People

Translate

site design / logo © 2022 Grokbase