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