Tengo este código en un formulario donde los usuarios pueden actualizar sus datos. Funciona, pero si los usuarios se actualizan con éxito una vez, luego actualizan a otra persona, y luego aparece el mensaje de error, pero el mensaje de éxito no desaparece, lo cual es confuso.

¿Hay alguna forma de usar un bucle foreach dentro del if else?

    <?php
                    //check for any errors
                    if(isset($error)){
                        foreach($error as $error){
                            echo '<p class="bg-danger">'.$error.'</p>';
                        }
                    }

                    if(isset($_GET['action']) && $_GET['action'] == 'updated'){
                        echo "<p class='bg-success'>Your details have been updated.</p>";
                    }
                    ?>
1
user7269149 8 dic. 2016 a las 21:43
Usar el mismo nombre de var para una matriz y sus elementos consiguientes es confuso de leer y dará lugar a errores (eh). Al nombrar una matriz, accedo a ella en plural, a menos que use la noción de sugerencia de tipo: por ejemplo, foreach ($ errores como $ error) o foreach ($ Aerrors como $ error), feo, pero algunas tiendas funcionan así.
 – 
Cups
8 dic. 2016 a las 21:57

1 respuesta

La mejor respuesta

Parece que su $ _GET ['action'] todavía está configurado para actualizarse. Entonces, dos opciones: 1. envuelva $ _GET ['action'] en un else para que no se active si hay un error,

//check for any errors
if(isset($error)){
    foreach($error as $error){
        echo '<p class="bg-danger">'.$error.'</p>';
    }
} ELSE { // add this!
    if(isset($_GET['action']) && $_GET['action'] == 'updated'){
        echo "<p class='bg-success'>Your details have been updated.</p>";
    }
}

O asegúrese de que $ _GET ['action'] no esté configurado como actualizado cuando no se haya actualizado correctamente

0
dpp 8 dic. 2016 a las 21:55
Gracias, ¡funcionó a la perfección! Intenté y probé esto, pero debo haber estado equivocando la sintaxis
 – 
user7269149
9 dic. 2016 a las 01:47