Jump to content


CMAC's Content

There have been 93 items by CMAC (Search limited from 23/05/2023)



Ordernar por                Order  

#958036 Galeria Brasil

Posted by CMAC on 16/02/2009, 18:18 in Artigos, Dicas e Tutoriais de PHP

Muito bom a iniciativa de desenvolver uma galeria por nós brasileiros. A galeria tem um interface boa e parece ter funções legais. Porém, estive a analisar o código da galeria.php e do que vi não gostei de algumas coisas:

O código é vulnerável a SQL Injection e também a XSS, e que deveria ter muita atenção nestes caso.

Para listar a galeria o script faz uso de cinco queries SQL, poderia ser reduzida para duas ou uma.

O uso de uma classe de template (Smarty) para uma aplicação pequena torna-se desnecessária. Embora a utilização de templates ajuda as outras pessoas a usar a galeria com o layout que quiser, o Smarty é um pouco pesado. Poderia-se desenvolver uma classe de template própria, com os recursos necessários e suficientes.

Estas são criticas construtivas, apenas com o intuito de melhorar a galeria para a comunidade.

Se precisarem de ajuda, ideias, ou opiniões estou apto a ajudar.


Sobre os erros do Aurélio Fidêncio, pelo que vi no código, os erros relacionados com o mysql aparecem porque você não insere o id da galeria na url (este caso devia ser previsto pelo script). O link deve ser http://www.supervibe...leria.php?gal=1

em que o 1 é apenas um exemplo.

Sobre o erro de não encontrar o arquivo galeria.html, se o arquivo está no local de origem, então possivelmente o erro está ao buscar as tais configurações no banco de dados. Coloque
$_CONFIG['template'] = 'default';
depois da linha 34 e antes da 85 no arquivo galeria.php e teste. Se funcionar, então o problema é com a conexão com o banco de dados.

Ah, seu site está com Trojan-Clicker.JS.Linker.w segundo o Kaspersky.

Abraços



#953635 Classe Mysql (insert, Delete, Update, Select)

Posted by CMAC on 15/01/2009, 13:15 in Artigos, Dicas e Tutoriais de PHP

Boa iniciativa...

Você já testou essa classe?

Nesta parte:
// Estancia o objeto e já faz a conexão
$sql = new conectar('localhost','database','user','password');

Não deveria ser assim:
$sql = new Mysql('localhost','database','user','password');

e alterar o __construct para:
public function __construct($host,$db,$usuario,$senha){
	return $this->conectar($host,$db,$usuario,$senha);
} // Fecha Function

A função __destruct não deveria ser assim:
public function __destruct(){
	return $this->desconectar();
}

Para primeira classe está bom, mas você pode implementar mais funcionalidades na classe.

Abraços



#955863 Fazer Diferença De Horas Que Estão No Mysql, Mas...

Posted by CMAC on 29/01/2009, 11:19 in PHP

Com certeza é melhor começar do zero. Crie uma classe para realizar estes métodos. Assim você mantém seu código mais organizado para futuras modificações.

Outra coisa, na tabela do banco de dados você pode usar somente três campos:
id INT AUTO_INCREMENT
user_id smallint(10) NOT NULL
entra DATETIME
sai DATETIME

Para inserir a entrada fazia:
mysql_query("INSERT INTO `persons` (`user_id`, `entra`) VALUES(" . $_SESSION['user_id'] . ", NOW())");

Supondo que o id do usuário está na variável $_SESSION['user_id'].

Para dar saída, fazer:
$result = mysql_query("SELECT `id` FROM `persons` WHERE `sai` = NULL AND `user_id` = " . $_SESSION['user_id'] . " ORDER BY `id` DESC LIMIT 1");
if(mysql_num_rows($result)) {
	$row = mysql_fetch_array($result);
	mysql_query("UPDATE `persons` SET `sai` = NOW() WHERE id = " . $row['id']);
}

Se não quiser fazer a consulta antes de atualizar, podia guardar o id da última entrada na tabela do usuário, assim poupava uma query.

E se quiser saber o dia, semana, mês, turno? Use o PHP + Cabeça ;)

Nota: não testei o código acima, pode conter erros.



#955622 Fazer Diferença De Horas Que Estão No Mysql, Mas...

Posted by CMAC on 27/01/2009, 18:42 in PHP

Interessante este sistema.

Se o usuário digitar uma hora diferente da atual pode simplesmente enganar a empresa. Por exemplo, são 6:50 da manhã e eu estou entrando, se colocar 6:00 vou ganhar 50 minutos do que não fiz.

O ideal seria usar a hora do servidor, assim ficava só com o botão de entra e sai. E na query, era só usar NOW().

É claro que é o meu ponto de vista, posso estar enganado nisso...



#974840 Gravar Nome Da Imagem No Banco

Posted by CMAC on 21/07/2009, 18:01 in PHP

Substitua seu código pelo seguinte.

<?php
error_reporting(E_ALL); 
// Aqui incluimos a classe upload
include('class.upload.php');
if (isset($_FILES['imagem']) AND count($_FILES['imagem']))
{
	$files = array(); 
	for($i = 0; $i < count($_FILES['imagem']['name']); $i++)
	{
		if( ! empty($_FILES['imagem']['name'][$i]))
		{
			$files[] = array(
				'name' => $_FILES['imagem']['name'][$i],
				'type' => $_FILES['imagem']['type'][$i],
				'tmp_name' => $_FILES['imagem']['tmp_name'][$i],
				'error' => $_FILES['imagem']['error'][$i],
				'size' => $_FILES['imagem']['size'][$i]
			);
		}
	}
	
	$data = array();
	$errors = array();
	$i = 0;
	foreach($files as $imagem)
	{
		$handle = new Upload($imagem);
		if($handle->uploaded)
		{
			$handle->image_resize = true;
			$handle->image_ratio_y = false;
			$handle->image_x = 800;
			$handle->image_y = 600;
			$handle->file_new_name_body = "foto";
			$handle->Process('../../img/');
			
			if($handle->processed)
			{
				$data[$i]['img'] = $handle->file_dst_name;
				
				// Criando os thumbs
				$handle->image_resize = true;
				$handle->image_ratio_y = false;
				$handle->image_x = 100;
				$handle->image_y = 75;
				$handle->image_contrast = 10;
				$handle->jpeg_quality = 70;
				$handle->file_new_name_body = "thumbs";
				$handle->Process('../../img/thumbs/');
				
				if($handle->processed)
				{
					$data[$i]['thumb'] = $handle->file_dst_name;
				}
				else
				{
					$errors[] = 'Erro ao processar o thumb ' . $i;
				}
			}
			else
			{
					$errors[] = 'Erro ao processar a imagem ' . $i;
			}
		}
		
		$i++;
	}
	
	$names = array('fotoa', 'fotob', 'fotoc', 'fotod');
	$campos = '';
	$valores = '';
	foreach($data as $key)
	{
		$campos .= "`" . array_shift($names) . '`,';
		$valores .= "'" . $key['img'] . "',";
	}
	$sql = "INSERT INTO `tbteste` (" . substr($campos, 0, -1) . ") VALUES(" . substr($valores, 0, -1) . ")";
	$resultado = mysql_query($sql) or die (mysql_error());
}
?> 
<a href="../../html/index.html">Voltar</a>

Note que sua tabela do banco de dados deve ter as colunas fotoa, fotob, fotoc, fotod. Assim, o script insere somente as fotos que fizer upload. Em caso de algum erro no upload, o array $errors indicara qual(is) a(s) imagem(ns) com erro(s).

Com esse script você pode fazer upload de até 4 fotos, se quiser aumentar este limite, basta inserir no array $names o nome das colunas do banco de dados.

Outra coisa, o nome do thumb você pega no array $dados. O array $dados tem a seguinte forma depois de feito o upload:

Array
(
	[0] => Array
		(
			[img] => foto_3.jpg
			[thumb] => thumbs_3.jpg
		)

	[1] => Array
		(
			[img] => foto_4.jpg
			[thumb] => thumbs_4.jpg
		)

	[2] => Array
		(
			[img] => foto_5.jpg
			[thumb] => thumbs_5.jpg
		)

)

Veja o código completo que usei para testar:
<form action="" method="post" enctype="multipart/form-data">
	<input type="file" name="imagem[]"/><br />
	<input type="file" name="imagem[]"/><br />
	<input type="file" name="imagem[]"/><br />
	<input type="file" name="imagem[]"/><br />
	<input type="submit" />
</form>

<?php
error_reporting(E_ALL); 
// Aqui incluimos a classe upload
include('class.upload.php');
if (isset($_FILES['imagem']) AND count($_FILES['imagem']))
{
	$files = array(); 
	for($i = 0; $i < count($_FILES['imagem']['name']); $i++)
	{
		if( ! empty($_FILES['imagem']['name'][$i]))
		{
			$files[] = array(
				'name' => $_FILES['imagem']['name'][$i],
				'type' => $_FILES['imagem']['type'][$i],
				'tmp_name' => $_FILES['imagem']['tmp_name'][$i],
				'error' => $_FILES['imagem']['error'][$i],
				'size' => $_FILES['imagem']['size'][$i]
			);
		}
	}
	
	$data = array();
	$errors = array();
	$i = 0;
	foreach($files as $imagem)
	{
		$handle = new Upload($imagem);
		if($handle->uploaded)
		{
			$handle->image_resize = true;
			$handle->image_ratio_y = false;
			$handle->image_x = 800;
			$handle->image_y = 600;
			$handle->file_new_name_body = "foto";
			$handle->Process('../../img/');
			
			if($handle->processed)
			{
				$data[$i]['img'] = $handle->file_dst_name;
				
				// Criando os thumbs
				$handle->image_resize = true;
				$handle->image_ratio_y = false;
				$handle->image_x = 100;
				$handle->image_y = 75;
				$handle->image_contrast = 10;
				$handle->jpeg_quality = 70;
				$handle->file_new_name_body = "thumbs";
				$handle->Process('../../img/thumbs/');
				
				if($handle->processed)
				{
					$data[$i]['thumb'] = $handle->file_dst_name;
				}
				else
				{
					$errors[] = 'Erro ao processar o thumb ' . $i;
				}
			}
			else
			{
					$errors[] = 'Erro ao processar a imagem ' . $i;
			}
		}
		
		$i++;
	}
	
	$names = array('fotoa', 'fotob', 'fotoc', 'fotod');
	$campos = '';
	$valores = '';
	foreach($data as $key)
	{
		$campos .= "`" . array_shift($names) . '`,';
		$valores .= "'" . $key['img'] . "',";
	}
	$sql = "INSERT INTO `tbteste` (" . substr($campos, 0, -1) . ") VALUES(" . substr($valores, 0, -1) . ")";
	$resultado = mysql_query($sql) or die (mysql_error());
}
?> 
<a href="../../html/index.html">Voltar</a>

Espero que resolva o seu problema, e que você tente perceber como foi resolvido.



#936487 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 11:51 in PHP

Acho que o problema é que você não está pegando as variáveis via POST.

Um exemplo seria:

[codebox]//Obtendo os dados
$ra_aluno_novo = $_POST['ra_aluno_novo'];
$nome_aluno = $_POST['nome_aluno'];

$sql = "UPDATE aluno SET ra_aluno = '$ra_aluno_novo' WHERE nome_aluno='$nome_aluno'";[/codebox]

Neste caso você precisa adicionar no formulário do arquivo alteracao.php, um campo "hidden" com a váriavel nome do aluno. Exemplo:

[codebox]echo "<input name='nome_aluno' type='hidden' value='$nome_aluno'>";[/codebox]


Também deve remover o include do arquivo alteracao_db_php

Cuidado ao adicionar dados no banco. Tente saber mais sobre "SQL Injection".

Espero ter ajudado.



#975829 Gravar Nome Da Imagem No Banco

Posted by CMAC on 30/07/2009, 14:47 in PHP

Supondo que busque as colunas de uma determinada linha com mysql_query, e que o resultado esteja na variável $resultado. Supondo ainda que você tem o formulário como citado acima, para realizar a sua lógica basta fazer assim:

extract($resultado);

$names = array('fotoprincipal', 'fotoa', 'fotob', 'fotoc', 'fotod', 'fotoe', 'fotof', 'fotog', 'fotoh', 'fotoi', 'fotoj', 'fotol');
$sql = '';

foreach($names as $k)
{
	$sql .= "`" . $k . "` = '" . (empty($$k) ? $_POST[$k . '_velha'] : $$k) . "', ";
}

$sql = "UPDATE `tbteste` SET " . substr($sql, 0, -2) . " WHERE `ref` = " . $ref;

echo $sql;

Faça isso e veja o que é imprimido. Se for o que quer então no lugar do echo você coloca mysql_query($sql);



#973277 Gravar Nome Da Imagem No Banco

Posted by CMAC on 08/07/2009, 11:30 in PHP

Tente buscar a propriedade $handle->file_dst_name após chamar o método $handle->Process(...). O código pode ser assim:

<?php
error_reporting(E_ALL);
include('class.upload.php');
	if ($_FILES['imagem']) {
		$files = array();
		foreach ($_FILES['imagem'] as $k => $l) {
			foreach ($l as $i => $v) {
				if (!array_key_exists($i, $files))
					$files[$i] = array();
					$files[$i][$k] = $v;
				}
			}
			foreach ($files as $file) {
				$handle = new Upload($file);
				if ($handle->uploaded) {
					$handle->image_resize			= true;		 
					$handle->image_ratio_y		   = false;		
					$handle->image_x				 = 800;			
					$handle->image_y				 = 600;			
					$handle->file_new_name_body =	"foto";		// Aqui é onde eu renomeio as imagens
					$handle->Process("imagens/");
					echo $handle->file_dst_name . '<br />';
					$handle-> Clean(); 
				}// Fecha if ($handle->uploaded)
		}// Fecha foreach
	}
?>

Fonte: FAQ da Classe

Espero ter ajudado.



#974585 Gravar Nome Da Imagem No Banco

Posted by CMAC on 20/07/2009, 14:54 in PHP

Se você está fazendo o upload sempre de 4 fotos distintas, tente assim:

<?php
error_reporting(E_ALL);
include('class.upload.php');
	if ($_FILES['imagem'])
	{
		$files = array();
		foreach ($_FILES['imagem'] as $k => $l)
		{
			foreach ($l as $i => $v)
			{
				if (!array_key_exists($i, $files))
				{
					$files[$i] = array();
					$files[$i][$k] = $v;
				}
			}
		}
			
			
		$fotos = array(); // Array para os nomes das fotos
		foreach ($files as $file)
		{
			$handle = new Upload($file);
			if ($handle->uploaded)
			{
				$handle->image_resize			= true;		 
				$handle->image_ratio_y		   = false;		
				$handle->image_x				 = 800;			
				$handle->image_y				 = 600;			
				$handle->file_new_name_body =	"foto";		// Aqui é onde eu renomeio as imagens
				$handle->Process("imagens/");
				$fotos[] = $handle->file_dst_name; // Insere o nome da foto atual no array
				$handle-> Clean(); 
			}// Fecha if ($handle->uploaded)
		}// Fecha foreach
		
		// Faz a inserção no banco de dados
		$insere = "INSERT INTO tbteste (fotoa,fotob,fotoc,fotod) VALUES ('".$fotos[0]."','".$fotos[1]."','".$fotos[2]."','".$fotos[3]."')";
		$resultado = mysql_query($insere) or die (mysql_error());
	}
?>

PS: Não testei o código.

Note que no ciclo foreach($files as $file) você cria uma instancia da classe upload a cada iteração. Por isso, se você obter $handle->file_dst_name fora do ciclo, os dados serão somente da última iteração (última imagem) ou então em vazio (caso o método Clean limpar as variáveis da classe).

Por isso, em cada iteração guardo o nome da imagem num array, para posteriormente a inserção no banco de dados.

Caso o número de fotos seja variável, você terá que tratar os dados antes da inserção.

Se não der certo, poste o código todo que fica mais fácil perceber e ajudar.

Espero ter ajudado.



#936548 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 17:48 in PHP

Para alterar o formato no momento que é digitado você deve usar javascript.

Sobre OO, você poderia criar uma Classe Aluno, em que nessa classe era possível editar (UPDATE), eliminar, (...) um determinado aluno. Poderia também criar uma Classe Database, em que seriam feito os métodos de conexão, query, etc.

Um exemplo, bem simples seria do tipo:
[codebox]<?php

class Aluno extends Database {

//Nome do aluno
protected $nome;

//Id do aluno
protected $id;

/**
* Constructor
*
*/
public function __construct() {

}

/**
* Procura um aluno no banco de dados
*
*/
public function procurar() {

}

/**
* Atualiza um aluno no banco de dados
*/
public function update($dados = array()) {

}

/**
* Apaga um aluno do banco de dados
*/
public function apagar() {

}

/**
* Define o nome do usuario
*/
public function set_aluno($nome = '') {

$this->nome = $nome;

}

}

?>[/codebox]

Tente também evitar misturar código php com html.

Boa Sorte!



#936520 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 15:22 in PHP

Coloque aqui o código destes dois arquivos novamente...



#936517 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 14:59 in PHP

Você testou com o arquivo alteracao.php que mandei?

Lá também tem uma mudança.

Note que ele não consegue pegar o 'nome_aluno'. O que fiz foi inserir este campo do tipo 'hidden'.



#936505 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 14:10 in PHP

Tenta assim:

alteracao.php
<?php$connect = mysql_connect("localhost", "root","") or die("Connection Failure to Database");mysql_select_db("cadastro", $connect) or die ("Não é possível selecionar o banco de dados");$nome_aluno = $_POST['nome_aluno'];$sql = "SELECT * FROM cadastro.aluno where nome_aluno='$nome_aluno'";$result = mysql_query($sql) or die ("Não foi possível realizar a consulta no Banco de Dados");while ( $linha = mysql_fetch_array($result)) {	$ra_aluno = $linha["ra_aluno"];	$turma_id_turma = $linha["turma_id_turma"];	$nome_aluno = $linha["nome_aluno"];	$logradouro = $linha["logradouro"];	$numero = $linha["numero"];	$bairro = $linha["bairro"];	$cidade = $linha["cidade"];	$estado = $linha["estado"];	$telefone = $linha["telefone"];	$naturalidade = $linha["naturalidade"];	$nome_pai = $linha["nome_pai"];	$nome_mae = $linha["nome_mae"];?>	<h1> Alterar Cadastro de Alunos</h1>	<hr><br>	<form action='alteracao_db_php.php' method='post'>	Ra Aluno: <input name='ra_aluno_novo' type='text' value='<?=$ra_aluno;?>' size=30><br>	Turma ID: <input name='turma_id_novo' type='text' value='<?=$turma_id_turma;?>' size=30><br>	Nome do Aluno: <input name='nome_aluno_novo' type='text' value='<?=$nome_aluno;?>' size=30><br>	Logradouro: <input name='logradouro_novo' type='text' value='<?=$logradouro;?>' size=30><br>	Numero: <input name='numero_novo' type='text' value='<?=$numero;?>' size=30><br>	Bairro: <input name='bairro_novo' type='text' value='<?=$bairro;?>' size=30><br>	Cidade: <input name='cidade_novo' type='text' value='<?=$cidade;?>' size=30><br>	Estado: <input name='estado_novo' type='text' value='<?=$estado;?>' size=30><br>	Telefone: <input name='telefone_novo' type='text' value='<?=$telefone;?>' size=30><br>	Naturalidade: <input name='naturalidade_novo' type='text' value='<?=$naturalidade;?>' size=30><br>	Nome Mae: <input name='nome_pai_novo' type='text' value='<?=$nome_pai;?>' size=30><br>	Nome Pai: <input name='nome_pai_novo' type='text' value='<?=$nome_mae;?>' size=30><br>	<input name='nome_aluno' type='hidden' value='<?=$nome_aluno;?>'>	<input type='submit' value='Alterar'>	</form>	<hr><br><?php } ?>


alteracao_db_php.php:
<?php$connect = mysql_connect("localhost", "root", "") or die("Connection Failure to Database");mysql_select_db("cadastro", $connect) or die ("Não é possível selecionar o banco de dados");$sql="UPDATE aluno SET ra_aluno='".$_POST['ra_aluno_novo']."',turma_id_turma='".$_POST['turma_id_novo']."',nome_aluno='".$_POST['nome_aluno_novo']."',logradouro='".$_POST['logradouro_novo']."',numero='".$_POST['numero_novo']."',bairro='".$_POST['bairro_novo']."',cidade='".$_POST['cidade_novo']."',estado='".$_POST['estado_novo']."',telefone='".$_POST['telefone_novo']."',naturalidade='".$_POST['naturalidade_novo']."',nome_pai='".$_POST['nome_pai_novo']."',nome_mae='".$_POST['nome_mae_novo']."' WHERE nome_aluno='".$_POST['nome_aluno']."'";$result = mysql_query($sql);if (!$result) {	$message = '<br><br><br><br><B>UPDATE com problemas! </b>' . mysql_error() . "\n";}else	$message = '<br><br><br><b>UPDATE Completo</b> ' . $sql;die($message);?>

Depois você diz se deu ou não certo.



#936524 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 15:37 in PHP

Faça o seguinte:

No alteracao.php, troque a linha do campo hidden por:
echo "<input name='nome_aluno_old' type='hidden' value='$nome_aluno'>";

No alteracao_db_php.php, remova o include e altere a linha UPDATE para:
$sql="UPDATE aluno SET ra_aluno='".$_POST['ra_aluno_novo']."',turma_id_turma='".$_POST['turma_id_novo']."',nome_aluno='".$_POST['nome_aluno_novo']."',logradouro='".$_POST['logradouro_novo']."',numero='".$_POST['numero_novo']."',bairro='".$_POST['bairro_novo']."',cidade='".$_POST['cidade_novo']."',estado='".$_POST['estado_novo']."',telefone='".$_POST['telefone_novo']."',naturalidade='".$_POST['naturalidade_novo']."',nome_pai='".$_POST['nome_pai_novo']."',nome_mae='".$_POST['nome_mae_novo']."' WHERE nome_aluno='" . $_POST['nome_aluno_old'] . "'";

Testa e diz o resultado.

O ideal era você ter na tabela do banco de dados uma coluna primaria, inteiro, com auto-incremente. Assim seria uma chave única para cada aluno, e facilitaria a o manuseio do banco de dados.



#936527 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 15:47 in PHP

Não tinha reparado nisso.

Altere a linha de echo do Nome do aluno (o 6º echo dado) para:

[codebox]echo "Nome do Aluno: <input name='nome_aluno_novo' type='text' value='$nome_aluno' size=30><br>";[/codebox]



#936541 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 17:02 in PHP

Não percebi bem a ideia do telefone. Você quer que ao digitar no text field ele altere para aquele formato, ou quando enviar ele altera e coloca no banco de dados. Pode explicar melhor?

Sobre OO, isso tudo aí não tem nada orientado. Acho que se for para usar OO você vai precisar refazer isso tudo.



#936538 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 16:42 in PHP

Primeiro de tudo, ele não pegava o nome pois não estava declarado. Sempre que você usa um formulário com método post, para você pegar esses dados tem que usar o array $_POST.

Depois o que acontecia era um conflito de variáveis, por isso colocamos o nome de nome_aluno_old para não ser alterado em qualquer lugar.

Sobre a não alteração dos dados, acho que não deveria acontecer. E sobre o valor -1, penso que o valor não pode ultrapassar um certo limite.

Veja aqui uma tabela em que mostra o valor mínimo e máximo permitido: http://dev.mysql.com...traqueado</sup>

Esse script será para uso normal ou somente fins académicos? Se for para uso, você precisa alterar muitas coisas relacionadas com segurança e ainda optimizar esta tabela no banco de dados.



#936529 Update Nos Campos No Php Com Mysql

Posted by CMAC on 13/09/2008, 16:01 in PHP

Porque você não tenta remover o include que te disse. Comente ele e teste. Acho que isso deve ser o problema.



#974842 Ler E Mostrar Um Arquivo .txt Em Php

Posted by CMAC on 21/07/2009, 18:29 in PHP

Use fgets para ler uma linha inteira, depois separa os dados da linha usando substr.

Por exemplo, corra o script seguinte e veja o que acontece:
<?php

$handle = @fopen("./nota1.txt", "r");
if($handle)
{
	while( ! feof($handle))
	{
		$buffer = fgets($handle, 4096);
		
		//Separa os dados aqui
		echo 'DTEMISSAO: ' . substr($buffer, 0, 10) . '<br />';
		echo 'ANO DE EMISSAO: ' . substr($buffer, 10, 4) . '<br />';
		echo 'MATRICULA: ' . substr($buffer, 14, 6) . '<br />';
		echo 'NUMERO DO DIARIO: ' . substr($buffer, 20, 2) . '<br />';
		echo 'NOME DO ALUNO: ' . substr($buffer, 22, 60) . '<br />';
		
		/* Continua ... */
		
		echo 'DESCRICAO DISCIPLINA: ' . substr($buffer, 157, 30) . '<br />';
		
		echo '--------<br />';
		
	}
	fclose($handle);
}

Espero ter ajudado.



#977694 Ler E Mostrar Um Arquivo .txt Em Php

Posted by CMAC on 19/08/2009, 07:31 in PHP

O script que postei foi apenas um exemplo de como resolver o problema.

Agora você tem que adaptar-o para o seu caso. Por exemplo, se você quer criar uma tabela para mostrar as notas dos 4 bimestres das disciplinas, bastaria alterar o script para:

<?php

$handle = @fopen("./nota1.txt", "r");
if($handle)
{

	echo '<table cellspacing="1" cellpadding="4" border="1">';
	echo '<tr><td>Disciplinas</td><td>1º Bim</td><td>2º Bim</td><td>3º Bim</td><td>4º Bim</td></tr>';
	while( ! feof($handle))
	{
		$buffer = fgets($handle, 4096);
		
		echo '<tr>';
		
		echo '<td>' . substr($buffer, 157, 30) . '</td>';
		echo '<td>' . substr($buffer, 191, 2) . '</td>';
		echo '<td>' . substr($buffer, 201, 2) . '</td>';
		echo '<td>' . substr($buffer, 241, 2) . '</td>';
		echo '<td>' . substr($buffer, 251, 2) . '</td>';
		
		echo '</tr>';
	}
	echo '</table>';
	fclose($handle);
}

O resultado será algo parecido com a screenshot abaixo.

Agora, para construir seu boletim, basta seguir o exemplo e completar o código.

Espero ter ajudado.

Attached Thumbnails

  • 1250677578326.jpeg



#974970 Ler E Mostrar Um Arquivo .txt Em Php

Posted by CMAC on 22/07/2009, 14:52 in PHP

Não tem erro nenhum nesta linha. O que o script faz é imprimir estes dados. Foi só um exemplo de como ler dados de cada disciplina.
Os nomes das disciplinas ali no código são impressas e não declarada.

Se você executar o código, será impresso isso no browser:
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 00101LÍNGUA PORTUGUESA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 00202MATEMÁTICA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 00303HISTÓRIA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 00404GEOGRAFIA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 00707ED. FÍSICA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 02105CIÊNCIAS
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 02410INGLÊS
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 02509LITERATURA
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 05206ARTES
--------
DTEMISSAO: 28/05/2009
ANO DE EMISSAO: 2008
MATRICULA: 000013
NUMERO DO DIARIO: 09
NOME DO ALUNO: LUÍS GUSTAVO ARAÚJO ANDRADE
DESCRICAO DISCIPLINA: 06411CULTURA RELIGIOSA
--------

Portanto, o que você precisa para mostrar o nome da disciplina em cada linha é:
substr($buffer, 157, 30)
Em que $buffer é uma linha inteira do arquivo.



#939239 Duas Paginas Enxergarem A Mesma Variavel

Posted by CMAC on 30/09/2008, 12:04 in PHP

Você consegue pegar a variável $pesq? Da um "echo $pesq;" e veja se é obtida.

Outra coisa, corrija a query ("ORDER" em vez de "ORDE").

Depois diz se funciona.

Espero ter ajudado.



#940385 Variavel Em Php

Posted by CMAC on 06/10/2008, 17:01 in PHP

boirock já disse o que tem que fazer. Dentro da tag form mude o atributo method para get ficando: method="get"

Depois é só pegar $estado = $_GET['estado'];

Se não perceber poste o código para ajudar.



#940393 Variavel Em Php

Posted by CMAC on 06/10/2008, 17:09 in PHP

Troque o código do form para:
<form name="formulario" action="consulta_busca.php?estado=<?php echo $_GET['estado'];?>" method="get">



#938765 Compressão E Descompressão De Arquivo

Posted by CMAC on 26/09/2008, 18:09 in PHP

Faz uns dias que não programo nada então resolvi tentar fazer isso. Claro que não é a melhor solução, pois executa dois ciclos. Foi mesmo só para ver se conseguia fazer em uns minutos.

<?

$frase = "AA BB CC DD AAB CAA";

$resultado = array();

$resultado[0]['letra'] = $frase[0];
$resultado[0]['total'] = 1;

$j = 0;
for($i = 1; $i < strlen($frase); ++$i) {
	if($frase[$i] === $frase[$i - 1]) {
		$resultado[$j]['total']++;
	}
	else {
		$j++;
		$resultado[$j]['letra'] = $frase[$i];
		$resultado[$j]['total'] = 1;
	}
}

$frase_codificada = '';
foreach($resultado as $dado) {
	if($dado['letra'] === ' ') {
		$frase_codificada .= ' ';
	} else {
		$frase_codificada .= $dado['total'] . $dado['letra'];
	}
}

echo $frase_codificada;




IPB Skin By Virteq