Foros del Web » Programando para Internet » PHP »

error dentro del bucle

Estas en el tema de error dentro del bucle en el foro de PHP en Foros del Web. Amigos, alguien puede decirme qué está mal aqui, porque me sale error constantemente 'undefined index'. Quiero que salgan los valores de las lineas del 1 ...
  #1 (permalink)  
Antiguo 03/02/2009, 04:23
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
error dentro del bucle

Amigos, alguien puede decirme qué está mal aqui, porque me sale error constantemente 'undefined index'. Quiero que salgan los valores de las lineas del 1 al 6 siempre y cuando exista un valor en alguna de ellas. Por una comprobación anterior, se verifica que las 4 columnas de cada linea tengan algún valor.

El código
Código PHP:
        $i 1;

        while(
$i 7)
            {
                if(isset(
$_POST['cantidad'.$i]))
                    {
                        
$linea.$i $_POST['cantidad'.$i]."&".$_POST['concepto'.$i]."&".$_POST['ml'.$i]."&".$_POST['importe'.$i];
                        
$i++;
                    } else {
                        
$linea.$i 0;
                        
$i++;
                    }
            } 
Saludos y gracias!
__________________
Impala
  #2 (permalink)  
Antiguo 03/02/2009, 04:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error dentro del bucle

undefined index resulta cuando intentas acceder a un "indice NO definido", dentro de un array....

para corregirlo, o mejor dicho.. controlarlo, debes usar mas la lógica... y condicionar tus acciones con respecto a estas suposiciones, adelantarte a los errores...


simple, si no hay POST una lectura de la matriz $_POST['algo'] es incorrecta ya que no existe envío POST, no hay post... no hay indices!!

¿se entiende???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/02/2009, 04:46
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: error dentro del bucle

Si, te entiendo, pero el error del undefined index se refiere al '$linea', eso es lo que no encuentra, el resto de valores si. No sé, pero el error está en '$linea.$i' pero no puedo encontrar cuál es ...
__________________
Impala
  #4 (permalink)  
Antiguo 03/02/2009, 04:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error dentro del bucle

mmm.... bueno, si el error es muy comprensible...

¿¿pero cual es el mensaje de error completo???


osea, el problema no es asignar $linea ... el error esta en tratar de leer un indice de un array!!!

por si fuera ese el problema.... ¿de donde sacas la variable $linea??? ¿que tipo de variable es??? ¿que valor tiene???


...en otro caso, usas varias veces $_POST ¿existen los indices solicitados???... y ahí es el verdadero problema, cual es el error completo??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 03/02/2009, 04:55
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error dentro del bucle

¿Qué se supone que es $linea.$i? Quiero decir, ¿qué es lo que crees que significa cuando escribes $a.$b?
  #6 (permalink)  
Antiguo 03/02/2009, 06:22
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: error dentro del bucle

El problema viene ahi, porque $linea no existe, lo que quiero lograr es que la variable se llame '$linea1', por ejemplo ya que 1 viene del $i. Todos los $_POST tienen valores asignados, con ellos no hay problema.

Este es el código completo para que se hagan una idea:

Código PHP:
if(!isset($error))
         {
        
        
$i 1;

        while(
$i 7)
            {
                if(isset(
$_POST['cantidad'.$i]))
                    {
                        
$linea.$i $_POST['cantidad'.$i]."&".$_POST['concepto'.$i]."&".$_POST['ml'.$i]."&".$_POST['importe'.$i];
                        
$i++;
                    } else {
                        
$linea.$i 0;
                        
$i++;
                    }
            }
        
        
         
$query "INSERT INTO facturas VALUES ('0', '$cliente', '$fecha', '$linea1', '$linea2', '$linea3', '$linea4', '$linea5', '$linea6')";
         
$result mysql_query($query);
         if(
$result){
                        echo 
"<br><br><br><br><br><div align='center' class='menu_texto'>Se guardó la factura nº ".$_POST['num_fac']." correctamente.</div>";
                        echo 
"<br><br><div align='center' class='opciones'><a href='javascript:close()'>Cerrar ventana</a></div>";
                     } else {
                        echo 
"<br><br><br><br><br><div align='center' class='menu_texto'>Ocurrió un error al guardar el presupuesto. Inténtelo de nuevo.</div>";
                        echo 
"<br><br><div align='center' class='opciones'><a href='javascript:close()'>Cerrar ventana</a></div>";
                     }
        } else {
        echo 
"<form>";
        echo 
"<br><br><div align='center'><input type='button' value='volver' class='boton1' onClick='history.go(-1)'></div><br><br>";
        echo 
"</form>";
        } 
Saludos
__________________
Impala
  #7 (permalink)  
Antiguo 03/02/2009, 06:55
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error dentro del bucle

Pues el caso es que eso, $linea.$i, no es lo mismo que $linea1, $linea2, etc.

Lo que tendrías que hacer es utilizar un array:

Código php:
Ver original
  1. $linea = array();
  2. $linea[0] = "...";
  3. $linea[1] = "...";
  4. $i = 0;
  5. while ($i<7) {
  6.     $linea[$i] = "...";
  7. }
  8. //etc
  #8 (permalink)  
Antiguo 03/02/2009, 12:02
 
Fecha de Ingreso: septiembre-2004
Mensajes: 203
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: error dentro del bucle

Muchas gracias, amigo! Funciona perfectamente.
__________________
Impala
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 10:02.