Jump to content


CMAC's Content

There have been 93 items by CMAC (Search limited from 12/06/2023)



Ordernar por                Order  

#964982 Cookie Criar, Ler, Expirar, Etc, Etc...

Posted by CMAC on 23/04/2009, 18:54 in PHP

Em
$nome  = $_POST['nome'];

você obtém uma variável vindo duma requisição do método post (normalmente um formulário ou uma requisição ajax).

A função setcookie armazena um valor num cookie, portanto, está certo o seu comando. Para recuperar este valor use $_COOKIE['ck_nome'].

Para mais informações consulte o manual.

Espero ter ajudado



#936625 Consulta - Php Orientado A Objetos

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

Os Métodos getQualquerCoisa estão retornando o valor?

Tente dar o seguinte echo:
[codebox]echo "<b>Ra Aluno</b>: " . $aluno->getRa_aluno();[/codebox]

Uma sugestão: acho que seria mais interessante você trabalhar com arrays, usando assim somente um método para buscar os dados do aluno. Por exemplo, ao invés de vários métodos você criaria somente um, especificando o nome do dado que requisitar. Ex:
[codebox]<?
public function getDadoAluno($nome = '') {

if(isset($this->dados[$nome])) {
return $this->dados[$nome];
}

return null;

}
[/codebox]

Não seria melhor do que usar vários getters?

Espero ter ajudado.



#936642 Consulta - Php Orientado A Objetos

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

Dentro desta funções existem variáveis não declaradas ($linhas e $tabela). Você pode passar estes dados pela função.

Sobre a função que te disse, primeiro você precisa trabalhar com arrays, e ainda aprimorar o conhecimento em OOP. Com isso seu código ficaria muito mais estruturados e ainda com menos código.

Dentro da classe aluno, você poderia criar um método que, dado um nome, buscaria os dados no mysql e armazenasse-os no array $dados[], declarado na sua classe com acesso private. Assim, você poderia usar aquela função para pegar os dados. Por exemplo, para pegar o nome seria: $aluno->getDadoAluno('nome');

Para pegar o bairro seria a mesma função mudando somente o argumento: $aluno->getDadoAluno('bairro');

Viu como facilitaria!?

Bons estudos e boa sorte.



#936628 Consulta - Php Orientado A Objetos

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

Não percebi bem o que ele não está imprimindo. Seria isso que ele não imprime:
echo "<td>$aluno->getRa_aluno()</td>";

Se for tente substituir por isso:
echo "<td>" . $aluno->getRa_aluno() . "</td>";

Se não funcionar diz aqui e posta a função getRa_aluno() para analisar-mos.



#954868 Construindo Uma Enquete Do Começo

Posted by CMAC on 23/01/2009, 16:46 in PHP

Você pode fazer isso usando 3 tabelas. Por exemplo:

Tabela Enquete:
id (int - autoincrement)
pergunta (varchar[255])
lag (int) [opcional]

Tabela Opções:
id (int - autoincrement)
id_enquete (int)
alternativa (varchar[255])
votos (int)


Tabela Usuário:
id_enquete (int)
ip (varchar)
tempo (datetime ou timestamp)

Com a opção lag na tabela Enquete você pode definir o tempo entre votos de cada enquete.

Sobre a dúvida do código, você sempre vai gravar o ip pois o if vai falhar sempre que tiver outro ip no banco diferente do meu, executando assim o else.

Você pode fazer assim:
flag = false;
while($linha = mysql_fetch_array($busca)){
	$ip = $linha["ip"]; // MOSTRA OS IPS CADASTRADOS NO BANCO
	echo "IP cadastrado no banco é: $ip <br>";
	echo "IP atual é: $ip2 <br><br>";
	if($ip2 == $ip){
		flag = true;
		//Caso não for dar o echo acima, descomente a linha abaixo
		//break;
	}
}
if(!flag) {
	echo "<script>alert('VOCE NAO VOTOU')</script>";
	$insereip = mysql_query("INSERT INTO ip (ip) VALUES ('$ip2')") or die(mysql_error());
}
else {
	echo "<script>alert(\"VOCE JA VOTOU!\")</script>";
}

PS: Não testei o código acima...



#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;



#969548 Comparar E Exibir Array Com Dados Do Bd

Posted by CMAC on 03/06/2009, 14:58 in PHP

Uma maneira de fazer isso é separar a string usando explode e depois no ciclo verificar se o tipo de imóvel existe no array criado pelo explode.

Segue um pedaço de código que faz isso:
$selected = "Casa da praia|Fazenda";

$tipoimovel = array(
	"Casa da praia",
	"Projeto",
	"Casa",
	"Loteamento",
	"Apartamento",
	"Granja",
	"Fazenda",
	"Comercial",
	"Terreno",
	"Pousada"
);


$selected = explode('|', $selected);

foreach($tipoimovel as $key)
{
	$checked = array_search($key, $selected) !== FALSE ? 'checked="checked"' : '';
	echo '<input name="tipoimovel_imoveis[]" type="checkbox" id="' . $key . '" value="' . $key . '" ' . $checked . '>' . $key;
}

Note que antes desse código você deve definir a variável $selected com a string do banco de dados.

Espero ter ajudado.



#957811 Como Pegar Valor Randômico De Um Array Multidimensional

Posted by CMAC on 13/02/2009, 14:45 in PHP

Já foi resolvido mas fica a dica pra quem precisar. Usando somente uma linha, dá pra fazer assim:

$SUBCAT = $CATEGORIAS[$cat = array_rand($CATEGORIAS)][array_rand($CATEGORIAS[$cat])];



#959636 Como Excluir Registros Automaticamente Do Db?

Posted by CMAC on 04/03/2009, 14:49 in PHP

Mas a primeira condição de if que o maykel fez nunca vai ser verificada, dado que na query ele limita o número de resultados. Assim o valor da variável $cont será sempre 1 ou 0.

O que pode ser feito é mudar a query para:
SELECT `id`, (SELECT COUNT(*) FROM `mural`) AS `total` FROM `mural` ORDER BY `id` ASC LIMIT 0, 1

Assim o código ficaria algo como:
$query = mysql_query("SELECT `id`, (SELECT COUNT(*) FROM `mural`) AS `total` FROM `mural` ORDER BY `id` ASC LIMIT 0, 1");

if(mysql_num_rows($query) > 0)
{
	$res = mysql_fetch_object($query);
	if($res->total > 300)
	{
		$query = mysql_query("DELETE FROM `mural` WHERE `id` = " . $res->id);
		if($query)
		{
				echo "Mensagem removida com sucesso!";
		}
		else
		{
				echo mysql_errno() . ": " . mysql_error() . "\n";
		}
	}
}

Espero não ter me enganado.



#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



#964796 Carregar Array Com Dados Da Base De Dados

Posted by CMAC on 22/04/2009, 12:46 in PHP

Se for sobre a outra dúvida, podia ter respondido lá.

Tente assim:
$r = array();
while($row = mysql_fetch_array($query))
{
	$r[$row['quantidade']] = $row['preco'];
}

em que $query é o resource retornado pela função mysql_query.



#939211 Basico - Mandar Variavel Para Class

Posted by CMAC on 30/09/2008, 10:25 in PHP

Você pode criar um método para passar a varíavel, por exemplo, coloque isso dentro da sua classe:

function setPath($path) {
	$this->path = $path;
}

e em gera_fotos ficaria assim:
function gera_fotos(){
	$diretorio = $this->path;
	/* ... */
}

ai, fora da classe você poderia passar o path assim:
require_once "../class.upload.php";

$upload = new Upload();
$upload->setPath('path/desejado');
$upload->Envia_Arquivo();

Espero ter ajudado!



#975272 Alguma Sugestão Em Php Para Estouro De Memória

Posted by CMAC on 24/07/2009, 18:53 in PHP

Greg,

ORDER BY RAND() tem um péssimo desempenho.

Veja aqui uma dica do Crab sobre isso.



#939752 Ajuda Com If

Posted by CMAC on 02/10/2008, 19:58 in PHP

Não seria assim?
if($player->level > 0 and $player->level < 11)
	$lossen = 1;
elseif($player->level > 10 and $player->level < 21)
	$lossen = 2;
elseif($player->level > 30 and $player->level < 41)
	$lossen = 3;
elseif($player->level > 40 and $player->level < 51)
	$lossen = 4;
elseif($player->level > 50 and $player->level < 61)
	$lossen = 5;
else
	$lossen = 6;



#938441 Ajuda Com Captura De Variaveis

Posted by CMAC on 25/09/2008, 10:39 in PHP

Você pode colocar o seguinte campo no formulário da segunda página:
<input type="hidden" name="importacao" value="<?php echo $_POST['importacao'];?>"/>

Aí na terceira página você pega esse dado usando $_POST['importacao'].

Isso pega o valor do select da primeira página e coloca num campo invisível da segunda página.

Espero ter ajudado.



#964797 Agrupamento De Dados

Posted by CMAC on 22/04/2009, 13:14 in PHP

A lógica é bacana, mas como não sou muito bom com SQL, o que seria o c1, c2, c3 etc?


São aliases da tabela categorias. Para saber mais procure por "SQL Alias".

Lembrando que a inserção de dados é dinâmica, ou seja, o usuário cria quantos níveis ele quiser saca?


Como disse, isto aplica-se quando você sabe o número de níveis. Para cada nível a mais deve usar um JOIN. Porém, a performance é muito melhor do que ter várias queries.



#964722 Agrupamento De Dados

Posted by CMAC on 21/04/2009, 18:12 in PHP

Você pode usar JOIN's na query para obter todas as categorias e subcategorias.

Por exemplo, se sua tabela se chama cat e o nível de subcategorias é 2 (é possível ter categoria, subcategoria e "subsubcategoria"), então você tem que usar dois JOIN's na query:
SELECT `c1`.`nome_cat` AS `n1` , `c2`.`nome_cat` AS `n2` , `c3`.`nome_cat` AS `n3`
FROM `cat` AS `c1`
LEFT JOIN `cat` AS `c2` ON `c1`.`idCat` = `c2`.`id_pai`
LEFT JOIN `cat` AS `c3` ON `c2`.`idCat` = `c3`.`id_pai`
WHERE `c1`.`id_pai` = 0

Agora com o PHP você trata os resultados da maneira que quiser.
Supondo que o array de objectos contendo o resultado da query mostrada acima é definido na variável $result, você pode imprimir a lista de categorias no formato:
Cat 1
--Sub Cat 1.1
----Sub Cat 1.1.1
----Sub Cat 1.1.2
----Sub Cat 1.1.3
--Sub Cat 1.2
--Sub Cat 1.3
--Sub Cat 1.4
--Sub Cat 1.5
Cat 2
--Sub Cat 2.1
--Sub Cat 2.2
Cat 3

usando o seguinte código:
$cat = '';
$subcat = '';
foreach($result as $row)
{
	if($cat == $row->n1 AND $row->n2 != NULL)
	{
		if($subcat == $row->n2 AND $row->n3 != NULL)
		{
			print_cat($row->n3, 2);
		}
		elseif($subcat != $row->n2)
		{
			$subcat = $row->n2;
			print_cat($row->n2, 1);
			if($row->n3 != NULL)
				print_cat($row->n3, 2);
		}
	}
	elseif($cat != $row->n1)
	{
		$cat = $row->n1;
		$subcat = '';
		print_cat($cat, 0);
		if($row->n2 != NULL)
		{
			$subcat = $row->n2;
			print_cat($subcat, 1);
			if($row->n3 != NULL)
				print_cat($row->n3, 2);
		}
	}
}

em que print_cat é:
function print_cat($name, $level)
{
	for($i = 0; $i < $level; $i++)
		echo '-';
	
	echo $name . '<br />';
}

Deu para entender algo!?

Note que o código acima ainda pode ser melhorado. Esta foi uma solução rápida de resolver o problema.

Abraços



#970107 A Melhor Solução é O If ?

Posted by CMAC on 08/06/2009, 15:00 in PHP

E por que não assim:

<?php

$itens = array('Batata', 'Arroz', 'Feijão', 'Macarrão');
echo isset($itens[$i = $dados - 1]) ? $itens[$i] : 'Não tem comida!';




IPB Skin By Virteq