Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andrey Knupp Vital

[Resolvido] Array

Recommended Posts

Salve Galera !

Presiso de uma Ajudinha Basica Que pra Min tá virando uma dor de cabeça :ermm:

 

Tenho o Seguinte Array

Array
(
   [0] => Array
       (
           [nome] => Andrey
           [sobrenome] => Knupp Vital
           [login] => 454077
           [senha] => 0a160508a4f401d1507f5690040dfa3a
           [genero] => Masculino
           [registradoEm] => sexta-feira, 22/04/2011 12:33:47
           [sobre] => Nada
       )

   [1] => Array
       (
           [nome] => Andrey
           [sobrenome] => Knupp Vital
           [login] => 454077
           [senha] => 0a160508a4f401d1507f5690040dfa3a
           [genero] => Masculino
           [registradoEm] => sexta-feira, 22/04/2011 12:33:47
           [sobre] => Nada
       )

)

 

Des de Então , Presiso Montar uma Query Pra Gravar Alguns Dados No Banco de Dados

Mais Tem um Porem, o usuario vai Passar como parametro

Oque ele quer desse array, então oque ele não quer, vai ser removido (unset) desse array

 

Por exemplo

 $array = Array( 'nome' => 'Andrey', 'sobrenome' => 'Knupp', 'sobre' => 'Nada' ); // ... etc
 $key = 'nome,sobre';

 

No Caso Teria que Remover de $array, o Sobrenome Ficando apenas

$array = Array( 'sobrenome' => 'Knupp' );

 

Assim , podem ser feitas varias combinações, etc, não tenho certamente oque pode vir a conter nesse array

Como Novas Chaves, etc ..

 

Então dar um Implode nesses Arrays, montando uma query, sendo que cada array corresponde a uma linha

 

                    public function toSQL( $table, $fields, $resultFields ){
                           $this->formatedField = Array();
                           $this->data = Array();
                           for( $i = 0; $i < count( $this->result ); $i ++ ):
                                        foreach( split( ",", str_replace( " ", NULL, $resultFields ) ) as $key => $data ):
                                                    $this->field[ $data ] = $data;
                                                    $this->result = array_diff_key( $this->result, $this->field );
                                        endforeach;
                                        foreach( $this->result[ $i ]  as $key => $value ):
                                                 $this->formatedField[] = sprintf( '%s', "`{$value}`" );
                                        endforeach;

                           endfor;
                           $this->data[] = "(".implode( ", ", $this->formatedField ).")";
                           echo "INSERT INTO `table` ( campos ... ) values". implode( ',', $this->data);

                    }

 

Porem Minha Saida Tá Tendo 2 Problemas, Não Está Removendo os Campos do Array

e o Implode está saindo errado

 

Percebam

INSERT INTO `table` ( campos ... ) values(`Andrey`, `Knupp Vital`, `454077`, `0a160508a4f401d1507f5690040dfa3a`, `Masculino`, 
`sexta-feira, 22/04/2011 12:33:47`, `Nada`, `Andrey`, `Knupp Vital`, `454077`, `0a160508a4f401d1507f5690040dfa3a`, `Masculino`, 
`sexta-feira, 22/04/2011 12:33:47`, `Nada`)

 

o Primeiro "nada", está sem o parentes, nele termina 1 linha no banco :mellow:

 

Estou Invocando meu Metodo Assim

->toSQL( 'tabela', 'andrey, knupp, vital', 'nome, sobre' );

 

o Terceiro parametro são os campos que eu quero no array, o resto ele teria que remover

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Galera.. Já Pode Botar Como Resolvido No Topico

Com Muita Dor De Cabeça, Consegui Resolver o Problema

public function toSQL( $table, $fields, $resultFields ){
                           $this->formatedField = Array();
                           $this->ArrayFields = explode( ',', $resultFields );
                           $this->TableName = sprintf( '%s', $table );
                           $this->TableFields = split( ',', str_replace( " ", NULL, $fields ) );
                           foreach( $this->TableFields as $this->TableIndex => $this->TableField ):
                                    $this->TblField[] = '`'.$this->TableField.'`';
                           endforeach;
                           $this->data = Array();
                           for( $i = 0; $i < count( $this->result ); $i ++ ):
                                  foreach( $this->ArrayFields as $this->Field ):
                                           if(!array_key_exists( str_replace( ' ', NULL,  $this->Field ), $this->result[ $i ] )):
                                                 throw new OutOfBoundsException( sprintf( 'Chave %s Não Existe no Array', $this->Field ) );
                                           endif;
                                            $this->Field = trim( $this->Field );
                                            $this->data[ $i ][ $this->Field ] = '`'.$this->result[ $i ][ $this->Field ].'`';
                                   endforeach;
                                   $this->formatedFields[] = "(".implode( ',', $this->data[ $i ] ).")";
                           endfor;
                           $this->SQLQuery = "INSERT INTO `".$this->TableName."`( ".implode( ',', $this->TblField )."  ) VALUES ".implode( ',', $this->formatedFields );
                           return $this->SQLQuery;
                    }

 

Saida

 

INSERT INTO `tabela`( `andrey`,`knupp`,`vital`  ) VALUES (`Andrey`,`454077`,`0a160508a4f401d1507f5690040dfa3a`),(`Andrey`,`454077`,`0a160508a4f401d1507f5690040dfa3a`)

 

Metodo

$sql = $DOM->toSQL( 'tabela', 'andrey, knupp, vital', 'nome, login, senha' );

 

Selecionando Somente nome, login, senha

 

De

 

Array
(
   [0] => Array
       (
           [nome] => Andrey
           [sobrenome] => Knupp Vital
           [login] => 454077
           [senha] => 0a160508a4f401d1507f5690040dfa3a
           [genero] => Masculino
           [registradoEm] => sexta-feira, 22/04/2011 12:33:47
           [sobre] => Nada
       )

   [1] => Array
       (
           [nome] => Andrey
           [sobrenome] => Knupp Vital
           [login] => 454077
           [senha] => 0a160508a4f401d1507f5690040dfa3a
           [genero] => Masculino
           [registradoEm] => sexta-feira, 22/04/2011 12:33:47
           [sobre] => Nada
       )

)

 

Obs, Para Não Acharem Que Estes dados do Array vem de outro banco

ou Coisa do Tipo , e que eu estou inventando moda =) , Não é não, e de um xml

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.