Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal, depois de anos fazendo sistemas na forma estruturada comecei a mudar de ideia e finalmente me adequar ao oo, tenho uns 4 ou 5 sistemas feitos por ai, o número de paginas de insert é um absurdo, por isso resolvi criar isso aqui, como sou novo nessa parte, quero saber a opinião de quem entende mais e ver se esse meu script de inserção está legal ou da para incrementar algo mais. Abraços
<?php
include("conexao.php"); //inclui a pagina conexão
class comandos extends conexao //une a classe comandos com a classe conexão
{
function inserir($tabela, $campos)
{
foreach($campos as $valor) //laço para tratar caracteres especiais na inserção
{
$valor = mysql_real_escape_string($valor); //escapa aspas
if(floatval($valor)==0) //verifica se é float
{
$valor = $valor;
}
else
{
$valor = str_replace(array( '.', ',' ), array( null, '.' ),$valor); //converte valor para inserção no banco
}
$passaValor[] = $valor; //passa valores tratados para array
}
$campo = implode(', ',array_keys($campos)); //nomes dos campos
$valor = '"'.implode('","',array_values($passaValor)).'"'; //valores dos campos
$inserir = "INSERT INTO {$tabela} ({$campo})VALUES({$valor})";
$this->query($inserir); //query vinda da classe conexao
}
}
?>Correto, essa alteração fiz agora, mas estou querendo colocar um verificador de arquivos, para inserir fotos também, alguma ideia?
para validar imagens pode usar o type no $_FILES
if($_FILES["nome_do_cammpo"]["type"] == "image/bmp" || $_FILES["nome_do_cammpo"]["type"] == "image/gif" || $_FILES["nome_do_cammpo"]["type"] == "image/jpg" || $_FILES["nome_do_cammpo"]["type"] == "image/jpeg" || $_FILES["nome_do_cammpo"]["type"] == "image/png" || $_FILES["nome_do_cammpo"]["type"] == "image/tif" || $_FILES["nome_do_cammpo"]["type"] == "image/tiff"){Agora dei uma melhorada, com inserção de arquivos
<?php
include("conexao.php"); //inclui a pagina conexão
class comandos extends conexao //une a classe comandos com a classe conexão
{
function inserir($tabela, $campos, $arquivo)
{
foreach($campos as $valor) //laço para tratar caracteres especiais na inserção
{
$valor = mysql_real_escape_string($valor); //escapa aspas
if(floatval($valor)!=0) //verifica se é float
{
$valor = str_replace(array( '.', ',' ), array( null, '.' ),$valor); //converte valor para inserção no banco
}
$passaValor[] = $valor; //passa valores tratados para array
}
$campo = implode(', ',array_keys($campos)); //nomes dos campos
$valor = '"'.implode('","',array_values($passaValor)).'"'; //valores dos campos
$inserir = "INSERT INTO {$tabela} ({$campo})VALUES({$valor})";
$this->query($inserir); //query vinda da classe conexao
$ultimoId = mysql_insert_id(); //pega o último id inserido na tablea principal
for($i=0;$i<count($arquivo['name']);$i++) //varre quantidade de arquivos anexados
{
$ext = end(explode(".", $arquivo['name'][$i]));
$nome = md5(uniqid(time())).'.'.$ext; //codifica o nome do arquivo
$caminho = 'arquivos/'.$nome;
move_uploaded_file($arquivo['tmp_name'][$i], $caminho); //move o arquivo para a pasta destino
if($arquivo['name'][$i]!='')
{
$inserir = "INSERT INTO tbl_arquivos (id, arquivo)VALUES('".$ultimoId."', '".$nome."')";
$this->query($inserir); //query vinda da classe conexao
}
}
}
}
?>
só uma opinião pessoal. eu mudava a parte abaixo
if(floatval($valor)==0) //verifica se é float
{
else
{
$valor = str_replace(array( '.', ',' ), array( null, '.' ),$valor); //converte valor para inserção no banco
}
para
if(floatval($valor)!=0) //verifica se é float
{
$valor = str_replace(array( '.', ',' ), array( null, '.' ),$valor); //converte valor para inserção no banco
}
se $valor sendo igual a 0 vai continuar sendo $valor acho que podemos diminuir as linhas de código dessa forma