Ir para conteúdo

POWERED BY:

Arquivado

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

lsteffler

[Resolvido] Exibir aniversariante do mês...

Recommended Posts

Boa Noite!

 

Fiz varias pesquisas no fórum e cheguei a este codigo:

 

mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = '" . $_REQUEST['data']."'") or die(mysql_error());

ele exibe os aniversariantes do mes, mas apresenta junto este erro:

 

Notice: Undefined index: data in /hsphere/local/home/escola4dej/escola4dejulho.com.br/principal.php on line 96

 

 

Codigo Completo:

<?php
include 'conexao.php';
$query[] = mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = '" . $_REQUEST['data']."'") or die(mysql_error());
$numRegs = mysql_num_rows($query[0]);
if ($numRegs % 2 != 0)
{
	$numRegs++;
}
$regPerRow = $numRegs / 2;
$divClass = 1;
$counter = 1;

while ($data = mysql_fetch_array($query[0]))
{
if ($counter == 1) // se estamos no começo...
{
 print ('<div id="col1">'); // inicie a primeira div
}
print ($data['nome'].'<br>'); // mostre o registro
if ($counter == $regPerRow) // se estamos na metade
{
 print ('</div><div id="col2">'); // feche a div e inicie outra
}
elseif ($counter == $numRegs) // se estamos no fim
{
 print ('</div>'); // feche a div
}
$counter++;
}
?>

Se alguem puder me auxiliar, muitíssimo obrigado! ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

teste da seguinte maneira:

 

mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = Month('{$_REQUEST["data"]}') ") or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leandro...

 

Deu mesmo erro e nao apareceu nenhum resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se você está recebendo a variável $_REQUEST["data"] corretamente, imprima-a na tela e confira...

 

isso significa q você tem q enviar data, por get atraves da query string, ou por post , em um form

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... eu nao entendo muito disso ...

 

eu preciso que exiba apenas os nomes dos aniversariantes do mes atual....

 

no cadastro destes aniversariantes é feito atraves de um form post...

 

e nessa consulta tem o código completo lá em cima...

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, qdo você manda por form via post, você deve receber assim: $_POST["data"] (supondo que data, seja o name do input do form)

 

acima da linha include 'conexao.php';

 

faça o seguinte:

 

echo "Data que está recebendo: {$_POST["data"]} ";

ai, você saberá exatamente se o código está recebendo o valor certo, ou se num ta recebendo nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas tipo... se eu colocar acima da linha include nao vai aparecer nada nao acha? pois nao ta definido a conexao nem a tabela de consulta...

 

pq este formulario se encontra em outra pagina, e é enviado ao banco de dados...

 

acho q eu nao estou entendendo direito. :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente, você não precisa estar conectado no banco para exibir uma variável global GET ou POST...

 

você precisa conferir se está recebendo corretamente essa variável...

 

 

aconselho você dar uma estudada melhor em alguns conceitos de html, get e post... recomendo o google para tal estudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum...

bom...

 

eu coloquei conforme você me passou e o resultado foi um erro um pouquinho maior:

 

Notice: Undefined index: data in /hsphere/local/home/escola4dej/escola4dejulho.com.br/principal.php on line 95 Data que está recebendo: Notice: Undefined index: data in /hsphere/local/home/escola4dej/escola4dejulho.com.br/principal.php on line 97

 

tipo... o consulta funcionava perfeitamente antes, claro, exibindo todos os aniversariantes, aí busquei por esta consulta de apenas os do mes atual e entao surgiu este erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmm agora me caiu a ficha, Notice: undefined index, significa q não você não enviou seja através de post ou get nenhum parâmetro com o nome data...

 

você está enviando essa data através de um formulário ? manda ele para darmos uma olhadinha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cadastro_niver.php

<form id='form1' name='form1' method='post' action='salvar_niver.php'>
  <h3 align='center'>Cadastro de Aniversariantes</h3>
  <table border='1' align='center'>
	<tr>
	  <td>Nome</td>
	  <td><input name='nome' type='text' id='nome' /></td>
	</tr>
	<tr>
	  <td>Data de Nascimento</td>
	  <td><input name='data' type='text' id='data' /></td>
	</tr>
	<tr>
	  <td> </td>
	  <td><input type='submit' name='Submit' value='Gravar' style='cursor:pointer'/></td>
	</tr>
  </table>
</form>

salvar_niver.php

<?php
@ini_set('display_errors', '1');
error_reporting(E_ALL);

$nome	   = $_POST["nome"];
$data	= $_POST["data"];
$data	 = implode("-", array_reverse(explode("/", $data)));

mysql_connect("mysql04.tecla.com.br", "escola4_julho", "4djulho");
mysql_select_db("escola4_banco");

mysql_query("INSERT INTO aniversariantes ( id , nome , data ) 
			VALUES ( NULL , '$nome', '$data')");
mysql_close();
echo "<script>alert('Salvo com sucesso !')</script> \n <script>window.location=('cadastro_niver.php')</script>";
?>

conexao.php

<?
$host		= 'xxxxxxxx';
$usuario	= 'xxxxxxxxxx';
$senha		= 'xxxxxxxxx';
$banco		= 'xxxxxxxx';
$conecta	= mysql_connect ($host,$usuario,$senha) or die ('Nao foi possível conectar-se ao servidor');
			  mysql_select_db($banco,$conecta) or die ('Nao foi possível selecionar o banco');

?>

principal.php (onde deve aparecer a lista de aniversariantes do mês)

<div id="aniversarios">
   	  <p class="titulo">Aniversariantes do Mes:</p>
		<br />
<?php
echo "Data que está recebendo: {$_POST["data"]} ";
include 'conexao.php';
$query[] = mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = '".$_REQUEST['data']."'") or die(mysql_error());
$numRegs = mysql_num_rows($query[0]);
if ($numRegs % 2 != 0)
{
	$numRegs++;
}
$regPerRow = $numRegs / 2;
$divClass = 1;
$counter = 1;

while ($nome = mysql_fetch_array($query[0]))
{
if ($counter == 1) // se estamos no começo...
{
 print ('<div id="col1">'); // inicie a primeira div
}
print ($nome['nome'].'<br>'); // mostre o registro
if ($counter == $regPerRow) // se estamos na metade
{
 print ('</div><div id="col2">'); // feche a div e inicie outra
}
elseif ($counter == $numRegs) // se estamos no fim
{
 print ('</div>'); // feche a div
}
$counter++;
}
?>
	</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te passar um script , ai você adapta as suas necessidades ai ;)

 

Criando a table:

é bom melhorar esse sql eim, fiz apenas como um exemplo, não está no modo totalmente correto, pode ser simplificado.

CREATE TABLE `cadastro` (
  `id_cad` int(5) unsigned zerofill NOT NULL auto_increment,
  `nome` char(120) NOT NULL,
  `e-mail` char(120) NOT NULL,
  `dia` int(2) NOT NULL,
  `mes` int(2) NOT NULL,
  `ano` int(4) NOT NULL,
  PRIMARY KEY  (`id_cad`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
Conexão com a base de dados:

con.php

<?php
$hostname_lol = "127.0.0.1";
$database_lol = "BASE";
$username_lol = "USUARIO";
$password_lol = "SENHA";
$lol = mysql_pconnect($hostname_lol, $username_lol, $password_lol) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
Mostrando os aniversariantes do dia:

<?php require_once('con.php'); ?>

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
	case "text":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;	
	case "long":
	case "int":
	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
	  break;
	case "double":
	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
	  break;
	case "date":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;
	case "defined":
	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
	  break;
  }
  return $theValue;
}
}

$varDia_rsNiver = date("d");
if (isset($varDia)) {
  $varDia_rsNiver = $varDia;
}
$varMes_rsNiver = date("m");
if (isset($varMes_rsNiver)) {
  $varMes_rsNiver = $varMes_rsNiver;
}
mysql_select_db($database_lol, $lol);
$query_rsNiver = "SELECT * FROM cadastro WHERE cadastro.dia='$varDia_rsNiver' AND cadastro.mes='$varMes_rsNiver'";

$rsNiver = mysql_query($query_rsNiver, $lol) or die(mysql_error());
$row_rsNiver = mysql_fetch_assoc($rsNiver);
$totalRows_rsNiver = mysql_num_rows($rsNiver);
?><table width="489" border="1">
  <tr>
	<td width="209">Nome</td>
	<td width="229">Data</td>
  </tr>
  <?php do { ?>
	<tr>
	  <td><?php echo $row_rsNiver['nome']; ?></td>
	  <td><?php echo $row_rsNiver['dia']."/"; ?><?php echo $row_rsNiver['mes']."/"; ?><?php echo $row_rsNiver['ano']; ?></td>
	</tr>
	<?php } while ($row_rsNiver = mysql_fetch_assoc($rsNiver)); ?>
</table>
<?php
mysql_free_result($rsNiver);
?>

Abração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, de acordo com o que você enviou, lstfeller, o arquivo, principal.php , é o que vai exibir os aniversariantes do mes, porém, você não está enviando para esse arquivo, qual mês q deseja exibir os aniversariantes...

 

você deve enviar através do método get, com a variável data, o mês que deseja exibir...

 

exemplo, meusite.com.br/principal.php?data=12

 

no caso data, o nome da variável do mês, e 12 é o mês a ser exibido,.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum....

 

O que eu gostaria é que fosse automatico essa troca... de acordo com o mês vigente, entende.

 

e no local onde encontrei este código era exatamente disso q se tratava.

 

mas, conforme você me cita está faltando esta parte entao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah tah,

 

"suspeitei desde o principio.... não priemos cânico..." hueahueahuehuea

 

 

simples, nessa linha:

 

$query[] = mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = '".$_REQUEST['data']."'") or die(mysql_error());

faça o seguinte

$mes_atual = date("m");
$query[] = mysql_query("SELECT * FROM aniversariantes WHERE Month(data) = '$mes_atual' ") or die(mysql_error());

é isso ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh, dentro desse seu while, você realmente colocou umas condições meio malucas...

 

não poderei ver agora, mas a noite dou uma olhada pra ti...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Moderadores: ESTA QUESTAO ESTA RESOLVIDA!

 

beleza Leandro!

 

Vou abrir outro tópico pois a questão é diferente agora. Brigadão pela ajuda qto a data!

 

Abraços!

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.