Jump to content


Photo

Enviar Data Para O Banco De Dados.


  • Faça o login para participar
8 replies to this topic

#1 Kleiton Carlo

Kleiton Carlo

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 20/02/2008, 01:20

Seguinte, tenho aqui um sistema de agenda de eventos, no qual os eventos devem ser mostrados assim:

10 de janeiro de 2008 - Evento 1
20 de abril de 2008 - Evento 2
30 de dezembro de 2008 - Evento 3

Certo? No meu cadastro eu seleciono, Dia, Mês por extenso e Ano.

Então quando é enviado o formulário busca o arquivo envia.php, nele contém este codigo:
[codebox]
include("conexao.php");

$evento = $_POST['evento'];
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$ano = $_POST['ano'];
$local = $_POST['local'];
$horario = $_POST['horario'];
$valores = $_POST['valores'];
$vendas = $_POST['vendas'];
$glabu = $_POST['glabu'];
$descricao = $_POST['descricao'];
if($mes == 'Janeiro') { $mes_numero = "1"; }
if($mes == 'Fevereiro') { $mes_numero = "2"; }
if($mes == 'Março') { $mes_numero = "3"; }
if($mes == 'Abril') { $mes_numero = "4"; }
if($mes == 'Maio') { $mes_numero = "5"; }
if($mes == 'Junho') { $mes_numero = "6"; }
if($mes == 'Julho') { $mes_numero = "7"; }
if($mes == 'Agosto') { $mes_numero = "8"; }
if($mes == 'Setembro') { $mes_numero = "9"; }
if($mes == 'Outubro') { $mes_numero = "10"; }
if($mes == 'Novembro') { $mes_numero = "11"; }
if($mes == 'Dezembro') { $mes_numero = "12"; }
$data = "$ano-$mes_numero-$dia";


$existe = mysql_query("SELECT * FROM eventos WHERE evento = '$evento'");
$contar = mysql_num_rows($existe);


$sql = "INSERT INTO eventos (evento, dia, mes, ano, local, horario, valores, vendas, glabu, descricao, data, foto) VALUES ('$evento', '$dia', '$mes', '$ano', '$local', '$horario', '$valores', '$vendas', '$glabu', '$descricao', '$data', '$foto')";
if(mysql_query($sql)) {
echo "<div align=center><font size=1 face=verdana><br><br>O evento foi cadastrado com sucesso!</font></div>";
echo "<meta HTTP-EQUIV = 'Refresh' CONTENT = '2; URL = ../../agenda.php'>";
}else{
echo "<div align=center><font size=1 face=verdana><br><br>Não foi possivel cadastrar!</font></div>";
echo "<meta HTTP-EQUIV = 'Refresh' CONTENT = '2; URL = ../../cadastreseuevento.php'>";
}

?>

$data = "$ano-$mes_numero-$dia"; Está linha deveria deixar os dias em formato estrangeiro, só que está linha não está preenchendo a data!

Quando insiro $data mostra 0000-00-00 ou seja não está pegando a data, e isso está atrapalhando a organização por data dos eventos na agenda.

Na tabela do banco de dados $data é inserida assim: "data date default NULL,"

Vou colocar o codigo da seleção de data para ajudar, porque não sei onde está o problema!

<select name="dia" id="dia">
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="mes" id="mes">
<option value="Janeiro">Janeiro</option>
<option value="Fevereiro">Fevereiro</option>
<option value="Mar&ccedil;o">Mar&ccedil;o</option>
<option value="Abril">Abril</option>
<option value="Maio">Maio</option>
<option value="Junho">Junho</option>
<option value="Julho">Julho</option>
<option value="Agosto">Agosto</option>
<option value="Setembro">Setembro</option>
<option value="Outubro">Outubro</option>
<option value="Novembro">Novembro</option>
<option value="Dezembro">Dezembro</option>
</select>
<select name="ano" id="ano">
<option value="<? echo date("Y"); ?>"><? echo date("Y") ?></option>
<option value="<? $data = date("Y"); $somar = $data + 1; echo $somar; ?>"><? echo $somar; ?></option>
</select>
[/codebox]
Preciso muito de ajuda, fico no aguardo!

Grato.

Edição feita por: savior, 20/02/2008, 09:19.
Utilize tags [codebox] para trechos longos de código.


#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 20/02/2008, 08:31

Pois bem, primeira dica, você não precisa daqueles 12 if's. :blink:

Basta você deixar o value das opções com o correspondente número do mês. ;)

Antes de inserir no banco, já tentou fazer um "debug" imprimindo na tela o conteúdo de $data para ver se este valor está normal? Tente fazer ido. (ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Luckas

Luckas

    Luckas

  • Usuários
  • 341 posts
  • Sexo:Masculino
  • Localidade:Itapira SP.
  • Interesses:HTML
    PHP
    CSS
    PhotoShop

Posted 20/02/2008, 10:12

concordo com o Paulo André. Em Html mesmo você resolve a zica. Qualquer coisa responde ae. :D
Luckas_
********
cheeseboy_@hotmail.com

#4 Kleiton Carlo

Kleiton Carlo

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 20/02/2008, 12:21

Pois bem, primeira dica, você não precisa daqueles 12 if's. :blink:

Basta você deixar o value das opções com o correspondente número do mês. ;)

Antes de inserir no banco, já tentou fazer um "debug" imprimindo na tela o conteúdo de $data para ver se este valor está normal? Tente fazer ido. (ok2)



Seguinte, já imprimir o $data sai 0000-00-00 ou seja não está sendo postada no bando de dados o valor data, por exemplo tirando os if's, e deixando o mês como numeral mesmo, como farei para somar dia+mês+ano ou ano+mês+dia no caso da ordem estrangeira né!

Seguinte o link do sistema é esse: http://glabu.com.br/agenda.php dá uma olhada lá eu coloquei "Valor do $data:" onde imprime o que tem na $data, dá uma conferida!

Sou novato na área, então mes desculpe qualquer ignorancia!

Edição feita por: Kleiton Carlo, 20/02/2008, 12:31.


#5 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 20/02/2008, 12:51

FalAe!

Fazendo assim (abaixo), como foi dito acima, fica exatamente igual com os ifs... pq no final das contas, quando vc envia pro BD, vai só os números...

<select name="select">
<option value="1">Janeiro</option>
<option value="2">Fevereiro</option>
</select>

tirando os if's, e deixando o mês como numeral mesmo, como farei para somar dia+mês+ano


Não entendi... :huh:

Ah, se preferir pode colocar assim tmb:

<select name="select">
<option value="1Janeiro">Janeiro</option>
<option value="2Fevereiro">Fevereiro</option>
</select>

Depois vc usa explode (acho q é isso), e pega o que quiser, na hora que precisar (apesar de o bd ficar mais pesado rsrsrs)

Até +

Edição feita por: leonelbr, 20/02/2008, 12:53.

FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#6 Kleiton Carlo

Kleiton Carlo

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 20/02/2008, 12:57

FalAe!

Fazendo assim (abaixo), como foi dito acima, fica exatamente igual com os ifs... pq no final das contas, quando vc envia pro BD, vai só os números...

<select name="select">
<option value="1">Janeiro</option>
<option value="2">Fevereiro</option>
</select>

tirando os if's, e deixando o mês como numeral mesmo, como farei para somar dia+mês+ano


Não entendi... :huh:

Ah, se preferir pode colocar assim tmb:

<select name="select">
<option value="1Janeiro">Janeiro</option>
<option value="2Fevereiro">Fevereiro</option>
</select>

Depois vc usa explode (acho q é isso), e pega o que quiser, na hora que precisar (apesar de o bd ficar mais pesado rsrsrs)

Até +


Só que é o seguinte, tudo bem já tirei os if's, e também modifiquei o mês para numeral.

Só que no enviar.php

$evento = $_POST['evento'];$dia = $_POST['dia'];$mes = $_POST['mes'];$ano = $_POST['ano'];$local = $_POST['local'];$horario = $_POST['horario'];$valores = $_POST['valores'];$vendas = $_POST['vendas'];$glabu = $_POST['glabu'];$descricao = $_POST['descricao'];$data = "$dia-$mes-$ano";

Entendeu? como que vou juntar dia+mês+ano que selecionei para enviar para o banco de dados?

Porque $data = "$dia-$mes-$ano"; não funciona, quando imprimi $data apareceu a mesma coisa 0000-00-00

Aguardo.

#7 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 20/02/2008, 13:07

Não existe nenhuma possibilidade de logo após você ter atribuído o valor para $data, ser exibido 0000-00-00. Você não entendeu o que é para fazer. (y)

Tente novamente fazer o debug que eu disse, imprima para ver se o que está indo para o banco é o esperado.Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#8 leonelbr

leonelbr

    12 Horas

  • Usuários
  • 205 posts
  • Sexo:Masculino

Posted 20/02/2008, 13:09

Faz o seguinte, envia separado mesmo. Na hora que vc for pegar os dados no BD vc junta. Tipo:

echo"$dia-$mes-$ano";

Acho que fica até mais flexivel. Por exemplo, se vc quiser depois imprimir como 01/10/2008 é so colocar

echo"$dia/$mes/$ano";

+/- isso. Essa é a ideia, testa ae e diz se deu.

Vlw!

Edição feita por: leonelbr, 20/02/2008, 13:10.

FLASH FORWARD - Novo seriado da ABC. Um substituto para LOST?
Série de ficção cientifica que promete arrastar muitos fãs, principalmente os de Lost. Confira mais em:
www.flashforwardbr.com
-------------------------------------------------------------------------------------------------
Portal Evangélico ( AMIZADE | Downloads | Cartões Virtuais )

#9 Kleiton Carlo

Kleiton Carlo

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 21/02/2008, 13:09

Não existe nenhuma possibilidade de logo após você ter atribuído o valor para $data, ser exibido 0000-00-00. Você não entendeu o que é para fazer. (y)

Tente novamente fazer o debug que eu disse, imprima para ver se o que está indo para o banco é o esperado.


Esse "debug" que se refere seria o que? Se for colocar um echo na pagina para ver o que tem no $data eu já fiz isso, aparece 0000-00-00.

Ou então vamos esquecer esse comando $data.

Agora vamos organizar por dia, mes e ano. Utilizando $dia $mes e $ano que já estão postados no banco de dados!

Como seria essa organização neste codigo?

<?
include("agenda/conexao.php");
$sql = mysql_query("SELECT * FROM eventos ORDER BY mes desc");
$contar = mysql_num_rows($sql);
if($contar < 1) {
echo "<font size=1 face=veredana>Não existe nenhum evento cadastrado atualmente!</font>";
}else{
while($mostrar = mysql_fetch_assoc($sql)) {

?>

Estou tentando organizar por dia,mes.

Funciona, só que mês e dia que tem mais de uma casa decimal não funciona pega só a primeira casa, por exemplo dia 29 pega só o 2, mês 12 pega só 1.

E já conferi no banco de dados funciona as duas casas!

Grato!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq