H. Romeu 0 Denunciar post Postado Setembro 10, 2011 Como posso criar um function que passe valores para inserir no bd [é apenas um exemplo] queria vazer algo assim Sql($v,$v2,$v3 | $v4, $v5, $v6 ); queria passar valores e separar com algum caractere no caso o '|', ao inseri-lo, mudaria o rumo, sem o | seria as colunas, valores depois do 1º | seria os valores funtion Sql($v,$v2,$v3 | $v4, $v5, $v6){ mysql_query("INSERT INTO tabela ($v,$v2,$v3) VALUES ($v4,$v5,$v6)); } como fazer algo do tipo ? Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 10, 2011 utiliza array function Sql($c,$v){ ... } $campos = Array($campo1,$campo2,$campo3); $valores = Array($valor1,$valor2,$valor3); Sql($campos,$valores); o problema é que os tipos de campos são inserido diferentemente (string, numero), tem que fazer uma coisa mais bem feita para diferenciar os campos do array Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Peres 2 Denunciar post Postado Setembro 10, 2011 Função: function Sql ($v1,v2,v3) { mysql_query("INSERT INTO tabela ($v, $v2, $v3) VALUES ($nome,$sobrenome,$cidade)); if($Sql) { echo "Inseridos na tabela com sucesso"; } else { echo "ERRO!"; } Php(na mesma página do formulário): <?php $nome = $_REQUEST['nome']; $sobrenome = $_REQUEST['sobrenome']; $cidade = $_REQUEST['cidade']; ?> HTML: <form method="POST" action="suapagina.php"> <input type="text" name="nome" value=""> <input type="text" name="sobrenome" value=""> <input type="text" name="cidade" value=""> </form> Não sei se era exatamente o que queria, pois não consegui entender o seu foco principal na pergunta. Fiz aqui esse exemplo.Talvez dê certo, não estou em casa por isso não consegui testar. Diga o que resultou. Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
H. Romeu 0 Denunciar post Postado Setembro 11, 2011 Eu quero é colocar um separador na chamada da função Sql('valor1'|'valor2'); // ficaria mysql_query("INSERT INTO tabela ('valor1') VALUES (valor2)"); a minha duvida ta na argumentação da função, como colocar separadores, como uma barra | ou coxete ex.: Sql('valor'|'valor2'['tabela1']); // mysql_query("INSERT INTO 'tabela1' ('valor1') VALUES ('valor2')"); Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 11, 2011 o separador de argumentos na chamada da função é a vírgula "," , para usar outro separador você vai ter que tratar a string e fazer a chamada usando vírgula, acho desnecessário Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Ficaria legal fazer um objeto somente para abstrair SQL do que funções desse tipo, porque aí você pode também usar o objeto para selects, deletes, inserts .. Compartilhar este post Link para o post Compartilhar em outros sites
H. Romeu 0 Denunciar post Postado Setembro 11, 2011 o separador de argumentos na chamada da função é a vírgula "," , para usar outro separador você vai ter que tratar a string e fazer a chamada usando vírgula, acho desnecessário o separador seria para mudar o rumo, como voce pode ver aki funtion Sql($v,$v2,$v3 | $v4, $v5, $v6){ mysql_query("INSERT INTO tabela ($v,$v2,$v3) VALUES ($v4,$v5,$v6)); } as virgulas estão lá Ficaria legal fazer um objeto somente para abstrair SQL do que funções desse tipo, porque aí você pode também usar o objeto para selects, deletes, inserts .. Isso me soou legal,mas como fazer algo do tipo Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Segue uma idéia :seta: http://forum.imasters.com.br/topic/409112-proposta-de-fluent-interface-dao-phpoo/page__view__findpost__p__1718091 Digo que nos dias de hoje, eu mudaria várias coisas nesse código, tem muita coisa errada ali, mas é apenas um start-up pra você. Dei alguns exemplos de uso dos métodos http://forum.imasters.com.br/topic/409112-proposta-de-fluent-interface-dao-phpoo/page__view__findpost__p__1717960 Compartilhar este post Link para o post Compartilhar em outros sites
H. Romeu 0 Denunciar post Postado Setembro 11, 2011 Vou dar uma olhada nisso amanhã, e quanto por um separador na chamada como o exemplo que passei, não a nada de parecido que se possa fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Seu método vai ter vários parâmetros, só isso .. basta você fazer um func_get_args, que recupera o total de argumentos da função, e dar um chunk em 3 , depois faz o implode .. <?php function createInsertStatement( ){ if( func_num_args() > 0 ) { $args = array_chunk( array_filter( func_get_args() ) , ( func_num_args() / 2 ) ); return sprintf( 'INSERT INTO ( %s ) VALUES ( %s ) ' , join( ',' , array_shift( $args ) ) , join( ',' , array_pop( $args ) ) ); } } echo createInsertStatement( 'nome', 'sobrenome' , 'estado' , 'andrey' , 'knupp' , 'minas' ); Porque a divisão ?: ( func_num_args() / 2 ) Se você tem 6 argumentos, 3 são campos, 3 são valores, se você tem 10 argumentos, 5 são campos, 5 são valores .. infinitamente .. A saída aqui: INSERT INTO ( nome,sobrenome,estado ) VALUES ( andrey,knupp,minas ) Já te dei a ferramenta, basta usa-la agora, facilmente você formata o que são campos, e valores inteiros, strings. Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 11, 2011 bakana hein andrey agora só falta uma função para colocar crase nos nomes dos campos, se me permite humilde intervenção. um detalhe faltou nome da tabela! array_map( create_function('$campo', 'return "`$campo`";'), $nome_campos); Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Utiliza closure dessa forma .. esse create_function é horrível rsrs. array_map( function( $campo ) { return "`{$campo}`"; } , $nome_campos ) ; Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 11, 2011 Utiliza closure dessa forma .. esse create_function é horrível rsrs. array_map( function( $campo ) { return "`{$campo}`"; } , $nome_campos ) ; eu uso, é q algumas versões do php, se não me engano versões anteriores a 5.2, não funcionam Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Isso mesmo Victor .. http://www.php.net/manual/en/reserved.classes.php#reserved.classes.closure Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Setembro 11, 2011 lgl Compartilhar este post Link para o post Compartilhar em outros sites