AlexArt Postado Setembro 14, 2011 Denunciar Share Postado Setembro 14, 2011 (editado) 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> Editado Setembro 14, 2011 por AlexArt Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fvox Postado Setembro 14, 2011 Denunciar Share Postado Setembro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 AlexArt Postado Setembro 14, 2011 Autor Denunciar Share Postado Setembro 14, 2011 FVOXVALEU MESMO.Funcionou perfeitamente.Um abraço.Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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>
Editado por AlexArtLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.