Armadillo
11-09-2007, 10:25
Boas.
Estou a fazer um script em php.
Entao, o meu problema é o seguinte: como envio os dados para um array atraves de um ciclo e depois como acedo a esses dados fora do ciclo.
Vai aqui o que estou a fazer e nao funciona la mto bem:
//...
$i=1;
//vou abrir ficheiro e retornar todos regs os para a BD MySQL
$fileUsers = fopen("http://127.0.0.1:800/sugarcrm/crm_int/ContasTeste.txt","r"); //abro ficheiro
while(! feof($fileUsers)): //enquanto nao chegar ao fim do ficheiro
$linha = fgets($fileUsers); //define $linha como conteudo do fich .
$posIniReg = strpos( $linha, '<CONTA>'); //verifica se existe a tag <CONTA> nessa linha.
if ($posIniReg===0){ //se linha for Inicio de um registo prepara p/ inserir os fields na DB
for ($i=0; $i<=20; $i++) //vai de 0 ate 20 pq 21 eh o n.º de campos existentes
{
$linha = fgets($fileUsers); //abre nova $linha
$posFimReg = strpos( $linha, '</CONTA>');
if ($posFimReg===false) //verificar se é o terminador do registo
{
//substituir o que nao interessa
$linha=str_replace(chr(9), "",$linha); //substituir TAB
$linha=str_replace(chr(13), "",$linha); //substituir CARRIAGE RETURN
$linha=str_replace(chr(10), "",$linha); //substituir LINEFEED
$campos = array("<CONTA>", "</CONTA>", "<ID>", "<DATA_IN>", "<NOME>", "<COMPRAS_ANUAIS>", "<FAX>", "<RUA_FACT>", "<CIDADE_FACT>", "<ESTADO_FACT>", "<CP>", "<PAIS>", "<TELEF1>", "<TELEF2>", "<EMAIL>", "<WWW>", "<TICKER>", "<RUA_ENTRG>", "<CIDADE_ENTRG>", "<ESTADO_ENTRG>", "<CP_ENTRG>", "<PAIS_ENTRG>", "<UTILIZADOR>");
$linha = str_replace($campos, "", $linha);
$arr[i]=$linha; //<-- Isto N Funca bem :(
echo $i . " - " . $arr[i] ."<br/>";
}//fim se
}//fim para i
echo "<br/>";
$sqlSTR="INSERT INTO accounts (id, date_entered, name, annual_revenue, phone_fax, billing_address_street, billing_address_city, billing_address_state, billing_address_postalcode, billing_address_country, phone_office, phone_alternate, email1, website, ticker_symbol, shipping_address_street, shipping_address_city, shipping_address_state,shipping_address_postalcode , shipping_address_country, assigned_user_id) VALUES ('"; //proceder á insercao
$sqlSTR=$sqlSTR . $arr[0] . "', " . $arr[1] . ", '" . $arr[2] . "', '" . $arr[3] . "', '" . $arr[4] . "', '" . $arr[5] . "', '" . $arr[6] . "', '" . $arr[7] . "', '" . $arr[8] . "', '" . $arr[9] . "', '" . $arr[10] . "', '" . $arr[11] . "', '" . $arr[12] . "', '" . $arr[13] . "', '" . $arr[14] . "', '" . $arr[15] . "', '" . $arr[16] . "', '" . $arr[17] . "', '" . $arr[18] . "', '" . $arr[19] . "', '" . $arr[20] . "')"; //AQUI N consigo retornar os valores
echo $sqlSTR . "<br/>" ;
Obrigado.
Estou a fazer um script em php.
Entao, o meu problema é o seguinte: como envio os dados para um array atraves de um ciclo e depois como acedo a esses dados fora do ciclo.
Vai aqui o que estou a fazer e nao funciona la mto bem:
//...
$i=1;
//vou abrir ficheiro e retornar todos regs os para a BD MySQL
$fileUsers = fopen("http://127.0.0.1:800/sugarcrm/crm_int/ContasTeste.txt","r"); //abro ficheiro
while(! feof($fileUsers)): //enquanto nao chegar ao fim do ficheiro
$linha = fgets($fileUsers); //define $linha como conteudo do fich .
$posIniReg = strpos( $linha, '<CONTA>'); //verifica se existe a tag <CONTA> nessa linha.
if ($posIniReg===0){ //se linha for Inicio de um registo prepara p/ inserir os fields na DB
for ($i=0; $i<=20; $i++) //vai de 0 ate 20 pq 21 eh o n.º de campos existentes
{
$linha = fgets($fileUsers); //abre nova $linha
$posFimReg = strpos( $linha, '</CONTA>');
if ($posFimReg===false) //verificar se é o terminador do registo
{
//substituir o que nao interessa
$linha=str_replace(chr(9), "",$linha); //substituir TAB
$linha=str_replace(chr(13), "",$linha); //substituir CARRIAGE RETURN
$linha=str_replace(chr(10), "",$linha); //substituir LINEFEED
$campos = array("<CONTA>", "</CONTA>", "<ID>", "<DATA_IN>", "<NOME>", "<COMPRAS_ANUAIS>", "<FAX>", "<RUA_FACT>", "<CIDADE_FACT>", "<ESTADO_FACT>", "<CP>", "<PAIS>", "<TELEF1>", "<TELEF2>", "<EMAIL>", "<WWW>", "<TICKER>", "<RUA_ENTRG>", "<CIDADE_ENTRG>", "<ESTADO_ENTRG>", "<CP_ENTRG>", "<PAIS_ENTRG>", "<UTILIZADOR>");
$linha = str_replace($campos, "", $linha);
$arr[i]=$linha; //<-- Isto N Funca bem :(
echo $i . " - " . $arr[i] ."<br/>";
}//fim se
}//fim para i
echo "<br/>";
$sqlSTR="INSERT INTO accounts (id, date_entered, name, annual_revenue, phone_fax, billing_address_street, billing_address_city, billing_address_state, billing_address_postalcode, billing_address_country, phone_office, phone_alternate, email1, website, ticker_symbol, shipping_address_street, shipping_address_city, shipping_address_state,shipping_address_postalcode , shipping_address_country, assigned_user_id) VALUES ('"; //proceder á insercao
$sqlSTR=$sqlSTR . $arr[0] . "', " . $arr[1] . ", '" . $arr[2] . "', '" . $arr[3] . "', '" . $arr[4] . "', '" . $arr[5] . "', '" . $arr[6] . "', '" . $arr[7] . "', '" . $arr[8] . "', '" . $arr[9] . "', '" . $arr[10] . "', '" . $arr[11] . "', '" . $arr[12] . "', '" . $arr[13] . "', '" . $arr[14] . "', '" . $arr[15] . "', '" . $arr[16] . "', '" . $arr[17] . "', '" . $arr[18] . "', '" . $arr[19] . "', '" . $arr[20] . "')"; //AQUI N consigo retornar os valores
echo $sqlSTR . "<br/>" ;
Obrigado.