Jump to content


onlooker's Content

There have been 13 items by onlooker (Search limited from 19/01/2019)


Ordernar por                Order  

#976206 [Resolvido] Duvida Em Ordenação

Posted by onlooker on 03/08/2009, 18:26 in PHP

Perfeito Dudu! Era exatamente isso... Poderia passar a vida tentando que nao conseguiria hehe
Valeu pela força, abração!

Ps.: l3on4rdo, valeu pela atenção brother!



#976188 [Resolvido] Duvida Em Ordenação

Posted by onlooker on 03/08/2009, 16:09 in PHP

Mas esta consulta não é para mensagens?
Passe a estrutura da tabela onde fica os tópicos.
Pois será necessário fazer uma ligação entre as tabelas.

Passe somente a estrutura da tabela de tópicos.

Até mais ^_^


Isso, é para mensagens. Sendo que o titulo do topico(topico criado) entra na mesma tabela das mensagens, com a unica diferença de que o campo "topico_pai" será vazio. A estrutura é a seguinte:

ID - forum - titulo - mensagem - autor - topico_pai - data


Na consulta com o banco eu obtenho "forum" e "topico_pai", através da url.

Os campos significam o seguinte:

ID = Armazena o id da mensagem
Forum = Armazena o id do tipo de forum a que este topico pertence, pois o forum sera dividido em sessoes(exemplo: livros, revistas...)
Titulo = Armazena o titulo da mensagem(caso o usuario digite algum)
Mensagem = Mensagem contida no topico
Autor = Pega o id de quem escreveu a mensagem
Topico_Pai = Caso nao seja a mensagem de quem criou o topico(mensagem inicial), este campo armazenará o id do tópico a que a mensagem pertence.
Data = Armazena a data da postagem da mensagem



#976158 [Resolvido] Duvida Em Ordenação

Posted by onlooker on 03/08/2009, 13:32 in PHP

Entao, se ele apaga a msg, ele vai deleta uma linha inteira da tabela, nao so a msg certo ?
Com isso, sera um indice que nao existira, ja q ele foi deletado !!

Testa ai e posta de volta !

Abraços



Na verdade ao apagar uma mensagem, apenas a linha da tabela referente a mensagem seria deletada, o update que foi dado na data, nao seria alterado, pois o update teria que ser dado no "topico pai", e nao na linha que contem a nova mensagem(apesar dela tbm ter um campo com a data).

Lembrando que quando um moderador apaga uma mensagem, o topico pai(primeira mensagem do topico) permanece intacta.



#976149 [Resolvido] Duvida Em Ordenação

Posted by onlooker on 03/08/2009, 12:12 in PHP

Fala l3on4rdo, beleza?

Então, pensei em dar o update, mas ai imaginei o seguinte:

E se eu der update na data e a mensagem for deletada? Por exemplo: O usuario posta uma mensagem em resposta ao topico, mas ai um moderador vai la e apaga a mensagem deste cara. Isso seria um problema, pois o topico seria exibido como se tivesse uma mensagem recente, mas na verdade nao teria, pois ela foi deletada...



#976147 [Resolvido] Duvida Em Ordenação

Posted by onlooker on 03/08/2009, 12:05 in PHP

Olá amigos, tudo bem?

Bom, estou fazendo um sistema meio parecido com um fórum de mensagens. Tenho uma tabela chamada topicos_mensagens, onde armazeno os tópicos(titulo) e mensagens. Nessa tabela possuo os seguintes campos:

ID - Titulo - Autor - Topico_pai - Data - Forum

ID = Armazena o id da mensagem
Titulo = Armazena o titulo da mensagem(caso o usuario digite algum)
Autor = Pega o id de quem escreveu a mensagem
Topico Pai = Caso nao seja a mensagem de quem criou o topico(mensagem inicial), este campo armazenará o id do tópico a que a mensagem pertence.
Data = Armazena a data da postagem
Forum = Armazena o id do tipo de forum a que este topico pertence, pois o forum sera dividido em sessoes(exemplo: livros, revistas...)

Até ai tudo bem, o problema vem na hora de listar estes tópicos. Preciso listar apenas os titulos dos ultimos topicos criados, mas tenho de ordenálos através da data das postagens, ou seja, vem primeiro os topicos que tiverem postagem recentemente.

Tentei fazer assim:

$sql = "SELECT  *FROM topicos_mensagens WHERE forum=". $_GET['forum'] ." and isnull(topico_pai) ORDER BY data DESC LIMIT 10";

Usei o "isnull" para que apenas os resultados em que o campo "topico_pai" forem vazios, fossem retornados, pois sempre que o "topico_pai" é vazio, significa que é o titulo de algum topico. Mas ai é que esta o problema, pois a ordenação esta sendo pela data da criação do topico, pois assim foi definido por mim ao usar o isnull. Preciso que a ordenação seja pela data da ultima mensagem postada neste topico. Alguem poderia me dar uma força de como eu poderia fazer isso?



#975700 [resolvido] Paginação Com Número Pre-definido

Posted by onlooker on 29/07/2009, 13:06 in PHP

Fala MBA!

Pô cara, você me quebrou um grande galho hehe
Deu certo sim, eu tinha pensado ate em algo parecido, mas nao tinha conseguido fazer dar certo. Sua lógica funcionou perfeitamente.

Abração!



#975689 [resolvido] Paginação Com Número Pre-definido

Posted by onlooker on 29/07/2009, 11:29 in PHP

Fala galera, beleza?

Bom, tenho uma duvida que me fez perder algumas horas de raciocinio, mas nao me fez chegar a lugar algum, resolvi vir aqui pedir ajuda dos mais experientes. Estou fazendo um sistema que possui paginação, mas essa paginação precisa sempre exibir a mesma quantidade de resultados.

Exemplo: Se houverem 64 resultados, e cada página exibir 10, a sétima página nao poderá exibir somente os 4 que restam, mas sim os 4 + 6 anteriores. É algo parecido com a paginação do orkut. Consigo fazer a paginação, mas nao consigo fazer esse esquema de sempre listar um numero pre-definido de resultados. Alguem pode me dar uma força na lógica?

Estou usando o seguinte esquema pra paginação:


<?
//Consulta a ser feita no MySQL
$sql = "SELECT * FROM tabela ORDER BY coluna DESC";

//Número de registros paginados por página
$registros_pagina = "10";

//Resgato a página que estiver sendo acessada pela paginação
$lista = (int)$_GET["lista"];

//Se for a página inicial da consulta, a variável $lista será nula
if(!$lista) {
	$pc = "1";
}
//Caso contrário, declaro o valor atual da variável $lista
else {
	$pc = $lista;
}

$inicio = $pc - 1;
$inicio = $inicio * $registros_pagina;

//Limito a consulta do MySQL para exibir apenas a quantidade máxima configurada mais acima
$resultado = mysql_query("$sql LIMIT $inicio, $registros_pagina");

//consulta a quantidade total de registros
$todos = mysql_query("$sql");

//Armazeno a quantidade total de registros
$tr = mysql_num_rows($todos);

//Armazeno o resultado da quantidade total de registros pela quantidade de registros por página
$tp = $tr / $registros_pagina;

//Se não houverem registros a se exibir, é acusado o retorno abaixo
if(mysql_num_rows($resultado) < 1) {
	echo "Nenhum registro encontrado";
}
//Caso contrário é exibido o resultado da consulta
else {
	//Exibo o resultado dos registros encontrados na consulta
	while($linha = mysql_fetch_array($resultado)) {
		$coluna = $linha["coluna"];

		echo "$coluna<br /><br />";
	}

	//E por fim monto os links da paginação
	$tp = ceil($tp);
	if($pc>1) {
		$anterior = $pc - 1;
		echo "<a href=\"?lista=$anterior\">[Anterior]</a> ";
	}
	for($i=$pc-5;$i<$pc;$i++) {
		if($i<=0) {
		}
		else {
			echo "<a href=\"?lista=$i\">";
			if($i=="$pc") {
				echo "<b>[$i]</b>";
			}
			else {
				echo "[$i]";
			}
			echo "</a> ";
		}
	}
	for($i=$pc;$i<=$pc+5;$i++) {
		if($i==$tp) {
			echo "<a href=\"?lista=$i\">";
			if($i=="$pc") {
				echo "<b>[$i]</b>";
			}
			else {
				echo "[$i]";
			}

			echo "</a> ";
			break;
		}
		else {
			echo "<a href=\"?lista=$i\">";
			if($i=="$pc") {
				echo "<b>[$i]</b>";
			}
			else {
				echo "[$i]";
			}
			echo "</a> ";

			if($i==$pc+5 && $tp>$pc+5) {
				echo " ... <a href=\"?lista=$tp\">[$tp]</a>";
			}
		}
	}
	if($pc<$tp) {
		$proxima = $pc + 1;
		echo " <a href=\"?lista=$proxima\">[Próxima]</a>";
	}
}
?>



#973028 Ordenar Por Id

Posted by onlooker on 06/07/2009, 15:30 in PHP

Opa Hooligans, beleza? Na realidade eu já havia tentado sim, mas nao funcionou...
acho que é necessário alterar a função, é ai que to meio perdido hehe



#973000 Ordenar Por Id

Posted by onlooker on 06/07/2009, 12:30 in PHP

Fala Galera!

Bom, ontem estive aqui pedindo uma ajuda quanto a duvida em uma logica de um sistema, consegui solucionar esse meu problema através do scriot criado por Stêffano de Moura e postado em um outro site de scripts em PHP(acho que é contra as regras divulgação com links, ne?)

Pois bem, o script funciona perfeitamente, exceto pela minha necessidade. Ele está ordenando por ID(campo id normal), preciso que ordene por ID_INDEXADO(o campo que armazena o id "pai" no banco). Tentei de algumas formas, mas não consegui. Se alguem puder dar uma força...

mapa.class
<?				  ############################################################################
					#	Por Stêffano de Moura Barbosa Cardoso...duvidas fano_linux@hotmail.com #
					############################################################################
					
 class Dbi {
								//dados do banco
	private $conexao = false;
	private $servidor = "localhost";
	private $usuario = "root";
	private $senha = "123456";
	private $banco = "teste";
	public $tabela = "usuarios2";
		
		function conectaDB(){
			
			$this->linkdb = mysql_connect($this->servidor, $this->usuario, $this->senha); // conexao
			
			if ($this->linkdb) {
				
				$this->conexao = true;  //conexao valida
				
				$this->select_db = mysql_select_db($this->banco); //select o banco
			}
			
			else {
				
				echo"Favor checar sua conexão com os dados.";
			}
		}
		
		function fecha_link() {
			
			$this->fechar = mysql_close($this->linkdb); //fecha conexao
			$this->conexao = false;
		}
	}

	class Mapa extends Dbi {
		
		public $nivel = 0;	// nivel de profundidade
			
		function pai($cod) {
						
			if($this->conexao = true) {
																// query do primeiro item (nivel zero)	
			$this->query_pai = "SELECT id, nome, id_indexado FROM ".$this->tabela." 
										   WHERE id='".$cod."'";
									  
 			$this->exec_query_pai = mysql_query($this->query_pai) or die ("<b><font color='#FF0000'>Erro ao executar a consulta</font></b>");
									
				while($this->map = mysql_fetch_array($this->exec_query_pai)) {
												
				print "<tr><td class='dataTD'>".$this->nivel."</td>";
				print "<td class=dataTD >".$this->map['id']."</td>";
				print "<td class=dataTD >".$this->map['nome']."</td>";
				print "<td class=dataTD >".$this->map['id_indexado']."</td>";

				
				$mapa = new Mapa;
				$mapa->geramapa($this->map['id'], $this->nivel+1); // chama o metodo de gerar a arvore
	 			}			
			}
		}
	
		function geramapa($codigo, $nv) {
								
			if($this->conexao = true) {
												
			$this->query = "SELECT id, nome, id_indexado FROM ".$this->tabela."
									  WHERE id_indexado='".$codigo."'";
									  
 			$this->exec_query = mysql_query($this->query) or die ("erro na query");
		 								
				while($mapeando = mysql_fetch_array($this->exec_query)) {					
								
				print "<tr><td class='dataTD'>".$nv."</td>";
				print "<td class='dataTD' >".$auxbh = $mapeando['id']."</td>";
				print "<td class='dataTD' >".$auxxm = $mapeando['nome']."</td>";
				print "<td class='dataTD' >".$auxxm = $mapeando['id_indexado']."</td>";

				
				$mapa = new Mapa;
				$mapa->geramapa($mapeando['id'], $nv+1); //pega o resultado de sua propria query e continua listando até
terminar. colocando um nivel a mais para cada query, ou cada vez q o metodo se chamar.
				

		 		   }  
		 		   
			}
		}
	}
	
?>



#972960 Lógica De Hierarquia

Posted by onlooker on 05/07/2009, 22:28 in PHP

Isto provavelmente lhe ajudará:
http://dev.mysql.com...hical-data.html


Olá Eclesiastes, primeiramente, muito obrigado, era justamente isso que eu queria. Mas ainda to um pouco perdido... abaixo estao a tabela(do exemplo) e o select:

Tabela chamada nested_category:

+-------------+----------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+----------------------+-----+-----+
| 1 | ELECTRONICS | 1 | 20 |
| 2 | TELEVISIONS | 2 | 9 |
| 3 | TUBE | 3 | 4 |
| 4 | LCD | 5 | 6 |
| 5 | PLASMA | 7 | 8 |
| 6 | PORTABLE ELECTRONICS | 10 | 19 |
| 7 | MP3 PLAYERS | 11 | 14 |
| 8 | FLASH | 12 | 13 |
| 9 | CD PLAYERS | 15 | 16 |
| 10 | 2 WAY RADIOS | 17 | 18 |
+-------------+----------------------+-----+-----+

Tabela chamada category:

+-------------+----------------------+--------+
| category_id | name | parent |
+-------------+----------------------+--------+
| 1 | ELECTRONICS | NULL |
| 2 | TELEVISIONS | 1 |
| 3 | TUBE | 2 |
| 4 | LCD | 2 |
| 5 | PLASMA | 12 |
| 6 | PORTABLE ELECTRONICS | 1 |
| 7 | MP3 PLAYERS | 6 |
| 8 | FLASH | 7 |
| 9 | CD PLAYERS | 6 |
| 10 | 2 WAY RADIOS | 6 |
+-------------+----------------------+--------+


<?
 
$consulta=mysql_query("SELECT node.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.name = 'ELECTRONICS'
ORDER BY node.lft;
");
$dados = mysql_fetch_array($consulta); 

?>


Consigo imprimir assim:

+----------------------+
| name |
+----------------------+
| ELECTRONICS |
| TELEVISIONS |
| TUBE |
| LCD |
| PLASMA |
| PORTABLE ELECTRONICS |
| MP3 PLAYERS |
| FLASH |
| CD PLAYERS |
| 2 WAY RADIOS |
+----------------------+


Mas há um problema, pois preciso que a listagem seja hierarquica. O "plasma", tem como "pai" o ID 12, que nem sequer existe na tabela(coloquei o 12 de propósito), e ele nao deveria ser listado, pois nao faz parte da rede, mas esta sendo listado por causa do id DELE, que é 5.

Como eu poderia alterar de maneira que apenas os da mesma rede fossem exibidos?



#972945 Lógica De Hierarquia

Posted by onlooker on 05/07/2009, 15:54 in PHP

Ola, então pessoal, eu tenho a seguinte duvida como saber quem inidicou quem, em niveis tipo:

cod_user nome_user ind_user cidade_user
2 William 0 Penha
3 Luciane 2 Penha
4 Wagner 2 Penha
5 Maria da 2 Penha
6 Kristiano 3 Penha
7 Beto 6 Penha

Nesse exemplo o usuario de codigo 2 indicou .

3 Luciane 2 Penha
4 Wagner 2 Penha
5 Maria da 2 Penha

Assim o usuario de codigo 3 indicou.

6 Kristiano 3 Penha

E também assim o usuario de codigo 6 indicou.

7 Beto 6 Penha

......

Qual é a pergunta?

Simpes como eu vou ligar todos eles exemplo vou clicar no usuario de codigo 2

E dai o sistema vai falar OH o usuario 2 indico diretamente esses.

3 Luciane 2 Penha
4 Wagner 2 Penha
5 Maria da 2 Penha

Segundo nivel.

6 Kristiano 3 Penha

Terceiro nivel.

6 Kristiano 3 Penha


Bem assim pro primeiro nivel é facil.


<?php

$host	 = "localhost";
$user	 = "root";
$senha	 = "";
$bd	 = "banco";
mysql_connect($host,$user,$senha);
mysql_select_db($bd);

$sql = mysql_query("Select cod_user, nome_user, ind_user, cidade_user from teste");
while($a = mysql_fetch_array($sql)) {
			echo "<tr><td bgcolor=\"#CCCCCC\" background=\"img/masnoticia.jpg\" height=\"20\" style=\"color:#FFFFFF;\" align=\"left\"> ".$a[nome_user]."</td><td> - Indiciados <a href=".$PHP_SELF."?indicados=".$a[ind_user]." target=\"_blank\">(Clique)</a><br /></td></tr><br />";
	  }
if(isset($_GET['indicados'])){
$indicados = $_GET['indicados'];
$sql = mysql_query("Select cod_user, nome_user, ind_user, cidade_user from teste where ind_user=$indicados");
while($a = mysql_fetch_array($sql)) {
			echo "<tr><td bgcolor=\"#CCCCCC\" background=\"img/masnoticia.jpg\" height=\"20\" style=\"color:#FFFFFF;\" align=\"left\"> ".$a[nome_user]."</td><td> - Indiciados <a href=".$PHP_SELF."?indicados=".$a[ind_user]." target=\"_blank\">(Clique)</a><br /></td></tr>";
	  }
	  }

?>

Seu codigo esta bem porem para uma unica indicação e se fosse com niveis tipo

001 Carlos 1
002 Maria ( Amiga de Carlos ) 001
003 Joao ( Amigo de Maria ) 002
004 Pedro ( Amigo de Joao ) 003


Porem todos eles são indicados diretamente e indiretamente por Carlos.
Já que até o nivel 7 seriam da rede dele você entendeu?

Essa parte de niveis que esta complicando a cabeça

Mas e para ligar o resto



#970237 Pegar Id, Adicionando Letras E Números.

Posted by onlooker on 09/06/2009, 12:59 in PHP

Use printf ou sprintf. Por exemplo:

$id = 1245;
printf("CAD%04d", $id);

Espero ter ajudado.



Opa CMAC! Então cara, o printf funciona pra imprimir como eu quero, mas eu preciso gravar isso no banco de dados, e aí ele já não funciona. Posso abrir mao e deixar essa matricula sem as letras, mas preciso que sejam 4 numeros.

Campo ID = 4
Campo matricula será = 0004

Campo ID = 46
Campo Matricula será = 0046

E assim por diante. Tentei dividir por 1000, mas ai grava com o "ponto" no banco de dados... Saberia como me ajudar quanto a isso?



#970229 Pegar Id, Adicionando Letras E Números.

Posted by onlooker on 09/06/2009, 12:05 in PHP

Fala pessoal, tudo bem?

Bom, estou trabalhando em um sistema que contém um cadastro. O usuário ao cadastrar recebe um número, esse número será seu acesso ao sistema, uma espécie de matricula.

Agora indo ao que interessa, pensei em pegar o id deste usuario e acrescentar no inicio três letras. Mas ai aparece outro problema, preciso que essa "matricula" tenha ao menos 4 números. Essa matricula precisa ser gerada no momento do cadastro.

Pensei no seguinte:

No cadastro, pego o último ID existente no banco, através do

SELECT MAX(id_usuario) FROM minhatabela

Até aí tudo bem, mas possuo duas dúvidas:

1 - Como faço para acrescentar 3 letras ao id? Exemplo: CAD0001(onde esse "1" seria o ID do usuario, adicionado de 3 letras iniciais, que no caso são "CAD" e 3 zeros no inicio)
2 - Como coloquei no exemplo acima, preciso que sejam 4 numeros. Se o ID que eu pegar for 23, por exemplo, como eu faço para que ele fique 0023?


Abraços :rolleyes:




IPB Skin By Virteq