Ir para conteúdo
Fórum Script Brasil
  • 0

Limitar Cadastro PHP


Rogério Rodrigues

Pergunta

Olá pessoal, estou com um probleminha,

Eu montei um Formulário de Cadastro aqui na minha Faculdade, no qual as pessoa se cadastraram para um evento que ocorrera aqui na instituição, e neste cadastro elas precisam selecionar um Oficina que ela pretendem participar,

porém, como é muita gente, preciso limitar o numero de cadastro de cada Oficina, ou seja, não posso deixar que todo mundo se cadastre na mesma oficina.

vejam o código:

do formulário:

<form name="signupform" method="post" action="signingup.php">

Nome:<input type="text" class="input" name="nome" id />

RA:<input type="text" class="input" name="ra" />

Oficina:
<select class="input2" name="oficina">
  <option value="1oficina">1º Oficina</option>
  <option value="2oficina">2º Oficina</option>
  <option value="3oficina">3º Oficina</option>
  <option value="4oficina">4º Oficina</option>
  <option value="5oficina">5º Oficina</option>
  <option value="6oficina">6º Oficina</option>
</select>

E-mail:<input type="text" class="input" name="email" />
<input type="submit" value="Cadastrar" class="button" />

</form>
da página PHP signingup.php :
<?php
$verify = mysql_query("SELECT * FROM usuario");
$row = mysql_num_rows($verify);
if($row <= 29){
$nome=$_POST['nome'];
$ra=$_POST['ra'];
$semestre=$_POST['semestre'];
$oficina=$_POST['oficina'];
$email=$_POST['email'];
$sql = mysql_query("INSERT INTO `usuario` (nome, ra, semestre, oficina, email) VALUES('$nome', '$ra', '$semestre', '$oficina', '$email')");
echo"<center> Cadastro efetuado com Sucesso </center>";
}else {
echo"<center> As incrições já Encerraram </center>";
exit;
}
?>
<?php
echo"<br /> <br />";
$restante = 29 - $row;
echo"<center>Vagas Restantes:  $restante </center>";
?>

Do jeito que estar aqui, ele conta quantos registro foram criados e se for menor ou igual a 29 ele cadastra, se não ele diz que as inscrições foram encerradas,

porém eu quero que ele conte quantos tem de cada oficina, e não quantos cadastros foram feitos na tabela, e quero que tenha um limite para cada uma das oficinas.

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

boa tarde amigo...

vou tentar te ajudar...

no seu bd você poderia fazer o seguinte

tabela : oficinas

id, nome, vagas. ai em vagas você poderia colocar o numero desejado e a cada cadastro você iria verificar se tem vagas, caso haja no momento do cadastro iria subtrair 1 da qnt de vagas.

v vai ter que criar um select listando todas as oficinas separadas e a quantidade de alunos.... ai daria pra saber qntas vagas restam para cada curso...

Editado por blackout_almenara
Link para o comentário
Compartilhar em outros sites

  • 0

use a função SELECT COUNT(campo) AS contagem FROM tabela WHERE id_oficina=id_resgatado_da_oficina

se a contagem for maior ou igual a 29, da erro.. do contrario, ele se cadastra...

ou, você pode fazer essa contagem e no select box só deixa aparecer os registros que tem menos de 29 pessoas cadastradas.. acho que assim facilita mais o cadastro da pessoa

Link para o comentário
Compartilhar em outros sites

  • 0

O metodo mais correto e seguir o que o blackout disse.

Mais se você quiser dar um jeitinho brasileiro você pode criar variaveis com o limite de vagas para cada oficina.

<?php
$verify = mysql_query("SELECT * FROM usuario");
$oficina=$_POST['oficina'];
if($oficina == 1){
    $vagas = 10;
}
elseif($oficina == 2){
    $vagas = 20;
}
elseif($oficina == 3){
    $vagas = 30;
}
elseif($oficina == 4){
    $vagas = 40;
}
elseif($oficina == 5){
    $vagas = 50;
}
elseif($oficina == 6){
    $vagas = 60;
}
else{
    echo("Aconteceu algum erro!");
}
if(!empty($vagas)){
$row = mysql_num_rows($verify);
if($row <= $vagas){
$nome=$_POST['nome'];
$ra=$_POST['ra'];
$semestre=$_POST['semestre'];
$email=$_POST['email'];
$sql = mysql_query("INSERT INTO `usuario` (nome, ra, semestre, oficina, email) VALUES('$nome', '$ra', '$semestre', '$oficina', '$email')");
echo"<center> Cadastro efetuado com Sucesso </center>";
}else {
echo"<center> As incrições já Encerraram </center>";
exit;
}
}
?>
<?php
echo"<br /> <br />";
$restante = $vagas - $row;
echo"<center>Vagas Restantes:  $restante </center>";
?>
A variavel "vagas" e a quantidade de vagas respectiva para cada oficina de acordo com numero da oficina. Mude os os values das oficinas para numeros apenas.
<select class="input2" name="oficina">
  <option value="1">1º Oficina</option>
  <option value="2">2º Oficina</option>
  <option value="3">3º Oficina</option>
  <option value="4">4º Oficina</option>
  <option value="5">5º Oficina</option>
  <option value="6">6º Oficina</option>
</select>

Link para o comentário
Compartilhar em outros sites

  • 0

Del Palmis funcionou legal,

só um detalhe, como faço pra contar, a quantidade de cada uma das oficinas,

ele esta contando quantos registros em geral foram criados e subtraindo pelo numero da vagas,

tipo assim, como faço pra contar quantos oficinas n° 1 tem, e depois subtrair pelo numero de vagas...

desde já grato!

O metodo mais correto e seguir o que o blackout disse.

Mais se você quiser dar um jeitinho brasileiro você pode criar variaveis com o limite de vagas para cada oficina.

<?php
$verify = mysql_query("SELECT * FROM usuario");
$oficina=$_POST['oficina'];
if($oficina == 1){
    $vagas = 10;
}
elseif($oficina == 2){
    $vagas = 20;
}
elseif($oficina == 3){
    $vagas = 30;
}
elseif($oficina == 4){
    $vagas = 40;
}
elseif($oficina == 5){
    $vagas = 50;
}
elseif($oficina == 6){
    $vagas = 60;
}
else{
    echo("Aconteceu algum erro!");
}
if(!empty($vagas)){
$row = mysql_num_rows($verify);
if($row <= $vagas){
$nome=$_POST['nome'];
$ra=$_POST['ra'];
$semestre=$_POST['semestre'];
$email=$_POST['email'];
$sql = mysql_query("INSERT INTO `usuario` (nome, ra, semestre, oficina, email) VALUES('$nome', '$ra', '$semestre', '$oficina', '$email')");
echo"<center> Cadastro efetuado com Sucesso </center>";
}else {
echo"<center> As incrições já Encerraram </center>";
exit;
}
}
?>
<?php
echo"<br /> <br />";
$restante = $vagas - $row;
echo"<center>Vagas Restantes:  $restante </center>";
?>
A variavel "vagas" e a quantidade de vagas respectiva para cada oficina de acordo com numero da oficina. Mude os os values das oficinas para numeros apenas.
<select class="input2" name="oficina">
  <option value="1">1º Oficina</option>
  <option value="2">2º Oficina</option>
  <option value="3">3º Oficina</option>
  <option value="4">4º Oficina</option>
  <option value="5">5º Oficina</option>
  <option value="6">6º Oficina</option>
</select>

Link para o comentário
Compartilhar em outros sites

  • 0

Bom Pessoal, não resolvi o problema da forma mais adequada, mais pelo menos resolvi né, fiz da seguinte forma:

coloquei um identificador de qual oficina esta vindo, e coloquei as condições, se for 1, então executar aquele primeiro código lá, se não imprimir aqueles aviso seguintes, então é o seguinte, é só repetir aquele esse primeiro código de inserção nos outros elseif e alterarem o WHERE que ele esta vereficando, que ele verificara se há vagas e fará a inserção sim ou não.

mais se alguém consegui resumi tudo isso para um codigo unico que faça a mesma coisa, postem ai.

valeu pessoal...

<?php
$oficina=$_POST['oficina'];
if($oficina == 1){

$verify = mysql_query("SELECT * FROM usuario WHERE oficina = '1' ");
$row = mysql_num_rows($verify);
if($row <= 9){
$nome=$_POST['nome'];
$ra=$_POST['ra'];
$semestre=$_POST['semestre'];
$oficina=$_POST['oficina'];
$email=$_POST['email'];
$sql = mysql_query("INSERT INTO `usuario` (nome, ra, semestre, oficina, email) VALUES('$nome', '$ra', '$semestre', '$oficina', '$email')");
echo"<center> Cadastro efetuado com Sucesso </center>";
}else {
echo"<center> As incrições já Encerraram </center>";
exit;
}

}
elseif($oficina == 2){
   echo("Aconteceu algum erro na oficina 2!");
}
elseif($oficina == 3){
   echo("Aconteceu algum erro na oficina 3!");
}
elseif($oficina == 4){
   echo("Aconteceu algum erro na oficina 4!");
}
elseif($oficina == 5){
    echo("Aconteceu algum erro na oficina 5!");
}
elseif($oficina == 6){
    echo("Aconteceu algum erro na oficina 6!");
}
else{
    echo("Aconteceu algum erro de verdade!");
}

?>
<?php
echo"<br /> <br />";
$restante = 9 - $row;
echo"<center>Vagas Restantes:  $restante </center>";
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe a demora em responder mais estava de férias. Então ai vai. Ele está pegando todos os resgistros pelo que vi. Então o que você pode fazer e pegar a coluna onde a oficina e registrada e dar um WHERE assim como você acima para pega o id da oficina assim sabendo o total de vagas de cada oficina em questão e total de resgitros também.

Só uma pergunta a coluna da oficina registra o ID da oficina?!

Oficina 1 = "1"

Oficina 2 = "2"

Etc, se for assim pode fazer igual ao modelo abaixo.

<?php
$oficina=$_POST['oficina'];
$verify = mysql_query("SELECT * FROM usuario WHERE oficina = '$oficina'");
if($oficina == 1){
    $vagas = 10;
}
elseif($oficina == 2){
    $vagas = 20;
}
elseif($oficina == 3){
    $vagas = 30;
}
elseif($oficina == 4){
    $vagas = 40;
}
elseif($oficina == 5){
    $vagas = 50;
}
elseif($oficina == 6){
    $vagas = 60;
}
else{
    echo("Aconteceu algum erro!");
}
if(!empty($vagas)){
$row = mysql_num_rows($verify);
if($row <= $vagas){
$nome=$_POST['nome'];
$ra=$_POST['ra'];
$semestre=$_POST['semestre'];
$email=$_POST['email'];
$sql = mysql_query("INSERT INTO `usuario` (nome, ra, semestre, oficina, email) VALUES('$nome', '$ra', '$semestre', '$oficina', '$email')");
echo"<center> Cadastro efetuado com Sucesso </center>";
}else {
echo"<center> As incrições já Encerraram </center>";
exit;
}
}
?>
<?php
echo"<br /> <br />";
$restante = $vagas - $row;
echo"<center>Vagas Restantes:  $restante </center>";
?>

Desse modo ele so vai contar da oficina em que for passado o ID.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...