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

MYSQL+PHP Sistema de Notícias


Elvys Pereira

Pergunta


Olá pessoal!

Estou com um probleminha. Esse sistema deveria mostrar as entradas dos arquivos por mês, mas ele mostra tudo, mesmo que você selecione o mês.

O mês pega por get, a query deve até lê-lo mas não separa...

Ah, e o campo data é mais ou menos assim: "DD/MM/AAAA HH:mm"

<?
//include config settings
(...)
$mes = $_GET['mes'];

switch($mes){
case jan09:
$m = "/01/";
break;
case fev09:
$m = "/02/";
break;
case mar09:
$m = "/03/";
break;
case abr09:
$m = "/04/";
break;
case mai09:
$m = "/05/";
break;
case jun09:
$m = "/06/";
break;
case jul09:
$m = "/07/";
break;
case ago09:
$m = "/08/";
break;
case set09:
$m = "/09/";
break;
case out09:
$m = "/10/";
break;
case nov09:
$m = "/11/";
break;
case dez09:
$m = "/12/";
break;

}

echo $m;

function verPosts()
{
global $connection, $limit;

$page = $_GET[/page][page];
$query_count = "SELECT titulo FROM arquivos";
$result_count = @mysql_query($query_count);
$totalrows = mysql_num_rows($result_count);

if(!$page)
{
$page = 1;
}


$limitvalue = $page * $limit - ($limit);


$query = "SELECT * FROM arquivos WHERE data LIKE '%".$m."%' LIMIT $limitvalue, $limit";
$result = @mysql_query($query) or die("Error: " . mysql_error());

if(mysql_num_rows($result) == 0)
{
echo "Sem mensagens!";
}

//loop to display all items
while ($row = mysql_fetch_assoc($result))
{
//define variables
$data = $row['data'];
$titulo = $row['titulo'];
$autor = $row['autor'];
$conteudo = $row['conteudo'];


(...)

$self = $_SERVER['PHP_SELF'];


echo"<center>

<table width=80% align=center cellspacing=3 border=0>

<tr><td class=newsbg width=80%><table class=newsbg width=100%><tr><td width=80><img src=$avatar></td>

<td class=newsbg><center><b><big>$titulo</big></b><br>

Escrito por <b>$autor</b> em $data.<br>

$mostreComentarios

<br>

</center>

</td></tr></table></td></tr><tr><td valign=top class=news>


$conteudo



</td></tr></table>

<br>";

//end
}

if($page > 1)
{
$pageprev = $page - 1;
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=$pageprev\">Ver</a>&nbsp;";
echo "\n";
}
else
{
echo "Ver&nbsp;";
echo "\n";
}

$numofpages = $totalrows / $limit;

for($i = 1; $i <= $numofpages; $i++)
{
if($i == $page)
{
echo "$i";
echo "&nbsp;";
echo "\n";
}
else
{
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=$i\">$i</a>&nbsp;";
echo "\n";
}
}

if(($totalrows % $limit) != 0)
{
if($i == $page)
{
echo "$i";
echo "&nbsp;";
echo "\n";
}
else
{
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=$i\">$i</a>&nbsp;";
echo "\n";
}
}

if(($totalrows - ($limit * $page)) > 0)
{
if(!$page)
{
$page = 1;
}
$pagenext = $page + 1;
echo "<a href=\"{$_SERVER['PHP_SELF']}?page=$pagenext\">Próxima</a>";
echo "\n";
}
else
{
echo "&nbsp; Próxima ";
echo "\n";
}
}

//switch between functions according to action passed along with URL
switch($_GET['action'])
{
case 'all':
verPosts(1);
break;

default:
verPosts();
}

?>
</center>

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Supondo que o campo seja DATE, faça o seguinte

remova as barras dos meses do swith deixe só os numeros exemplo $m = "01";

Altere a query

de:

$query = "SELECT * FROM arquivos WHERE data LIKE '%".$m."%' LIMIT $limitvalue, $limit";

para:

$query = "SELECT * FROM arquivos WHERE month( data ) = '$m' LIMIT $limitvalue, $limit";

Link para o comentário
Compartilhar em outros sites

  • 0
Supondo que o campo seja DATE, faça o seguinte

remova as barras dos meses do swith deixe só os numeros exemplo $m = "01";

Altere a query

de:

$query = "SELECT * FROM arquivos WHERE data LIKE '%".$m."%' LIMIT $limitvalue, $limit";

para:

$query = "SELECT * FROM arquivos WHERE month( data ) = '$m' LIMIT $limitvalue, $limit";

Ops, o campo não é date, é varchar.

Exemplo: 30/11/2009 22:10

Link para o comentário
Compartilhar em outros sites

  • 0

humm , varchar para data complica

bem, uma coisa que pode fazer é criar um campo data2 datetime e colocar o conteudo do data nele, depois que estiver Ok remove o data e renomeia o data2 para data

se não quiser ter este trabalho, e achar que esta bom da forma que esta, voce pode usar a função substrind direto no seu sql

ficaria algo como:

$query = "SELECT * FROM arquivos WHERE substring( data, 4, 2) = '$m' LIMIT $limitvalue, $limit";

porem eu aconselho usar o datetime que se for ordenar, agrupar ficaria mais facil

qualquer dufida sobre a função do mysql de uma olhada em :

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

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,2k
    • Posts
      652k
×
×
  • Criar Novo...