Markplay 0 Denunciar post Postado Novembro 5, 2014 Olá. Estou tento alguns problemas, creio eu que seja na parte teórica, de fato, é isso, acontece que quero que o sistema siga a seguinte função: Existe vários registros no banco com varias datas inclusive datas iguais. quero pega cada uma das datas transforma as repetidas em uma só na hora de imprimi-la e da o titulo do registro "que está no banco" decorrente da sua data. EX Posteres da data 05/11/2014 Postes 1 Postes 2 Postes 3 Postes 4 Postes 5 Posteres da data 04/11/2014 Postes 1 Postes 2 Postes 3 Postes 4 Postes 5 Posteres da data 03/11/2014 Postes 1 Postes 2 Postes 3 Postes 4 Postes 5 _______________________________________________________________ e assim sucessivamente, tentei usando o while mais não deu em nada vejam: "Dependendo da quantidade de postes decorrente de cada data não imposta" <?php $dia = date("d", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); $mes = date("m", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); $ano = date("Y", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); switch($mes){ case "01": $numMes = "01"; break; case "02": $numMes = "02"; break; case "03": $numMes = "03"; break; case "04": $numMes = "04"; break; case "05": $numMes = "05"; break; case "06": $numMes = "06"; break; case "07": $numMes = "07"; break; case "08": $numMes = "08"; break; case "09": $numMes = "09"; break; case "10": $numMes = "10"; break; case "11": $numMes = "11"; break; case "12": $numMes = "12"; break; } date_default_timezone_set('America/Sao_Paulo'); $date = $dia."/".$numMes."/".$ano; $UD_DATA = substr($date,3,7); $q = open::executar("SELECT * FROM postagens"); $i = 0; while($s = $q->fetch_object()){ $UD_D = substr($s->data,3,7); $OUT = $i+1; $i++; /* if($UD_D == '11/2014'){ echo $DATE = substr($s->data,3,7)."<br>"; break; }*/ } ?> OBRIGADO! Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 qual o formato da data que está no banco de dados? Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Novembro 5, 2014 e como esta sua tabela? talvez um select com algum tipo de join resolva Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Novembro 5, 2014 1 - Selecione todos os registros do banco de dados ordenados por data. 2 - Na hora de exibir, faça um looping para mostrar cada registro e em cada mudança de dia você exibe a data antes. Para isso, basta armazenar a data anterior em uma variável e compará-la com a do registro atual. Dica: use a classe DateTime. Edit: e por favor... tire esse switch daí. Se você quer exibir o 0 antes do dia, use printf ou str_pad. Exemplo: printf( '%02d', $mes ); []'s! Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 5, 2014 E se não puder vir ordenado pela data, agrupe os posts pela data no php e depois exiba eles Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 6, 2014 Olá. Muito Obrigado pela colaboração.... Assim. nos registro a o titulo e a data no qual eles foram postados.... o que acontece, a postagens que posto no mesmo dia e tal... queria ordenar pela data no qual postei.. mais sempre repete, nunca da certo. Nessa imagem tem um bom exemplo: https://drive.google.com/file/d/0B58nmNIlzAg-YXZGVkpwdzNQZEU/view?usp=sharing Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 6, 2014 Vejam eu consegui fazer uma coisa aqui, sendo que ainda continua repetindo postagens de datas iguais.. <?php $dia = date("d", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); $mes = date("m", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); $ano = date("Y", mktime(gmdate("H")-3, gmdate("i"), gmdate("s"), gmdate("m"), gmdate("d"), gmdate("Y"))); switch($mes){ case "01": $numMes = "01"; break; case "02": $numMes = "02"; break; case "03": $numMes = "03"; break; case "04": $numMes = "04"; break; case "05": $numMes = "05"; break; case "06": $numMes = "06"; break; case "07": $numMes = "07"; break; case "08": $numMes = "08"; break; case "09": $numMes = "09"; break; case "10": $numMes = "10"; break; case "11": $numMes = "11"; break; case "12": $numMes = "12"; break; } date_default_timezone_set('America/Sao_Paulo'); $DAY = cal_days_in_month(CAL_GREGORIAN,$numMes,$ano); $date = $dia."/".$numMes."/".$ano; $UD_DATA = substr($date,3,7); $i = 01; while($i <= $DAY){ echo $i++." . "; } echo '<br>'; $q = open::executar("SELECT * FROM postagens"); $i = 10; while($s = $q->fetch_object()){ $U = $i+1; $data_wi = $s->data; if($i++."/".$numMes."/".$ano >= $data_wi){ echo $DAT = $s->data."<br>"; echo $s->titulo."<br>"; continue; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Senni 1 Denunciar post Postado Novembro 6, 2014 Como assim repete, estão duplicadas no banco de dados? Ou alguma JOIN que causa essa duplicação? Qualquer coisa usa "SELECT DISTINCT". Para não ficar assim 06/11/2014 Poster 1 06/11/2014 Poster 2 pode fazer algo assim $data = false; while($s = $q->fetch_object()){ if ($data != $s->data) { $data = $s->data; echo $data . "<br>"; } echo $s->titulo."<br>"; } Não testei, mas isso ajudaria, se a data retornar com hora, faz uma transformação no SQL, ".., DATE_FORMAT(data, '%d/%m/%Y')...." Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 6, 2014 Assim: <?php $query = open::executar("SELECT * FROM postagens"); // Agrupa os posts $posts_grupo = array(); while($row = $q->fetch_object()){ if (!isset($posts[$row['data']])) $posts[$row['data']] = array(); $posts[$row['data']][] = $row; } foreach($posts_grupo as $data => $posts) { echo "<h2>{$data}</h2>"; foreach($posts as $post) { echo "<p>{$post['titulo']}</p>"; } } Ou como o posts acima Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 6, 2014 Olá Mais uma vez agradeço, vejo que estou condenado a esse script "RSRS"... e Leandro SenniSim as datas também existem repetidas no banco, o negócio é unifica-las, e dá a data só imprimindo uma, e cada um de seus posteres, ExtremsXObrigado por tentar ajudar! Não funciona, não imprime nada, pensei que foce só por te trocado os ligamentos do fetch_object() que seria ligado pela seta "->" pelo array no qual seria mas plausível já que o ligamento está com [] colchete..... tentei ajeitar ficando assim, mais não funciona novamente :'( <?php $query = open::executar("SELECT * FROM postagens"); // Agrupa os posts $posts_grupo = array(); while($row = $query->fetch_array()){ if (!isset($posts[$row['data']])) $posts[$row['data']] = array(); $posts[$row['data']][] = $row; } foreach($posts_grupo as $data => $posts) { echo "<h2>{$data}</h2>"; foreach($posts as $post) { echo "<p>{$post['titulo']}</p>"; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 6, 2014 Infelizmente eu mudei o nome de uma variável e esqueci de mudar no resto do código, aqui vai o corrigido: <?php $query = open::executar("SELECT * FROM postagens"); // Agrupa os posts $posts_grupo = array(); while($row = $query->fetch_array()){ if (!isset($posts_grupo[$row['data']])) $posts_grupo[$row['data']] = array(); $posts_grupo[$row['data']][] = $row; } foreach($posts_grupo as $data => $posts) { echo "<h2>{$data}</h2>"; foreach($posts as $post) { echo "<p>{$post['titulo']}</p>"; } } Resultado: http://prntscr.com/53mpe3 Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 6, 2014 Caraca... Muito Obrigado funcionou direitinho... Muito obrigado, e eu achando que não ia funcionar ou não tinha jeito "que dizer, que tinha jeito, mas uma forma muito complexa" mais vc mostrou a possibilidade mais simples. obrigado... Vlw... E Obrigado também a os que enviaram suas sugestões... Desculpa volto a abusar vocês de novo. Código feito pelo ExtremsXestá perfeito mais não deixa a data atual como a primeira... Tipo... Hoje é dia 06/11/2014 ele coloca no final do de seu mês.. deixando na frente a data mais perto do 01 dia do determinado mês. vejam a imagem, acho que ela já responde o que eu quero dizer "assim espero." Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 6, 2014 Use http://php.net/manual/pt_BR/function.ksort.php ksort($posts_grupo); Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 7, 2014 Olá ExtremsXSinceramente não tenho como agradecer sua ajuda. mais a extensão Ksort. resolveu em parte já que não preciso mais colocar a sentença WHERE na chamada do registro... mais a parte mais preocupante vc resolveu e agradeço muito por isso, mais ainda continua com o mesmo "probleminha" as datas estão em desordem... deixa me ver se dá pra explicar; é como se quando começasse um novo mês esse mês não vinhe-se em ordem decrescente "DESC" e sim em ordem crescente, já começando pelo maior numero assim como os meses anteriores. Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 7, 2014 Se entendi bem, você quer ordenar as datas de ordem de decrescente, então use: http://php.net/manual/pt_BR/function.krsort.php Mas antes, na hora de criar o índice, em vez de salvar o indice como data, converta para timestamp, depois use o krsort, e na hora de exibir a data, converta para data novamente usando date Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 7, 2014 olá.. tentei resolver de todas as formas, todos os jeitos, mais estou condenado a isso agora...o sistema está perfeito, mais persiste em deixa o dia maior decorrente de sua data em baixo... fiz uma imagem simulando o jeito que era pra ficar, mais sinceramente dentre tanto tempo usando códigos me deparo com um desafio e tanto e tenho que recorre a pessoas com mais experiencia do que eu... só tenho a agradecer. segue a imagem demostrativa. o lado vermelho mostra como era pra o código imprimir. e o lado preto é como realmente está. Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 7, 2014 Da sim homem, desista não, Tente assim com as devidas adptações: <?php $query = open::executar("SELECT * FROM postagens"); // Agrupa os posts $posts_grupo = array(); while($row = $query->fetch_array()){ // Altere o formato aqui par ao que está vindo do banco de dados $data = DateTime::createFromFormat('d-m-Y', $row['data'])->getTimestamp(); if (!isset($posts_grupo[$data])) $posts_grupo[$data] = array(); $posts_grupo[$data][] = $row; } krsort($posts_grupo); foreach($posts_grupo as $data => $posts) { $data = date('d/m/Y', $data); echo "<h2>{$data}</h2>"; foreach($posts as $post) { echo "<p>{$post['titulo']}</p>"; } } Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 7, 2014 Continua não funcionando... acho que vou desistir, não da mais... Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 7, 2014 Homem, aqui funcionou olha: http://prntscr.com/53tkcm Compartilhar este post Link para o post Compartilhar em outros sites
Markplay 0 Denunciar post Postado Novembro 7, 2014 Aqui da o seguinte erro: Fatal error: Call to a member function getTimestamp() on a non-object in /home/u238514979/public_html/ps-center/pgs/feedback.php on line 67 vc alterou alguma coisa no banco de dados. ou a sua versão do php é outra Consegui. obrigado, agora finalizou, muito obrigado, quase pulei aqui kkkk. "desespero " vc conseguiu. obrigado, o erro estava dando por que a DateTime::createFromFormat('d/m/Y', $row['data'])... estava com traço ao em vês de barras, ai ocasionalmente eu mudei pra tentar só e consegui. obrigado. agora finalmente terminou. obrigado... Compartilhar este post Link para o post Compartilhar em outros sites