Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Chiarelotto

Resultado por semana

Recommended Posts

Boa tarde.

Estou precisando fazer um codigo para mostrar os resultados entre datas.

por exemplo, todos os registros no banco de dados que foram feitos entre 14/08/2011 ate 21/08/2011.

 

ele criaria links assim:

 

01/08/2011 - 07/08/2011

08/08/2011 - 14/08/2011

15/08/2011 - 21/08/2011

 

o usuario clica em uma dessas datas e ve o resultado da semana.

 

Como farei isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pesquise sobre o BETWEEN do MySQL.

 

passando as 2 datas por GET, você faz esses teus links, e baseia o WHERE no BETWEEN que citei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

André nao sei se me expressei bem.

eu preciso gerar o link de cada semana.

 

vamos por exemplo

 

na pagina links.php que estou criando com a ajuda de voces vou mostrar as datas por semana.

 

01/08/2011 - 07/08/2011. Minha duvida é. Como criar para que o link fique assim, em um prazo de uma semana.

 

nao sei se e possivel tambem, por exemplo, quando a semana ta começando mostra o dia atual.

passou um dia ele mostraria o link.

 

22/08/2011 - 23/08/2011

 

algo assim, ai o usuario passava o link e clicava, indo para pagina onde eu usaria o between.

 

espero ter melhorado minha explicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isso ?

C:\dev\mysql\bin>mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create schema if not exists imasters;
Query OK, 1 row affected (0.00 sec)

mysql> use imasters;
Database changed
mysql> create table exemplo( id integer , data date );
Query OK, 0 rows affected (0.05 sec)

mysql> insert into exemplo values ( 1, '2011-01-08' ), ( 2, '2011-01-09' );
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into exemplo values ( 3, '2011-01-10' ), ( 4, '2011-01-11' );
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into exemplo values ( 5, '2011-01-12' ), ( 6, '2011-01-13' );
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into exemplo values ( 7, '2011-01-14' ), ( 8, '2011-01-15' );
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into exemplo values ( 9, '2011-01-16' ), ( 10, '2011-01-17' );
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from exemplo;
+------+------------+
| id   | data       |
+------+------------+
|    1 | 2011-01-08 |
|    2 | 2011-01-09 |
|    3 | 2011-01-10 |
|    4 | 2011-01-11 |
|    5 | 2011-01-12 |
|    6 | 2011-01-13 |
|    7 | 2011-01-14 |
|    8 | 2011-01-15 |
|    9 | 2011-01-16 |
|   10 | 2011-01-17 |
+------+------------+
10 rows in set (0.00 sec)

mysql> select * from exemplo where data between '2011-01-10' and '2011-01-15';
+------+------------+
| id   | data       |
+------+------------+
|    3 | 2011-01-10 |
|    4 | 2011-01-11 |
|    5 | 2011-01-12 |
|    6 | 2011-01-13 |
|    7 | 2011-01-14 |
|    8 | 2011-01-15 |
+------+------------+
6 rows in set (0.00 sec)

 

<?php
     ini_set( 'date.timezone' , 'America/Sao_Paulo' );
     mysql_select_db( 'imasters' , mysql_connect( 'localhost' , 'root' , '?' ) );
     $inicio = $_GET[ 'inicio' ];
     $termino = $_GET[ 'termino' ];
     if ( !is_null( trim( $inicio ) ) && !is_null( trim( $termino ) ) ) {
            $query = mysql_query( sprintf( "select * from exemplo where data between '%s' and '%s'" , $inicio , $termino ) );
            if( mysql_num_rows( $query ) ){
                   while( list( $id , $data ) = mysql_fetch_array( $query ) ){
                          $DateTime = new DateTime( $data );
                          $DateTime->add( new DateInterval( 'P7D' ) );
                          printf( '%d | <a href="index.php?inicio=%s&termino=%s">( Ínicio %s | Termino %s )</a><br />',
                          $id , $data, $DateTime->format( 'Y-m-d' ) , $data, $DateTime->format( 'Y-m-d' ) );
                   }
            }
     }

 

A Saída aqui:

4 | <a href="index.php?inicio=2011-01-11&termino=2011-01-18">( Ínicio 2011-01-11 | Termino 2011-01-18 )</a><br />
5 | <a href="index.php?inicio=2011-01-12&termino=2011-01-19">( Ínicio 2011-01-12 | Termino 2011-01-19 )</a><br />
6 | <a href="index.php?inicio=2011-01-13&termino=2011-01-20">( Ínicio 2011-01-13 | Termino 2011-01-20 )</a><br />
7 | <a href="index.php?inicio=2011-01-14&termino=2011-01-21">( Ínicio 2011-01-14 | Termino 2011-01-21 )</a><br />
8 | <a href="index.php?inicio=2011-01-15&termino=2011-01-22">( Ínicio 2011-01-15 | Termino 2011-01-22 )</a><br />
9 | <a href="index.php?inicio=2011-01-16&termino=2011-01-23">( Ínicio 2011-01-16 | Termino 2011-01-23 )</a><br />
10 | <a href="index.php?inicio=2011-01-17&termino=2011-01-24">( Ínicio 2011-01-17 | Termino 2011-01-24 )</a><br />

 

URL usada:

http://127.0.0.1/index.php?inicio=2011-01-11&termino=2011-01-18

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao cara, fiz da maneira que tu me exemplificou e o arquivo nao mostrou resultado algum.

 

codigo:

 

<?php
     ini_set( 'date.timezone' , 'America/Sao_Paulo' );
     include"includes/conecta.php";
     $inicio = $_GET[ 'inicio' ];
     $termino = $_GET[ 'termino' ];
     if ( !is_null( trim( $inicio ) ) && !is_null( trim( $termino ) ) ) {
            $query = mysql_query( sprintf( "select * from teste where data between '%s' and '%s'" , $inicio , $termino ) );
            if( mysql_num_rows( $query ) ){
                   while( list( $id , $data ) = mysql_fetch_array( $query ) ){
                          $DateTime = new DateTime( $data );
                          $DateTime->add( new DateInterval( 'P7D' ) );
                          printf( '%d | <a href="index.php?inicio=%s&termino=%s">( Ínicio %s | Termino %s )</a><br />',
                          $id , $data, $DateTime->format( 'Y-m-d' ) , $data, $DateTime->format( 'Y-m-d' ) );
                   }
            }
     }  
?>

 

banco de dados:

 

-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
-- 
-- Servidor: localhost
-- Tempo de Geração: Ago 22, 2011 as 04:48 PM
-- Versão do Servidor: 5.0.18
-- Versão do PHP: 5.1.2
-- 
-- Banco de Dados: `teste`
-- 

-- --------------------------------------------------------

-- 
-- Estrutura da tabela `teste`
-- 

CREATE TABLE `teste` (
 `id` int(11) NOT NULL auto_increment,
 `teste` varchar(255) default NULL,
 `data` date default NULL,
 PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

-- 
-- Extraindo dados da tabela `teste`
-- 

INSERT INTO `teste` VALUES (1, 'ttete', '2011-08-15');
INSERT INTO `teste` VALUES (2, 'dddddd', '2011-08-16');
INSERT INTO `teste` VALUES (3, 'dafadfa', '2011-08-17');
INSERT INTO `teste` VALUES (4, 'dfadfafdafdafdsa', '2011-08-18');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, você passou a data de início e término pela url ?

 

Tenta fazer assim caso não passou, assim ele vai listar todas as datas do banco, gerar os links, só daí entra no if.

<?php
     ini_set( 'date.timezone' , 'America/Sao_Paulo' );
     mysql_select_db( 'imasters' , mysql_connect( 'localhost' , 'root' , '?' ) );
     $inicio = isset( $_GET[ 'inicio' ] ) ? $_GET[ 'inicio' ] : NULL; 
     $termino = isset( $_GET[ 'termino' ] ) ? $_GET[ 'termino' ] : NULL;
     if ( !is_null( trim( $inicio ) ) && !is_null( trim( $termino ) ) ) {
            $query = mysql_query( sprintf( "select * from teste where data between '%s' and '%s'" , $inicio , $termino ) );
            if( mysql_num_rows( $query ) ){
                   while( list( $id , $teste , $data ) = mysql_fetch_array( $query ) ){
                          $DateTime = new DateTime( $data );
                          $DateTime->add( new DateInterval( 'P7D' ) );
                          printf( '%d | <a href="index.php?inicio=%s&termino=%s">( Ínicio %s | Termino %s )</a><br />',
                          $id , $data, $DateTime->format( 'Y-m-d' ) , $data, $DateTime->format( 'Y-m-d' ) );
                   }
            }
     }
     if( !$inicio && !$termino ){
             $query = mysql_query( "select * from teste" ) or die( mysql_error( ) );
             if( mysql_num_rows( $query ) ){
                    while( list( $id , $teste , $data ) = mysql_fetch_array( $query ) ){
                           $DateTime = new DateTime( $data );
                           $DateTime->add( new DateInterval( 'P7D' ) );
                           printf( '%d | <a href="index.php?inicio=%s&termino=%s">( Ínicio %s | Termino %s )</a><br />',
                           $id , $data, $DateTime->format( 'Y-m-d' ) , $data, $DateTime->format( 'Y-m-d' ) );
                    }
             }
     }      

 

A saída aqui:

1 | <a href="index.php?inicio=2011-08-15&termino=2011-08-22">( Ínicio 2011-08-15 | Termino 2011-08-22 )</a><br />
2 | <a href="index.php?inicio=2011-08-16&termino=2011-08-23">( Ínicio 2011-08-16 | Termino 2011-08-23 )</a><br />
3 | <a href="index.php?inicio=2011-08-17&termino=2011-08-24">( Ínicio 2011-08-17 | Termino 2011-08-24 )</a><br />
4 | <a href="index.php?inicio=2011-08-18&termino=2011-08-25">( Ínicio 2011-08-18 | Termino 2011-08-25 )</a><br />

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.