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

[RESOLVIDO] Problema formulário com combobox


Mosaniel

Pergunta

Olá,

Tenho um problema em um formulário de cadastro de times do site que estou fazendo, já consegui com que os dados da tabela campeonato apareça no combobox, porém não estou conseguindo passar o campo id (chave primária) da tabela campeonato para o script que insere os dados na tabela de destino. Os outros campos do formulário estão todos certos, somente tenho problema no combobox.

Agradeceria muito se alguém pudesse me ajudadar, segue abaixo o códigos.

Página do Formulário

<form action="index.php?go=inserirtime" method="post" enctype="multipart/form-data">
  <p>Nome:
  <input type="text" name="nome"/>
  </p>
  <p>    Localidade
    :
  <input type="text" name="localidade" />
  </p>
  <p>
    Escudo: 
    <input name="escudo" type="file" />
  </p>
  <p>Campeonato:
  <select name="camp" id="camp">
  <option>
  Escolha um Campeonato
  </option>
  <?
  $sql1 = "SELECT * FROM CAMPEONATO ORDER BY nome";
  $executar = mysql_query ($sql1) or die (mysql_error ());
  while ($reg = mysql_fetch_array($executar))
  {
  ?>
  <option value="<? $reg['id'];?>"><? echo $reg['nome'];?></option>
  </option>

  </select>
  <input type="hidden" name="camp" id="camp" value="<? $reg[id];?>">
   <? } ?>
Pagina que recebe os campos e insere na tabela
<?php
include "../admin/config/conexao.php"; // aqui vem a conexão com o BD

$nome = $_POST[nome];
$localidade = $_POST[localidade];
$escudo = $_FILES[escudo];
$camp = $_POST[camp];

// Se a foto estiver sido selecionada
if (!empty($escudo["name"])) {
// Largura máxima em pixels
$largura = 800;
// Altura máxima em pixels
$altura = 800;
// Tamanho máximo do arquivo em bytes
$tamanho = 100000;

     // Verifica se o arquivo é uma imagem
     if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $escudo["type"])){
       $error[1] = "Isso não é uma imagem.";
   } 
// Pega as dimensões da imagem
$dimensoes = getimagesize($escudo["tmp_name"]);
// Verifica se a largura da imagem é maior que a largura permitida
if($dimensoes[0] > $largura) {
$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
}

// Verifica se a altura da imagem é maior que a altura permitida
if($dimensoes[1] > $altura) {
$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
}
// Verifica se o tamanho da imagem é maior que o tamanho permitido
if($arquivo["size"] > $tamanho) {
   $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
}

// Se não houver nenhum erro
if (count($error) == 0) {
// Pega extensão da imagem
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $escudo["name"], $ext);

         // Gera um nome único para a imagem
         $nome_imagem = md5(uniqid(time())) . "." . $ext[1];

         // Caminho de onde ficará a imagem
$pasta = "img_times";
         $caminho_imagem = "../img_times/" . $nome_imagem;

// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($escudo["tmp_name"], $caminho_imagem);
$query = mysql_query("INSERT INTO time (nome_time, campeonato, localidade, escudo, nome_escudo) VALUES ('$nome', '$camp', '$localidade', '$pasta/$nome_imagem', '$nome_imagem')");
       // Se os dados forem inseridos com sucesso
if ($query){
echo "O time $nome foi cadastrado com sucesso.";
}
}
// Se houver mensagens de erro, exibe-as
if (count($error) != 0) {
foreach ($error as $erro) {
echo $erro . "<br />";
}
}
}
?>

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

10 respostass a esta questão

Posts Recomendados

  • 0
Troque

<option value="<? $reg['id'];?>"><? echo $reg['nome'];?></option>
Por
<option value="<?php echo $reg['id']; ?>"><?php echo $reg['nome'];?></option>

Olá, troquei com você falou porém não deu certo, continua no mesmo, é inserido um número 0 ao invés do ID do campeonato escolhido.

Link para o comentário
Compartilhar em outros sites

  • 0

Uma boa prática é definir as colunas que consulta deve retornar, e não usar o *

$sql1 = "SELECT id,nome FROM CAMPEONATO ORDER BY nome";
Verifique se a query está retornando corretamente o id. Imprima o id dentro do select.
<option value="<? $reg['id'];?>"> <? $reg['id'];?>  -   <? echo $reg['nome'];?></option>
você tb pode debugar seu código e verificar o que está vindo do formulário.
$camp = $_POST[camp];
echo $camp;
exit();

Existe um input do tipo hidden que possui o mesmo nome do seu select name='camp'

<input type="hidden" name="camp" id="camp" value="<?php echo $reg[id];?>">

Ele deve estar enviando o valor zero

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

  • 0
Uma boa prática é definir as colunas que consulta deve retornar, e não usar o *

$sql1 = "SELECT id,nome FROM CAMPEONATO ORDER BY nome";
Verifique se a query está retornando corretamente o id. Imprima o id dentro do select.
<option value="<? $reg['id'];?>"> <? $reg['id'];?>  -   <? echo $reg['nome'];?></option>
você tb pode debugar seu código e verificar o que está vindo do formulário.
$camp = $_POST[camp];
echo $camp;
exit();

Existe um input do tipo hidden que possui o mesmo nome do seu select name='camp'

<input type="hidden" name="camp" id="camp" value="<?php echo $reg[id];?>">

Ele deve estar enviando o valor zero

Ok, vou tentar aqui e posto o resultado.

E quanto ao input do tipo hidden eu já retirei pra ver se não era isso mas nada, deu no mesmo, mas o código está sem este hidden agora.

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse trecho..

$nome = $_POST[nome];
$localidade = $_POST[localidade];
$escudo = $_FILES[escudo];
$camp = $_POST[camp];
Ta faltando as aspas Seria assim
$nome = $_POST['nome'];
$localidade = $_POST['localidade'];
$escudo = $_FILES['escudo'];
$camp = $_POST['camp'];

Link para o comentário
Compartilhar em outros sites

  • 0
Nesse trecho..

$nome = $_POST[nome];
$localidade = $_POST[localidade];
$escudo = $_FILES[escudo];
$camp = $_POST[camp];
Ta faltando as aspas Seria assim
$nome = $_POST['nome'];
$localidade = $_POST['localidade'];
$escudo = $_FILES['escudo'];
$camp = $_POST['camp'];

Já tentei colocar as aspas e nada

Obs.: sem as aspas mesmo os campos nome, localidade, e escudo funcionam normalmente com aspas ou sem aspas, tenho um problema apenas com o (camp) que é, a parte de onde vem o combobox.

Link para o comentário
Compartilhar em outros sites

  • 0

Nessa linha:

mysql_query("INSERT INTO time (nome_time, campeonato, localidade, escudo, nome_escudo) VALUES ('$nome', '$camp', '$localidade', '$pasta/$nome_imagem', '$nome_imagem')");
Se camp é representa um id então é int e n deveria ter aspas Certo seria assim
mysql_query("INSERT INTO time (nome_time, campeonato, localidade, escudo, nome_escudo) VALUES ('$nome', $camp, '$localidade', '$pasta/$nome_imagem', '$nome_imagem')");

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...