Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sir Lonely

[Resolvido] PHP não escreve em arquivo

Recommended Posts

Boa Pessoal.

 

Estou aqui recorrendo a vocês sobre minhas duvidas de principiante.

 

É o seguinte.

 

preciso fazer um sistema de Conferência para a faculdade.

 

Preciso montar um Banco de Dados em TXT. Por exigência.

 

Utilizo o Xamp como emulador de apache.

 

O que ocorre é que o PHP não está escrevendo no arquivo .txt.

 

Estou colocando o Código para melhor entendimento.

 

INDEX.PHP (arquivo onde insiro os numero para jogar no DB.txt)

<body>
<center>
  <b><font size="3" color="#000000"> Inserir Desdobramentos</font></b>
</center>
<?
$conteudo = file("db.txt",0);
	for ($i=0;$i<=sizeof($conteudo);$i++)
		{
			echo $conteudo[$i]; //mostra array na posição 1
			echo "<br>";
		}
?>

<form action="enviar.php" method="post">
	
    <b>Desdobramento</b>:<input type="text" size="5" name"seq1"> <input type="text" size="5" name"seq2"> <input type="text" size="5" name"seq3"> <input type="text" size="5" name"seq4"> <input type="text" size="5" name"seq5"> <input type="text" size="5" name"seq6"> <input type="text" size="5" name"seq7"> <input type="text" size="5" name"seq8"> <input type="text" size="5" name"seq9"> <input type="text" size="5" name"seq10">
    <br />
  

<input type="submit" value="Enviar">

</form>

</body>
</html>

Arquivo que faz a Escrita no arquivo DB.TXT

<?
$arquivo =fopen("db.txt","a+",0); //abrir arquivo e ir para o final das linhas

//formatar a String a ser escrita

$texto = "___________________\n\n"; //divisor de linhas
$texto=$texto."Desdobramentos: ".$desd."\n\n"; //adiciona os numeros

fwrite($arquivo,$texto,strlen($texto));//escreve no arquivo
fclose($arquivo); //fecha o arquivo

//voltar para pagina inicial
echo '<script> window.location="index.php";</script>
?>

O Script para retornar a página, também não funciona.

 

Desde já muitissimo Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suas Open Tags estão erradas...

 

Troque todos os '<?' por '<?php'

 

Faça o que o amigo ai de cima cito...

 

Altere as tags..

Eu tive o mesmo problema anteriormente. Foi alterar as tags da maneira acima e resolveu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse erros de Principiante.

 

Muito Obrigado amigo resolveu sim.

 

era só adicionar o <?php

 

E o Código de Retornar a página faltava fechar a aspas simples.

 

Antes de fechar o Post queria perguntar uma coisa.

No código de envio, mais especificamente essa parte:

<b>Desdobramento</b>:<input type="text" size="5" name"seq1"> <input type="text" size="5" name"seq2">

Percebam que coloquei name"seq1" e name"seq2".

 

Como ja devem ter entendido, eu preciso, depois, buscar esses valores no Db.txt e fazer uma conferência.

Ex.

 

são 10 campos no form para preencher. digamos que sejam esses valores: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20.

Na conferência vou digitar outros 10 numeros, e preciso dizer em que Sequencia os numeros combinaram.

 

Se souberem um meio mais pratico, sou todo ouvidos.!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não sei se entendi, mas você está precisando enviar todos esses campos e depois tratá-los de alguma maneira, certo?

 

1 - Na página do formulário, para gerar os inputs, faça de uma forma mais lógica, utilizando algum tipo de loop:

<b>Desdobramento</b>:
<?php
for ($i=1; $i <= 10; ++$i) {
  echo '<input type="text" size="5" name"seq[]">';
}
?>
<br />
OBS: No lugar de seq[], pode-se utilizar "seq'.$i.'", sem as aspas duplas. Dessa forma ao invés de criar-se uma array, fará exatamente da forma que você estava fazendo, porém automatizado, ou seja: seq1, seq2, seq3...

 

2 - Na página de tratamento dos dados, faça assim:

foreach ($_POST['seq'] as $valor) {
  echo $valor.'<br />'; //nao sei o q você precisa fazer.. mas você ja tem o valor de cada um no loop, basta adaptar
}

3 - Troque todos os seus <? por <?php - Nem todos os servidores suportam a primeira opção.

 

Desculpe se não era isso que você precisava, mas a explicação não foi muito boa, e tive que me virar.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não sei se entendi, mas você está precisando enviar todos esses campos e depois tratá-los de alguma maneira, certo?

 

1 - Na página do formulário, para gerar os inputs, faça de uma forma mais lógica, utilizando algum tipo de loop:

<b>Desdobramento</b>:
<?php
for ($i=1; $i <= 10; ++$i) {
  echo '<input type="text" size="5" name"seq[]">';
}
?>
<br />
OBS: No lugar de seq[], pode-se utilizar "seq'.$i.'", sem as aspas duplas. Dessa forma ao invés de criar-se uma array, fará exatamente da forma que você estava fazendo, porém automatizado, ou seja: seq1, seq2, seq3...

 

2 - Na página de tratamento dos dados, faça assim:

foreach ($_POST['seq'] as $valor) {
  echo $valor.'<br />'; //nao sei o q você precisa fazer.. mas você ja tem o valor de cada um no loop, basta adaptar
}

3 - Troque todos os seus <? por <?php - Nem todos os servidores suportam a primeira opção.

 

Desculpe se não era isso que você precisava, mas a explicação não foi muito boa, e tive que me virar.

 

Abraço.

 

Entendi a lógica que tu disse. Poreém, não está imprimindo no Db.txt.

 

Para melhor entendimento.

O que preciso fazer é um sistema de conferencia.

Na pagina de Formulário, a pessoa preenche 10 campos com numero de 0 a 99.

é mais fácil pensar em Loteria da Caixa. O cara preenche o "jogo" e quando o resultado sair, (de 10 digitos tambem) preciso dizer em quais "casas" ele "acertou".

 

Por questão de escrita do db, no form eu fiz com 10 quadros ao invez de uma tabela onde preencheria todos os digitos com separadores, seja "," ";" ou "espaço" achei melhor fazer 10 tabelas, e identifica-las em linhas horizontais no DB.

 

Porém, após perceber aquele erro do Open Tag, verifiquei que a escrita não vinha pro DB, os número não eram impressos no DB.

 

Vou colar o Código como está agora, para verificar se cometi outros erros!

Obrigado a todos pela ajuda. De verdade. Vivendo e Aprendendo.

 

Arquivo que Escreve no DB

<?php
$arquivo =fopen("db.txt","a+",0); //abrir arquivo e ir para o final das linhas

//formatar a String a ser escrita

foreach ($_POST['seq'] as $valor) {
  echo $valor.'<br />'; //nao sei o q você precisa fazer.. mas você ja tem o valor de cada um no loop, basta adaptar
}

fwrite($arquivo,$valor,strlen($valor));//escreve no arquivo
fclose($arquivo); //fecha o arquivo

//voltar para pagina inicial
echo '<script> window.location="index.php";</script>'
?>

Formulário

<body>
<center>
  <b><font size="3" color="#000000"> Inserir Desdobramentos</font></b>
</center>
<?php
$conteudo = file("db.txt",0);
	for ($i=0;$i<=sizeof($conteudo);$i++)
		{
			echo $conteudo[$i]; //mostra array na posição 1
			echo "<br>";
		}
?>

<form action="enviar.php" method="post">
	
    <b>Desdobramento</b>:
<?php
for ($i=1; $i <= 10; ++$i) {
  echo '<input type="text" size="5" name=seq.$i.>';
}
?>
<br />
  

<input type="submit" value="Enviar">

</form>

</body>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Qual o conteúdo do arquivo .txt?

Não entendi bem que dados você precisa comparar.

O usuário envia os inputs, e depois? Explique essa parte para que possamos te ajudar melhor.

 

Até mais.

 

Pagina de INPUT's

Form onde cadastra os numeros.

 

Db.txt

Imprime tudo que está no Imput de cadastro.

 

Pagina de Conferencia

Digito 10 numero e ele confere quantas vezes acertou e em que linha.

Ex.

conteudo do DB.txt

Linha 1:: 01 02 03 04 05 06 10 15 16 18

Linha 2:: 03 05 06 07 09 10 15 16 20 22

Linha 3:: 03 07 08 09 10 16 18 19 20 23

 

Página de Conferencia

Um unico formulario onde digito 10 numeros e ele vai no Db.txt e conferi em todas as linhas.

Ex.

01 02 08 10 11 16 17 19 20 22

 

Então ele me retornaria:

Linha 1... 2 acertos

Linha 2... 1 acerto

linha 3... 6 acertos

 

A ordem de preenchimento do Form que envia pro db, vai ser sempre crescente, mas isso vai ser feito na mão mesmo.

 

Apenas isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah! Muito melhor explicado. Agora vamos às explicações:

 

Temos o arquivo db.txt com as seguintes linhas:

 

01 02 03 04 05 06 10 15 16 18

03 05 06 07 09 10 15 16 20 22

03 11 15 16 19 20 22 33 55 66

01 02 15 16 19 18 19 33 55 22

Daí temos os inputs todos dessa forma:

 

for ($i=1; $i <= 10; ++$i) {
  echo '<input type="text" size="5" name"seq[]">';
}

Agora, na página de tratamento dos inputs e verificação dos resultados, fazemos assim:

 

<?php
$seq = array('03','12','15','20','21','22','32','33','55','54');
$arquivo = file('db.txt');
$acertos = 0;

foreach ($arquivo as $linha => $linhaConteudo) {
	foreach ($seq as $numero) {
		if (!strstr($linhaConteudo, $numero)===FALSE) {
			++$acertos;
		}
	}
	echo 'Linha <b>'.($linha+1).'</b>: '.$acertos.' acertos<br />';
	$acertos = 0;
}
?>

Resultado: http://haxor.com.br/tjogos/

 

Lembrando que não usei input pra fazer esse exemplo. Apenas substitua $seq = array... pelo teu POST.

 

Resolvido?

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus Obrigado pela ajuda parceiro.

 

Mas, é essa toda a complicação. o Resultado tem que bater no mesmo "quadro" saca?

 

01 02 03 04 05 06 08 09 10 11 (imput no DB)

02 03 04 05 06 07 08 09 10 12 (Conferencia)

 

Nesse caso, os únicos acertos foram:

 

08,09,10

 

Pois estão no mesmo "quadro".

 

Outro detalhe, é que o Db vai aumentar, chegando a um maximo de 50 linhas.

Porem a sequencia de verificação vai sempre mudar!

 

Muito obrigado pelo seu tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parceiro, nem está escrevendo no Db.txt com o form.

 

<body>
<center>
  <b><font size="3" color="#000000"> Inserir Desdobramentos</font></b>
</center>
<form action="enviar.php" method="post">
 <?php
  for ($i=1; $i <= 10; ++$i) {
  echo '<input type="text" size="5" name"seq[]">';
}
?>
<input type="submit" value="Enviar">

</form>

</body>
Enviar.php (tratamento do Iput's)

<?php
$seq = array('03','12','15','20','21','22','32','33','55','54');
$arquivo = file('db.txt');
$acertos = 0;

foreach ($arquivo as $linha => $linhaConteudo) {
        foreach ($seq as $numero) {
                if (!strstr($linhaConteudo, $numero)===FALSE) {
                        ++$acertos;
                }
        }
        echo 'Linha <b>'.($linha+1).'</b>: '.$acertos.' acertos<br />';
        $acertos = 0;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O q você precisa escrever no Db.txt?

Ele não é somente o arquivo com os números a serem verificados?

 

Para escrita em arquivosm leia com carinho estas 2 funções do PHP:

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Fopen

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Fwrite

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Malz a Ignorancia.

 

é que eu pensei que aquele input que tu disse fosse os inputs para gravar no DB. e não para Conferir.

 

Está tudo Funcionando. 100%

 

Já fiz os Inputs para gravar no DB.

 

Brigadão Matheus. 100% Resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.