AlexArt Posted September 14, 2011 Report Share Posted September 14, 2011 (edited) Olá membro(os)!Sou novo na programação php e por isso peço sua ajuda.O objetivo desse código e retornar um número e incrementar a variável $i sempre com +1 a partir de um arquivo .txt.Acontece que quando o número é = a 9 , o próximo número , que deveria ser 10, retorna para 1, iniciando a contagem a partir do 1.Já tentei uma série de comando php, condicionais e loops, mas estressei. Admito que não consigo resolver.A finalidade desses arrays é guardar as strings que vem de uma tabela do banco de dados.Claro! Eu poderia usar uma tabela temporária. Mas também não me dei bem com ela.Também é óbvio que pode-se usar while or for, mas preciso que seja passo a passo, ao clique no link ou no botão.Sempre que quero inserir novos dados na tabela temporária, esta resseta, zerando tudo, até os dados já inclusos.Acredito que se usar uma sequência de arrays em sessões terei um resultado satisfatório. Os dados Serão mostrados e disponibilizados para impressão.Como vocês poderão notar, tanto o link quanto o botão submit reinicializa o código.Agradeço antecipadamente pela atenção.Código:<? // inicia a sessão session_start();// Definição de Arrays $cod = new SplFixedArray(20); $produto = new SplFixedArray(20); $unid = new SplFixedArray(20); $quant = new SplFixedArray(20); $valor = new SplFixedArray(20); $codvenda = new SplFixedArray(20); $data = new SplFixedArray(20); $lista= new SplFixedArray(20);// Abrir arquivo ANSI $char = fopen("i.txt", "r"); // pegar conteúdo do arquivo e converte-o em inteiro $i = (int)fgetc($char); // Preencher arrays com qualquer coisa, nesse caso o resultado de $i $cod[$i]=$i; $produto[$i]=$i; $unid[$i]=$i; $quant[$i]=$i; $valor[$i]=$i; $codvenda[$i]=$i; $data[$i]=$i; // preencher array de arrays $lista{$i}=array($cod[$i], $produto[$i], $unid[$i], $quant[$i], $valor[$i], $codvenda[$i], $data[$i]);// visualizando resultados echo $i."<br/>"; echo $lista[$i][0]."<br/>"; echo $lista[$i+1][1]."<br/>"; echo $lista[$i+2][2]."<br/>"; print_r($lista{$i})."<br/>"; print_r($lista{$i+1})."<br/>"; print_r($lista{$i+2})."<br/>"; // coloca o array na sessão $_SESSION["loop"] = $lista{$i};// fecha o arquivofclose($char);?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title></head><body><form id="form1" name="form1" method="post" action=""> <label> <input type="submit" name="button" id="button" value="Submit" /> </label> <label> <input type="text" name="a" id="a" /> </label> <p> </p></form><p><a href="temp.php<? // abre o arquivo$char2 = fopen("i.txt", "w");// grava no arquivo : $i+1fwrite($char2, $i+1);// fecha o arquivofclose($char2); ?>">loop</a></p></body></html> Edited September 14, 2011 by AlexArt Quote Link to comment Share on other sites More sharing options...
0 Fvox Posted September 14, 2011 Report Share Posted September 14, 2011 Acho que você complicou demais, hein. =O<?php file_put_contents('i.txt', (int)file_get_contents('i.txt') + 1); ?>Se o i.txt não existir, vai emitir um warning, mas o arquivo será criado normalmente com o valor 1:PHP Warning: file_get_contents(i.txt): failed to open stream: No such file or directory in...[]'s Quote Link to comment Share on other sites More sharing options...
0 AlexArt Posted September 14, 2011 Author Report Share Posted September 14, 2011 FVOXVALEU MESMO.Funcionou perfeitamente.Um abraço.Obrigado. Quote Link to comment Share on other sites More sharing options...
Question
AlexArt
Olá membro(os)!
Sou novo na programação php e por isso peço sua ajuda.
O objetivo desse código e retornar um número e incrementar a variável $i sempre com +1 a partir de um arquivo .txt.
Acontece que quando o número é = a 9 , o próximo número , que deveria ser 10, retorna para 1, iniciando a contagem a partir do 1.
Já tentei uma série de comando php, condicionais e loops, mas estressei. Admito que não consigo resolver.
A finalidade desses arrays é guardar as strings que vem de uma tabela do banco de dados.
Claro! Eu poderia usar uma tabela temporária. Mas também não me dei bem com ela.
Também é óbvio que pode-se usar while or for, mas preciso que seja passo a passo, ao clique no link ou no botão.
Sempre que quero inserir novos dados na tabela temporária, esta resseta, zerando tudo, até os dados já inclusos.
Acredito que se usar uma sequência de arrays em sessões terei um resultado satisfatório. Os dados Serão mostrados e disponibilizados para impressão.
Como vocês poderão notar, tanto o link quanto o botão submit reinicializa o código.
Agradeço antecipadamente pela atenção.
Código:
<?
// inicia a sessão
session_start();
// Definição de Arrays
$cod = new SplFixedArray(20);
$produto = new SplFixedArray(20);
$unid = new SplFixedArray(20);
$quant = new SplFixedArray(20);
$valor = new SplFixedArray(20);
$codvenda = new SplFixedArray(20);
$data = new SplFixedArray(20);
$lista= new SplFixedArray(20);
// Abrir arquivo ANSI
$char = fopen("i.txt", "r");
// pegar conteúdo do arquivo e converte-o em inteiro
$i = (int)fgetc($char);
// Preencher arrays com qualquer coisa, nesse caso o resultado de $i
$cod[$i]=$i; $produto[$i]=$i; $unid[$i]=$i; $quant[$i]=$i; $valor[$i]=$i; $codvenda[$i]=$i; $data[$i]=$i;
// preencher array de arrays
$lista{$i}=array($cod[$i], $produto[$i], $unid[$i], $quant[$i], $valor[$i], $codvenda[$i], $data[$i]);
// visualizando resultados
echo $i."<br/>";
echo $lista[$i][0]."<br/>";
echo $lista[$i+1][1]."<br/>";
echo $lista[$i+2][2]."<br/>";
print_r($lista{$i})."<br/>";
print_r($lista{$i+1})."<br/>";
print_r($lista{$i+2})."<br/>";
// coloca o array na sessão
$_SESSION["loop"] = $lista{$i};
// fecha o arquivo
fclose($char);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label>
<input type="submit" name="button" id="button" value="Submit" />
</label>
<label>
<input type="text" name="a" id="a" />
</label>
<p> </p>
</form>
<p><a href="temp.php<?
// abre o arquivo
$char2 = fopen("i.txt", "w");
// grava no arquivo : $i+1
fwrite($char2, $i+1);
// fecha o arquivo
fclose($char2);
?>">loop</a></p>
</body>
</html>
Edited by AlexArtLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.