View Full Version : Questao simples de php e array


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.

Armadillo
11-09-2007, 11:25
Ok, é por isto que odeio php. Faltava-me o simbolo $ depois do i.


//...
$arr[$i]=$linha;
echo $i . " - " . $arr[$i] ."<br/>";
//...

jota WA
11-09-2007, 12:12
Ok, é por isto que odeio php. Faltava-me o simbolo $ depois do i.


//...
$arr[$i]=$linha;
echo $i . " - " . $arr[$i] ."<br/>";
//...


LOL!Por akaso reparei nisso e ia responder,mas pelos vistos ja resolveste ;)!
PHP é maroto pq basta eskecer-se d um $ q o codigo descamba todo por ai fora :D!
Cumps

CoolMaster
11-09-2007, 12:21
Então vocês devem odiar e achar que todas as linguagens são marotas? Ou nem por isso?

Em todas se tivermos um ',},) etc etc a mais/menos etc etc, já vai deixar de funcionar.

A única diferença é que neste caso o PHP aceita aquilo porque ele assume o i como sendo uma constante, caso não a encontre o index fica o proprio "i".

jota WA
11-09-2007, 12:46
Então vocês devem odiar e achar que todas as linguagens são marotas? Ou nem por isso?

Em todas se tivermos um ',},) etc etc a mais/menos etc etc, já vai deixar de funcionar.

A única diferença é que neste caso o PHP aceita aquilo porque ele assume o i como sendo uma constante, caso não a encontre o index fica o proprio "i".

Eu pelo menos nao disse q odiava ou q axava q SO o PHP era maroto...klaro q em todas as linguagens á sinais e simbolos q s nao forem respeitados resultam no crash do programa...tava-me a referir a este exemplo apenas...
Cumps