Nícolas 4 Denunciar post Postado Julho 21, 2005 E ai povo beleza!!! Seguinte, eu to criando em um arquivo chamado constantes.php com 4 function. [*]gravanobd [*]apagadobd [*]editadados [*]exibedados Seguinte, oq eu quero fazer é agilizar os comandos com o BD, e poder fazer tudo apartir de um unico arquivos. Minha function ta funcionando bem só que eu queria fazer uma coisa que ta dificil. function gravanobd Eu vou colocar um exemplo com o grava no bd, como ta funcionando, da eu explico minha dúvida. constantes.php PHP [*]<? [*]//============================================================================// [*]// FUNÇÃO PARA GRAVAR NO BD [*] function gravanobd($tabela,$campos,$valores,$pagina){ [*] [*] [*] [*] //Trata os campos para o BD [*] $campos = explode("|",$campos); [*] $totaldecampos = count($campos); [*] $totaldecampos2 = count($campos); [*] [*] $grava = "INSERT INTO $tabela ("; [*] [*] for ($i=0;$i<$totaldecampos;$i++){ [*] [*] $grava .= $campos[$i]; [*] [*] if ($totaldecampos2 -= 1){ [*] $grava .= ","; [*] } [*] [*] } [*] [*] [*] [*] [*] //Trata os valores para o BD [*] $valores = explode("|",$valores); [*] $totaldevalores = count($valores); [*] $totaldevalores2 = count($valores); [*] [*] $grava .= ") VALUES ("; [*] [*] for ($i=0;$i<$totaldevalores;$i++){ [*] [*] $grava .= "'".$valores[$i]."'"; [*] [*] if ($totaldevalores2 -= 1){ [*] $grava .= ","; [*] } [*] } [*] [*] [*] $grava .= ")"; [*] [*] [*] [*] // GRAVA NO BANCO DE DADOS [*]$gravar = mysql_query($grava); [*] [*]if ($gravar == 1){ [*] include $pagina; [*]}else{ [*] echo "Erro no servidor:<br>".mysql_error(); [*]} [*] [*] } [*] [*]?> grava.php PHP [*]<? [*]include "config.php"; [*]include "constantes.php"; [*] [*]//============================================================================// [*]// DADOS [*] [*] [*] // DADOS DO SITE [*] $tabela = "tabela"; [*] [*] [*] // DADOS A SEREM GRAVADOS [*] $pagina = 'gravado.tpl'; [*] $nome = "Nícolas"; [*] $sobrenome = "Vieira Rossett"; [*] $idade = "18"; [*] [*] // VALORES [*] $campos = "nome|sobrenome|idade"; [*] $valores = $nome."|".$sobrenome."|".$idade; [*] [*]//============================================================================// [*]// FUNÇÃO - GRAVA NO BANCO DE DADOS [*] gravanobd($tabela,$campos,$valores,$pagina); [*] [*]?> Oque eu quero fazer é o seguinte, reparem que ao incluir o arquivo constante é só chamar a função. Ele ta gravando no bd, direitinho, mas eu queria facilitar só uma coisa. Eu tava tentando assim: $campos = '$nome|$sobrenome|$idade'; $campos = $valores; Dai na variavel $campos em usava o str_replace para retirar o cifrão ($), e explodia para separar em arrays. E eu fazia um explode na | (barra) do $valores para ele separar tb em arrays Dai ele gravava certo o nome do campo. INSERT INTO tabela (nome,sobrenome,idade) Já os valores ele salva-va no bd assim. VALUES ('$nome','$sobrenome','$idade') E não VALUES ('Nícolas','Vieira Rossett','18') Pois ele gravava a variavel no BD, não o valor dela. Já quando eu colocava assim: $campos = $nome."|".$sobrenome."|".$idade'; $campos = $valores; Fazendo os devidos tratamentos, ele tentava gravar assim: INSERT INTO tabela (Nícolas,Vieira Rossett,18) VALUES ('Nícolas','Vieira Rossett','18') Alguem sabe como eu faço para em uma só variavel (como eu tava tentando). Ou seja, eu precisar alterar somente a variavel $campo no grava.php podento assim retirar o $valores do grava.php. Ele ler o $campo como variavel e no $valor ele ler o valor da variavel??? Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Julho 21, 2005 hum...seu problema é simples cara... ao invez de usar INSERT INTO tabela (nome,sobrenome,idade)VALUES ('$nome','$sobrenome','$idade')voce pode usar apenas:INSERT INTO tabela VALUES ('$nome','$sobrenome','$idade')ai reconheceria os campos sozinho... ou voce teria que passar 2 parametros 1 array com o nome dos campos e o outro com os valores..porque quando voce define uma variavel com aspas simples ela fica igual aquele valor, ou seja $bar = '$teste'; // o valor seria $teste, agora se eu defino $bar = $teste; // o valor seria o valor de testeentendeu ?[]'s Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 21, 2005 Eu tinha pensado nisso, mas só poderia utilizar assim quando fossem preenchidos todos os campos.Mas tem o campo id, que eu não adiciono.Por tanto esta opção não funciona Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Julho 21, 2005 bom ai depende de quantos campos tem... mais o id é o de menos ^^so usa:INSERT INTO tabela VALUES ('','$nome','$sobrenome','$idade')mais tem aquela segunda opcao tambem ^^[]'s Compartilhar este post Link para o post Compartilhar em outros sites
Nícolas 4 Denunciar post Postado Julho 21, 2005 Pode crer, nem pensei em utilizar assim.Mas como eu nunca testei isso, tando os dos apóstrofos sem conteudo nele não tem risco de ele chegar vazio no BD???Será que eu não teria que tentar assim:INSERT INTO tabela VALUES (,'$nome','$sobrenome','$idade')obs: Só não tiro minha dúvida agora testando pois to no trabalho!!! Compartilhar este post Link para o post Compartilhar em outros sites