Foros del Web » Programando para Internet » PHP »

Foreach, array para una funcion

Estas en el tema de Foreach, array para una funcion en el foro de PHP en Foros del Web. Hola quiero realizar lo siguiente: Código PHP: if ( !empty( $_POST [ 'submit' ]) ) {     if ( !empty( $_POST [ 'titulo' ]) )          $titulo  =  $_POST [ 'titulo' ];     if ( !empty( $_POST ...
  #1 (permalink)  
Antiguo 21/08/2011, 18:22
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Pregunta Foreach, array para una funcion

Hola quiero realizar lo siguiente:


Código PHP:
if ( !empty($_POST['submit']) ) {
    if ( !empty(
$_POST['titulo']) )         $titulo $_POST['titulo'];
    if ( !empty(
$_POST['copete']) )     $copete $_POST['copete'];
    
    ................. 
aca sigue mas pero es lo mismo que antes...............

    
// completamos la variable error si es necesario
    
if ( empty($titulo) )     $error['titulo']         = 'Es obligatorio completar titulo';
    if ( empty(
$copete) ) $error['copete']   = 'Es obligatorio completar copete';
        ................. 
aca sigue mas pero es lo mismo que antes...............


Para agilizar el codigo, y hacerlo mas limpio utilizo esto que hace un recorrido por un array:

Código PHP:
$nombreEnviar = array(titulo,copete,enunciado,carpeta,nombre,programa,sinopsis,etc);
if ( !empty(
$_POST['submit']) ) {
foreach (
$nombreEnviar as $nombre) {
    
// definimos las variables    
if ( !empty($_POST[$nombre]) ) $nombre $_POST[$nombre];
    
// completamos la variable error si es necesario
if ( empty($nombre) ) $error[$nombre] = 'Es obligatorio completar el campo '.$nombre;
}; 
Pero esto no me funciona, noc porque
  #2 (permalink)  
Antiguo 21/08/2011, 18:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Foreach, array para una funcion

¿Exactamente que es lo que no te funciona?

Por que vamos, adivinar eso es complicado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/08/2011, 18:43
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

y hay algo que no funciona en el codigo, el funcionamiento en si. Ya que cuando no escribo nada en los input por ejemplo, supuestamente me tendria que dar un error avisandome que necesito completar el campo X
  #4 (permalink)  
Antiguo 21/08/2011, 18:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Foreach, array para una funcion

¿Supuestamente?

Se supone que para que te muestre algo debes programarlo, ¿en que parte del código imprimes los mensajes de error?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/08/2011, 18:59
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

Lo imprimo de esta manera:

Cita:
<? if (!empty($error)) { ?>
<ul>
<? foreach ($error as $mensaje) { ?>
<li><?= $mensaje ?></li>
<? } ?>
</ul>
<? } ?>
  #6 (permalink)  
Antiguo 21/08/2011, 19:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Foreach, array para una funcion

Si no te muestra nada, entonces $error está vacío.

Creo que lo que te está fallando es el manejo de variables variables, te invito a leer lo siguiente:
http://php.net/manual/es/language.va...s.variable.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 21/08/2011, 19:15
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

mmmm.. no entiendo...
  #8 (permalink)  
Antiguo 21/08/2011, 19:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Foreach, array para una funcion

A ver, vamos con calma, ¿antes de modificar te mostraba los mensajes de error?

Bien, si eso es correcto, entonces el problema no está en mostrar los errores sino en la asignación de los mismos.

Ahora... al usar foreach() extraes cada palabra como índice de post y se asigna automáticamente a $nombre dicho valor, así pues la comparación empty($nombre) jamás va a dar false.

Entiendo que intentas simular variables para resumir el código, pero lo estás haciendo mal, pues no estás simulando ningún variable mas que en tu imaginación.

Para hacerlo verdadero debes usar la sintaxis de variables variables, como dice en el manual.
Código PHP:
foreach ($foo as $bar)
{
  if (empty($
$bar)) // ...

Nota que el doble $$ es lo que hace falta en algún punto de tu script para que funcione.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/08/2011, 19:30
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

Ahh ok, muchas gracias por la paciencia. Ahora lo implemento y te cuento :)
  #10 (permalink)  
Antiguo 21/08/2011, 19:31
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

Funciona :D

Mil gracias!
  #11 (permalink)  
Antiguo 21/08/2011, 19:47
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

Lo probe asi pero siempre me marca el error :S

Cita:
<?
if ( !empty($_POST['aceptar']) ) {
$vector = array('abc','def','ghi');
foreach ($vector as $letra) {
if ( !empty($_POST[$$letra]) ) $$letra = $_POST[$$letra];
if ( empty($$letra) ) $error[$$letra] = 'Es obligatorio completar el campo';
echo $error[$$letra];
}
}
?>


<form method="post" action="">
<input name="abc" /><br/>
<input name="def" /><br/>
<input name="ghi" /><br/>
<input type="submit" name="aceptar" />
</form>
  #12 (permalink)  
Antiguo 21/08/2011, 21:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Foreach, array para una funcion

¿Que error?

De verdad, te invito a leer el enlace del manual.

No hay que poner $$ a todas las variables, solo a las que lo requieran.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 22/08/2011, 08:50
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años
Puntos: 9
Respuesta: Foreach, array para una funcion

Si si, perdon tenes razon. Lo lei y lo solucione, poniendole solo a una de arriba y otra de abajo. Es que era un poco confuso, por eso me equivocaba.

Etiquetas: foreach, funcion, variables
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 12:25.