Ir para conteúdo

POWERED BY:

Arquivado

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

Henze

Confirmação de presença com PHP

Recommended Posts

Boa noite senhores,

 

Estou começando agora nesse universo de códigos e estou um pouco perdido quanto ao desenvolvimento de um sistema no meu site.

 

Vamos lá... vou tentar explicar o problema para ver se alguem consegue me dar uma força:

 

Possuo uma página onde listo todos os eventos agendados de um banco de dados em MySQL (tabela agenda com os campos id_agenda, evento, data, local);

 

Paralelamente possuo uma tabela de usuarios (id_usuario, nome, user, senha, email)

 

Gostaria de na pagina onde relaciono os eventos, criar um espaço para relacionar todos os usuários que confirmarem presença em um determinado evento.

 

Agora começa meu tormento... não sei como pesquisar por isso no google (ja tentei agenda de eventos, confirmação de presença, id agendado...).

 

Alguem poderia me ajudar? Se não com um exemplo de código para q eu pesquise ou pelo menos um jeito de pesquisar sobre o assunto.

 

Apenas complementando, fui indicado a criar uma terceira tabela com o nome agenda_usuario com os campos id_agenda, id_usuario e confirmado, porém não entendi bem como usar essa tabela para solucionar meu problema.

 

Abraços galera...

 

Nilson Henze

Compartilhar este post


Link para o post
Compartilhar em outros sites

Henze, vou tentar te explicar, se eu disser coisas que você já sabe me desculpe =)

 

É o seguinte, esta terceira tabela é o que se chama relação muitos para muitos ou seja, um evento PODE TER MUITOS usuarios e um usuario PODE ESTAR EM MUITOS eventos.

 

Esta tabela muitos para muitos armazena somente o id_usuario, id_cliente, confirmado: quando o usuário confirmar a presença no evento, por exemplo, você vai inserir um registro nesta tabela muitos para muitos assim:

 

Suponha que o id_usuario seja 462, o id_evento seja 628. ( Em colunas aonde eu preciso armazenar informações do tipo TRUE/FALSE, SIM/NÃO, eu crio ela como INT, sendo que 1 = TRUE/SIM e 0 = FALSE/NÃO)

 

INSERT INTO usuario_evento (id_usuario, id_evento, confirmado) VALUES (462, 628, 1)

 

No caso do usuário que se cadastrou no evento mas ainda não confirmou, você insere assim

 

INSERT INTO usuario_evento (id_usuario, id_evento, confirmado) VALUES (462, 628, 0)

 

Agora, esta confirmação você pode fazer de várias maneiras, por e-mail, por acesso a algum link, etc.

 

Para você recuperar as informações você usa o seguinte exemplo:

 

SELECT u.nome FROM usuario u
INNER JOIN usuario_evento ue ON ue.id_usuario = u.id_usuario
WHERE ue.confirmado = 1

 

 

Bom, é isso ai, pode ser que tenha algum erro em uma SELECT mas sem dúvida vai ser coisa simples de resolver, se você ainda tiver alguma dúvida, pode me mandar uma mensagem particular que te ajudo por e-mail ;)

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Daniel,

 

Obrigado pela ajuda.

 

Vamos as atualizações:

 

Inserí alguns dados na tabela manualmente e consegui fazer a listagem dos usuarios que estão com o campo de confirmado marcado:

 

<?php

$sql = "SELECT

a.evento,

u.nome

from agenda a

join agenda_usuario au on (a.id_agenda = au.id_agenda)

join usuario u on (u.id_usuario = au.id_usuario)

WHERE confirmado = '1'";

 

$resultado = mysql_query($sql)

 

or die ("Erro!!!");

 

if (@mysql_num_rows($resultado) == 0)

die('Nenhum jogador confirmado');

 

while ($linha=mysql_fetch_array($resultado))

 

{

echo "<strong>Evento: </strong>".$linha['evento']."<br>";

echo "<strong>Jogador: </strong>".$linha['nome']."<br>";

echo "<br>"."</p>";

}

?>

 

 

Porém agora estou batalhando em como levar essas informações ao BD com a ajuda do PHP.

 

 

Tenho uma página onde estão listados todos os eventos marcados:

 

$sql = "SELECT * FROM agenda ORDER BY id_agenda DESC";

$resultado = mysql_query($sql)

or die ("Não foi possível realizar a consulta.");

 

<table>

<tr>

<th width="35px" align="left">ID:</th>

<th width="85px" align="left">Data:</th>

<th width="85px" align="left">Hora:</th>

<th width="150px" align="left">Evento:</th>

<th></th>

</tr>

 

<?php

 

/*

* mostra os dados na tela

*/

while ($linha=mysql_fetch_array($resultado))

{

 

echo "<tr>";

echo "<td>{$linha['id_agenda']}</td>";

echo "<td>{$linha['data']}</td>";

echo "<td>{$linha['hora']}</td>";

echo "<td>{$linha['evento']}</td>";

echo "</tr>";

}

 

echo "</table>";

?>

</p>

 

Gostaria de inserir um campo select ou radio após o echo de evento onde com um botão submit enviasse os dados para o BD agenda_usuario.

 

Nos testes fiz um botão nesta página de relação de eventos onde encaminhava os dados para uma secundaria com INSERT INTO, mas não consigo obter os dados anteriores que quero enviar e não sei se essa seria a melhor forma.

 

<?

if ($_POST['enviar']) {

/* montando sql de inserção de dados */

$sql = " INSERT INTO agenda_usuario (id_agenda, id_usuario, confirmado) VALUES

(

'" .$_POST['id_agenda']."',

'" .$_POST['id_usuario']."',

'" .$_POST['confirmado']."'

)";

/* executa sql */

if (mysql_query($sql)){

echo "Presença confirmada";

}else{

echo "Você já possui uma confirmação para esse evento";

}

}

?>

<?php

$sql = "SELECT * FROM agenda WHERE id_agenda = ".$_GET['id_agenda'];

$resultado = mysql_query($sql)

or die ("Não foi possível realizar a consulta.");

$linha=mysql_fetch_array($resultado);

?>

 

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data" name="enviar" >

<label for="id_agenda">Evento: </label><br>

<input name="id_agenda" id="id_agenda" type="text" class="formnoticia" maxlength="44" size="50" value="<?php echo $linha['id_agenda'] ?>"/>

<br>

<br>

<label for="id_usuario">Usuário:</label><br>

<input name="id_usuario" id="id_usuario" type="text" class="formnoticia" maxlength="77" size="50"/>

<br>

<br>

<label for="confirmado">Confirmar?</label><br />

<select name="confirmado" id="confirmado">

<option value="1" selected="selected">Sim</option>

<option value="0">Não</option>

</select>

<br>

<br>

<input type="submit" name="enviar" value="Cadastrar" class="botao-noticia">

</form>

 

Acho q falei demais e acabei confundindo td!! rs

 

Resumindo, preciso criar um sistema onde os usuarios da adm do site acessem, vejam todos os eventos que estao cadastrados e confirmem em qual evento participarão.

 

Posteriormente preciso ter uma área onde eu veja quais usuarios confirmaram presença em um determinado evento.

 

Preferi falar por aqui pois derrepente esta ajuda sirva para outras pessoas.

 

Minha linha de raciocínio está caminhando certinha ou sugere algo melhor para essa necessidade?

 

Grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Henze,

 

Eu mudaria muita coisa porque eu só trabalho com classes mas isso não iria alterar o funcionamento do seu código, ele vai fazer a mesma coisa só que com uma organização maior, enfim....

 

Eu colocaria no seu formulário de cadastro, ao invés de um INPUT, colocaria um <SELECT><OPTION> com os nomes dos eventos, não deixando o usuário inserir qualquer coisa no campo, evitando vários erros e problemas de segurança, assim como você fez com a opção confirmado.

 

Ao meu ver o seu racioncício esta correto.

 

Abraço.

 

PS: Quando tiver tempo, da uma olhada no framework CodeIgniter, muito simples, leve e funcional, eu uso ele para grandes projetos e sites também, se tiver interesse ou dúvidas, pode entrar em contato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi...

 

Vou tentar fazer desta forma que me falou e te dou um feedback.

 

Quanto ao CI, não o conhecia... Baixei o sistema e vou dar uma estudada nele.

 

Vlw mesmo pela força!

 

Assim que o sistema estiver pronto e funcionando, posto aqui para servir de base ao pessoal q tbm tenha dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera,

 

Consegui fazer o sistema funcionar e como havia prometido, segue o código de como está funcionando.

 

Sei que não é o código mais enxuto que poderia ser e nem o melhor desenvolvido, mas o importante é que está funcionando!!!

 

Daniel, obrigado pela força!

 

Página onde são listados os eventos:

 

<?php

$sql = "SELECT * FROM agenda ORDER BY id_agenda DESC";

$resultado = mysql_query($sql)

or die ("Não foi possível realizar a consulta.");

 

while ($linha=mysql_fetch_array($resultado))

{

 

echo "<tr>";

echo "<td>{$linha['id_agenda']}</td>";

echo "<td>{$linha['data']}</td>";

echo "<td>{$linha['hora']}</td>";

echo "<td>{$linha['evento']}</td>";

echo "<td><a href='agenda-confirmar-jogo.php?id_agenda={$linha['id_agenda']}'><img src='../img/editar.png' alt='Editar' title='Editar' border='0'/></a></td>";

echo "</tr>";

}

 

echo "</table>";

?>

 

Após clicar na edição, a pessoa é encaminhada para a página onde será feita a verificação de qual evento, o usuario logado e o mesmo escolherá uma opção (sim ou não)

 

<?php

$sql = "SELECT * FROM agenda WHERE id_agenda = ".$_GET['id_agenda'];

$resultado = mysql_query($sql)

or die ("Erro consulta 1");

$linha=mysql_fetch_array($resultado);

 

$consulta = "SELECT id_usuario FROM usuario WHERE usuario = '$usuario'";

$consulta = mysql_query($consulta)

or die ("Erro consulta de id usuario");

 

while ($linha2 = mysql_fetch_array($consulta)) {$id_usuario = $linha2['id_usuario'];}

 

/*Obs.: A variável $usuario está vindo da validação de usuário*/

?>

 

<br>

Evento: <?php echo $linha['evento'] ?><br />

Usuário: <?php echo $usuario ?><br />

<form action="agenda-confirmar-jogodb.php?id_agenda=<?php echo $_GET['id_agenda'] ?>" method="post" enctype="multipart/form-data" name="enviar" >

 

Confirmar presença?

<input type='radio' name='confirmado' id='confirmado' value='1' checked />Sim

<input type='radio' name='confirmado' id='confirmado' value='0'/>Não

<br />

<br />

 

<input name="id_agenda" id="id_agenda" type="text" class="formnoticia" size="5" value="<?php echo $linha['id_agenda'] ?>" style="visibility:hidden"/>

<input name="id_usuario" id="id_usuario" type="text" class="formnoticia" size="5" value="<?php echo $id_usuario ?>" style="visibility:hidden"/>

<input type="submit" name="enviar" value="Cadastrar" class="botao-noticia">

</form>

 

Após clicar em enviar, os dados são enviados para uma terceira página que fará a inclusão dos dados na tabela de junçao de eventos e usuarios (agenda_usuario)

 

<?php

$sql = " INSERT INTO agenda_usuario (id_agenda, id_usuario, confirmado) VALUES

(

'" .$_POST['id_agenda']."',

'" .$_POST['id_usuario']."',

'" .$_POST['confirmado']."'

)";

 

$resultado = mysql_query($sql)

 

or die ("Você já fez uma escolha para esse evento. Contate o administrador.");

 

?>

 

Após isso a consulta dos confirmados é feita na última página:

 

<?php

$sql = "SELECT

a.evento,

u.nome

from agenda a

join agenda_usuario au on (a.id_agenda = au.id_agenda)

join usuario u on (u.id_usuario = au.id_usuario)

WHERE confirmado = '1'";

 

$resultado = mysql_query($sql)

 

or die ("Erro!!!");

 

if (@mysql_num_rows($resultado) == 0)

die('Ninguém confirmou presença nos eventos');

 

while ($linha=mysql_fetch_array($resultado))

 

{

echo "<strong>Evento: </strong>".$linha['evento']."<br>";

echo "<strong>Jogador: </strong>".$linha['nome']."<br>";

echo "<br>"."</p>";

}

?>

 

É isso pessoal... está funcionando aqui e pode ajudar algumas pessoas q assim como eu precisavam colocar o sistema pra funcionar e não faziam idéia de como...

 

Grande abraço e qualquer coisa é só me mandar um MP... não entendo quase nada, mas a gente pergunta junto... hehehe

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.