Ir para conteúdo

POWERED BY:

Arquivado

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

Gregorcs

Evitar um cadastro duplicado complexo

Recommended Posts

Galera, seguinte

 

estou fazendo um cadastro de recursos de gravação, e nessa tabela de cadastro tenho vários itens como segue abaixo

 

 $data_inicial = $_POST['data_inicial'];
	$data_final = $_POST['data_final'];
	$hora_inicial = $_POST['hora_inicial'];
	$hora_final = $_POST['hora_final'];
	$diretor = $_POST['diretor'];
	$produtora = $_POST['produtora'];
	$camera = $_POST['camera'];
	$estudio = $_POST['estudio'];
	$cliente = $_POST['cliente'];
	$obs = $_POST['obs'];

 

Porém não posso ter um cadastro duplicado da seguinte forma, eu cadastrar o mesmo recurso(estudio ou camera ou produtora ou diretor) no mesmo dia que já terá um selecionado.

 

Já fiz código de cadastro duplicado antes, mas estou confuso em como fazer esse, não sei por onde começar, ou comparar.

 

Por favor me ajudem!!!!

 

Vlw abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

na hora de cadastrar faça um select, se retornar mysql num rows > 0, você nao cadastra, mas se retornar 0 ae você cadastra, eh bem simples...

 

na hora de cadastrar faça um select, se retornar mysql num rows > 0, você nao cadastra, mas se retornar 0 ae você cadastra, eh bem simples...

Olá Igor, no caso de um item, seria simples, o que me confunde é que tenho que comparar as datas, em seguida preciso comparar os itens que mencionei PRODUTORA / CAMERA / ESTUDIO para ai sim poder liberar o cadastro caso esse item nao esteja sendo usado na mesma data e no mesmo horário

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou usando o seguinte código para armazenar a data

 

[coode]$data = implode('-',array_reverse(explode('/',$_POST['data_inicial'])));[/code]

 

e quando puxo ela do banco, uso o seguinte código:

 

date_format(data_inicial, '%d/%m/%Y') AS data_inicial

 

quando chamo para a listagem em uma tabela, ele roda legal, traz a data e mostra certinho,

 

porém quando faço o select para a comparação não rola, segue o select

 

 

$verifica = mysql_query("SELECT date_format(data_inicial, '%d/%m/%Y') AS data_inicial FROM tb_controle WHERE data_inicial = '$data_inicial' ") or die(mysql_error());


	$contar = mysql_num_rows($verifica);

	if($contar > '0'){
		echo '<script language="javascript">alert("Ops! Recurso já cadastrado!");</script>';	
	}else{



$cadastra = mysql_query("INSERT INTO tb_controle (data_inicial, data_final, hora_inicial, hora_final, diretor, produtora, camera, estudio, cliente ,obs, cadastrado_por ) values ('$data', '$data2', '$hora_inicial', '$hora_final', '$diretor', '$produtora', '$camera','$estudio', '$cliente' ,'$obs', '$nome') ")
					or die(mysql_error());

 

 

 

ok, como você esta armazenando as datas? varchar? se for use date e compara normal...

 

Olá Angelo, é o seguinte, eu não sei a forma de escrever o código para pegar a data inicial e a data final, e verificar se nessa data estará disponível os itens que eu vou selecionar, como PRODUTORA ou CAMERA

 

caso na data XX já tenha selecionado a CAMERA A eu nao poderei fazer o cadastro.

 

Isso que eu não entendo, não sei se é fácil ou difícil mas nao entendo como escrever.

 

Bom dia,

 

Mas, qual a dificuldade em comparar mais de um campo no banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao respondeu minha pergunta...eh varchar o tipo de campo q você esta usando pra armazenar a data?

 

 

 

você nao respondeu minha pergunta...eh varchar o tipo de campo q você esta usando pra armazenar a data?

Verdade, estou usando o DATE, você acha melhor usar varchar??

 

nao, use date mesmo, e converta ele pro formato date do mysql e compara normal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi...bom eu cheguei a um meio caminho, oo que acham??

 

o f*** é que além dele nao barrar o cadastro, ainda gera dois cadastros iguais, mas com ID diferente!!!

 

if(isset($_POST['cadastrar_post']) && $_POST['cadastrar_post'] == 'cad' ){

	$data_inicial = $_POST['data_inicial'];
	$data_final = $_POST['data_final'];
	$hora_inicial = $_POST['hora_inicial'];
	$hora_final = $_POST['hora_final'];
	$diretor = $_POST['diretor'];
	$produtora = $_POST['produtora'];
	$camera = $_POST['camera'];
	$estudio = $_POST['estudio'];
	$cliente = $_POST['cliente'];
	$obs = $_POST['obs'];


$data = implode('-',array_reverse(explode('/',$_POST['data_inicial'])));
$data2 = implode('-',array_reverse(explode('/',$_POST['data_final'])));



	$verifica = mysql_query("SELECT id, hora_inicial, hora_final, diretor, produtora, camera, estudio, cliente, cadastrado_por, obs, date_format(data_inicial, '%d/%m/%Y') AS data_inicial, date_format(data_final, '%d/%m/%Y') AS data_final FROM tb_controle") or die(mysql_error());

	//$contar = mysql_fetch_array($verifica);
	while($contar = mysql_fetch_array($verifica)){

	if (($contar['diretor'] == $diretor) && ($contar['produtora'] == $produtora)){ // Essa variavel $produtora_cadastrada['camera'] é uma array que vem do banco, ou seja, nela tem todos os registros da coluna 'camera'
		echo '<script language="javascript">alert("Ops! Recurso já cadastrado!");</script>';
	} else {





$cadastra = mysql_query("INSERT INTO tb_controle (data_inicial, data_final, hora_inicial, hora_final, diretor, produtora, camera, estudio, cliente ,obs, cadastrado_por ) values ('$data', '$data2', '$hora_inicial', '$hora_final', '$diretor', '$produtora', '$camera','$estudio', '$cliente' ,'$obs', '$nome') ")
					or die(mysql_error());



if($cadastra <= '0'){
	header("Location:cadastro_controle.php");

}else{
	header("Location:confirma_controle.php");



};
};};
};

 

nao, use date mesmo, e converta ele pro formato date do mysql e compara normal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, você esta deixando a coisa mais enrolada q rolo de papel higienico

 

tente algo como isto

 

select * from tabela where diretor ='$_POST['direto']' and data = 'data' ...

 

esse where add uma condicao, imagina você com 10.000, você vai dar um loop em 10.000 registros podendo encontrar um unico? estude a clausula where, e 'and' ou 'or' junto...

 

Igor, dei uma fuçada e cheguei no seguinte resultado.

 

$verifica = mysql_query("SELECT * FROM tb_controle WHERE

camera = '$camera' AND

estudio = '$estudio' AND

diretor = '$diretor' AND

produtora = '$produtora' AND

data_inicial = '$data_inicial' AND

data_final = '$data_final'

 

 

") or die(mysql_error());

 

 

while($contar = mysql_fetch_array($verifica)){

 

if($contar['data_inicial'] == $data_inicial){

echo '<script language="javascript">alert("Ops! Recurso não cadastrado!");</script>';

} else {

 

 

 

$cadastra = mysql_query("INSERT INTO tb_controle (data_inicial, data_final, hora_inicial, hora_final, diretor, produtora, camera, estudio, cliente ,obs, cadastrado_por ) values ('$data', '$data2', '$hora_inicial', '$hora_final', '$diretor', '$produtora', '$camera','$estudio', '$cliente' ,'$obs', '$nome') ")

or die(mysql_error());

 

 

 

if($cadastra <= '0'){

header("Location:cadastro_controle.php");

 

}else{

header("Location:planilha.php");

 

 

 

};

};

};

 

O problema é que ele ainda não cadastra!!

 

desculpem pelas perguntas imbecis mas ainda sou novo em PHP...

 

cara, você esta deixando a coisa mais enrolada q rolo de papel higienico

 

tente algo como isto

 

select * from tabela where diretor ='$_POST['direto']' and data = 'data' ...

 

esse where add uma condicao, imagina você com 10.000, você vai dar um loop em 10.000 registros podendo encontrar um unico? estude a clausula where, e 'and' ou 'or' junto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao precisa dar while, você vai gerar milhoes de registros repetidos

 

continue com o select, abaixo faça

 

if(mysql_num_rows($verifica)<=0)//ou seja e tiver 0 ou menos registros encontrados, ele da o insert...
{
// insert ...
}

 

PS so pq eh novato nao siginfica q nao deve ler o manual, pq eh novato sua maior obrigacao eh ler o manual, os mais experientes leem o manual e conhece mais coisas...

 

PS2 existem paginas do manual em portugues, inclusive pra baixar...

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.