
Bom seu código me serviu para criar um esquema de envio de e-mails que estava precisando via txt.
Bom, andei fusando pela net e achei um código excelente e adaptei ele as minhas necessidades.
Tentei voltar a página na qual achei ele p/ dar os créditos ao autor, mas não entrou na página. =|
Segue abaixo o código:
Explicando o que o código abaixo faz:
1 Supondo que você tenha um arquivo txt com vários campos na primeira linha relacionados a um produto.
Os campos terão que ser separados por algum caracter, neste aqui esta ",". Lembra que eu comentei sobre os espaços em branco que ficava entre um campo e outro, qdo ele grava no Banco, ele desconsidera esses campos

2 - Você terá que criar no seu ftp uma pasta com nome de sua escolha para upar os arquivos e gravá-los neles, dando permissão de gravação. Os arquivos são renomeados de uma forma simples e prática: por data e hora e renomeia tb p/ csv (Arquivo Excel) como pode ver abaixo no código.
3 - Neste código existe uma condição de limite ao arquivo a ser upado: 100K, fica seu critério isso.
4 - Feito o "up" ele grava na tabela todos os dados do txt, repare que qdo ele faz o load ele determina qual caracter é o diferenciador dos campos, que é o ",".
5 - Bom, é isso. Foi mto útil este código a mim, acredito que mtos as vezes precisam de algo do gênero.
<?
if($submit) {
$dbhost = "";
$dbuser = "";
$dbpass = "";
$dbname = "";
$con = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $con);
$mypath="./upload/"; //NESTA LINHA VOCÊ COLOCA O LOCAL ONDE TEM PERMISSÃO DE GRAVACÃO PARA QUE O ARQUIVO POSSA SER UPLOADADO
$mytable="TABELA"; // AQUI VOCÊ ESCOLHE O NOME DA TABELA
if ($upfile_size<="100000000") { // LIMITE DE UPLOAD DE 100K
$status="Ok";
$uploaded=date("YmdHis");
$myfile=$mypath .$uploaded .".csv"; //AQUI ELE RENOMEIA O ARQUIVO .CSV = TABELA DE EXCEL
if (copy($upfile, $myfile)) {
$status.=", arquivo copiado para a pasta UPLOAD.";
//COLOCAR O ARQUIVO NA TABELA
$insert_csv="LOAD DATA LOCAL INFILE '$myfile' INTO TABLE $mytable FIELDS TERMINATED BY ','";
$result_csv = mysql_query($insert_csv, $con) or die("NÃO VIROU ... " .mysql_error());
echo "$myfile<br>";
echo "$upfile<br>";
if ($result_csv) {
$status.=" e gravado no banco de dados.";
} else {
$status.=" MAS NÃO FOI POSSIVEL COLOCAR NA BASE DE DADOS";
}
} else {
$status.="... O ARQUIVO NAO FOI COPIADO";
}
echo "$status";
} else {
echo "ARQUIVO MUITO GRANDE";
}
} else {
?>
<html>
<head>
<title>Upload csv-file</title>
</head>
<body bgcolor="#ffffff" text="#000000" id=all>
<form enctype="multipart/form-data" action="<? echo "$PHP_SELF"; ?>" method=POST>
<div align="center">
<table border="0" cellpadding="0" cellspacing="0" width="600" align="center">
<tr>
<td width="200" align="left" valign="top">UPAR</td>
<td width="400" valign="top"><input name="upfile" type="file"><br><br></td>
</tr>
<tr>
<td width="100%" colspan="2" align="center"><input type="submit" name="submit" value="Upload"></td>
</tr>
</table>
</div>
</form>
</body>
</html>
<?
}
?>
Valeu !!!
Qq coisa eu volto.
Independente deste código que eu postei.
Qual seria a maneira de programar desta forma:
Arquivo txt:
maria rua tiradentes são paulo 350,00
josé da silva rua julio mesquita são paulo 750,15
----------------------------------------------------------------
Desta forma, eu sabendo que o campo nome pode ter no máximo 50 caracteres, e se o nome for 12, ele deixa 38 em branco como o arquivo vem, é possível pegar os dados sem ter um caracter diferenciando o campo ???? E como se alguém souber ?
Edição feita por: xaceshighx, 17/07/2006, 13:44.