Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Newsy z podziałem na dni tygodnia....
Forum PHP.pl > Forum > Gotowe rozwiązania
tomek0077
Mam pewien problem, na innych forach nie dali rady mi pomóc więc zgłaszam się do was. Mam skrypt który wypisuje 15 najnowszych newsów:

[php:1:fea2b57fb0]<?php

if (eregi("block-newsy.php", $_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}

global $prefix, $db;


$content = "<table width="100%" border="0">";

$sql = "SELECT sid, title, comments, counter FROM ".$prefix."_stories $querylang ORDER BY sid DESC LIMIT 0,20";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$sid = $row['sid'];
$title = $row[title];
$comtotal = $row[comments];
$counter = $row[counter];
$content .= "<tr><td align="left"><strong><big>&middot;</big></strong>&nbsp;<a href="modules.php?name=News&amp;file=article&amp;sid=$sid">$title</a></td><td align="right"></td></tr>";
}
$content .= "</table>";

</center>";

?>[/php:1:fea2b57fb0]

Teraz potrzebuje zrobić tak żeby newsy były wyświetlane z podziałem na dni i żeby te dni się zmieniały w zależności od czasu teraźniejszego, coś w tym stylu:

Piątek
-------------
Tytyłu newsa8
Tytyłu newsa7
Tytyłu newsa6
--------------
Czwartek
---------------
Tytyłu newsa5
Tytyłu newsa4
---------------
Środa
---------------
Tytyłu newsa3
Tytyłu newsa2
Tytyłu newsa1


Max ilość newsów wyświetlanych ma być równa 20. Tytuł newsa ma być linkiem do tego newsa. Nie wiem czy ten skrypt co napisałem coś pomoże.....
Aha date w newsach mam w formacie "2003-10-25 20:09:26" - tak dokładnie jest w bazie mysql tylko w tym momencie godzina jest tu nie potrzebna.

Jest kto kto potrafi pomóc mi w zbudowaniu tego skryptu ?
kicaj
Poczytaj o [manual:87a15a460a]mktime()[/manual:87a15a460a]
tomek0077
Przeczytałem, ale zbyt wiele mi to nie pomogło :? bo nie jestem jeszcze aż tak dobry.... proszę o pomoc bo nie mam pojecia jak to zrobić
mhs
sposob jest bardzo prosty - nie trzeba wykorzystywac tutaj mktime()

wykorzystaj tutaj mozliwosci jakie oferuje MySQL (aczkolwiek nie napisales z jakiego systemu zarzadzani baza danych korzystasz); otoz: wykorzystaj tutaj funkcje WEEKDAY()

Twoje zapytanie wiec mniej wiecej wygladac bedzie nastepujaco:
[sql:1:a206f623cd]SELECT jakiesId, WEEKDAY(nazwaPola) AS dzien FROM nazwaTabeli ...[/sql:1:a206f623cd]

wynikiem zapytania bedzie wyswietlenie obok wartosci, ktore potrzebujesz kolumny z numerem dnia w tygodniu (poniedzialek = 0; niedziele = 6)

to jest rozwiazanie Twojego problemu - natomiast jezeli bedziesz mial problem z zastosowaniem tego to pisz - pomoze Ci sie
tomek0077
Używam phpmyadmin.

Hmmm... jednak mam problem z dalszym wykorzystaniem tego, proszę o dalsze wskazówki smile.gif


Ps. Wiedziałem że na tym forum są spece... smile.gif
scanner
To,że korzystasz z phopMyAdmin nie ma znaczenia. Jedynie daje nam informację, że używasz MySQL. Zatem na przyszłość, wyrażaj się precyzyjniej.
Czego nie rozumiesz w tym, co mhs napisał? Próbowałeś to wykorzystać, czy czekasz na gotowca? Jeśli to pierwsze, to pokaż jak.
I poczytaj Regulamin punkt IV.2.d i na przyszłość stosuj się do niego.
tomek0077
To że używam mysql napisałem w 1 poście "...2003-10-25 20:09:26" - tak dokładnie jest w bazie mysql tylko w tym momencie godzina jest tu nie potrzebna..."

Więc myślałem że chodzi tutaj o zarządzanie....

Nie czekam na gotowca ale więcej informacji gdyż nie potrafie stworzyć takiego czegoś:

Piątek
-------------
Tytyłu newsa8
Tytyłu newsa7
Tytyłu newsa6
--------------
Czwartek
---------------
Tytyłu newsa5
Tytyłu newsa4
---------------
Środa
---------------
Tytyłu newsa3
Tytyłu newsa2
Tytyłu newsa1
scanner
Zacnzij od:[php:1:c443befa84]<?php
$sql = "SELECT sid, title, comments, counter, WEEKDAY(pole_daty) AS dzien FROM ".$prefix."_stories $querylang ORDER BY sid DESC LIMIT 0,20";
?>[/php:1:c443befa84]I sprawdz co zobaczysz w [php:1:c443befa84]<?php
$row['dzien'];
?>[/php:1:c443befa84]
tomek0077
Skrypt:

[php:1:0f984756f4]<?php
$sql = "SELECT sid, title, comments, counter, WEEKDAY(time) AS dzien FROM ".$prefix."_stories $querylang ORDER BY sid DESC LIMIT 0,20";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$sid = $row['sid'];
$dzien = $row['dzien'];
$title = $row[title];
$comtotal = $row[comments];
$counter = $row[counter];
$content .= "<tr><td align="left"><strong><big>&middot;</big></strong>&nbsp;<a href="modules.php?name=News&amp;file=article&amp;sid=$sid">$dzien</a></td><td align="right"></td></tr>";
}
?>[/php:1:0f984756f4]

Wyświetlił mi numer dnia w który się ten news ukazał wraz z linkiem do niego:
6
5
5
3
3
3
1
1
1
1
0
0
0
.......
mhs
no widzisz smile.gif

teraz wystarczy miec na uwadze to co napisalem wczesniej:

Cytat
wynikiem zapytania bedzie wyswietlenie obok wartosci, ktore potrzebujesz kolumny z numerem dnia w tygodniu (poniedzialek = 0; niedziele = 6)


teraz w skrypcie napisz obsluge tego aby Ci wyswietlilo zamiast 0 to poniedzialek itd....

ps. chyba wczesniej sam to zrobisz niz ja Ci pomoge smile.gif
tomek0077
Tylko wydaje mi się że to nie tak będzie...

Ja chcę aby wyświetlał on newsy z dzisiejszego dnia, oraz poprzedniego a jeśli wstawię żeby wyświetła on np. z piątku to będzie wyświetlał newsy z wszystkich piątków.... :? dlatego tu potrzebny jest miesiąc oraz rok....

Nie musi się wyświetlać dzien tygodnia może też być tak:

04.01.2004
-------------
Tytyłu newsa8
Tytyłu newsa7
Tytyłu newsa6
--------------
03.01.2004
---------------
Tytyłu newsa5
Tytyłu newsa4
---------------
scanner
Człowieku, to czego ty w końcu chcesz?
To na co próbnujemy Cię z mhs'em naproweadzić da:
04.01.2004 | Tytyłu newsa8
04.01.2004 | Tytyłu newsa7
04.01.2004 | Tytyłu newsa6
03.01.2004 | Tytyłu newsa5
03.01.2004 | Tytyłu newsa4
03.01.2004 | Tytyłu newsa3

Teraz w jednej pętli wystarczy wywalić powtarzającą się datę ponad konkretne newsy

Kod
1. Sprawdz datę.

2. Jesli inna niż ta z poprzedniego przebiegu pętli, pokaż datę

3. Pokaż tytuł

3. Idz do 1 dopóki nie skończy listować newsów
tomek0077
No ale w tym momencie jeśli 1 dnia będzie 20 newsów to 2 dzień się już nie wyświetli....

Ja mam taki pomysł na to:

Kod
Data= dzień dzisiejszy



1. Wyświetl data

2. Pobierz z bazy wszystkie newsy = data

3. Wyświetl te newsy



4. Wyświetla data-1 (dzień poprzedni)

5. Pobierz z bazy wszystkie newsy = data-1

6. Wyświetl te newsy

Tylko gorzej z pomysłem na wykonanie...
tomek0077
Już mam pomysł na wykonanie smile.gif jedank mam problem z pobraniem z bazy daty newsa w formacie "2003-10-25 20:09:26" i porównanie jej z czasem obecnym.

Przeczytałem manual o date() i mktime() ale nie potrafie nadal tego zrobić.
Cudi
Szukałeś nie w tym manualu co trzeba smile.gif
:arrow: http://webdeveloper.pl/manual_mysql/show.p..._and_time_types
tomek0077
Przeczytałem ale dalej jestem w dołku :? Nie wiem jak pobrać z bazy danych date "2003-10-25 20:09:26" tak żeby ją podzieliść na $rok $miesiąc $dzień bo chcę pominąć godzine żeby porównać to potem z date("Ymd")
tomek0077
Napisałem już taki skrypt jednak on nie działa, na 100% jest błąd porównaniu daty news np. 2003-10-25 20:13:31 z obecną, da ktoś rade mi pomóc ?

[php:1:cd652c3387]<?php
$data= mktime (0,0,0,date("Y"),date("m"),date("d"));


$content = "<table width="100%" border="0">";

$sql = "SELECT title FROM ".$prefix."_stories WHERE time ='$data' ORDER BY time DESC";
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result)) {
$title = $row[title];

$content .= "<tr><td align="left"><strong><big>&middot;</big></strong>&nbsp;<a href="modules.php?name=News&amp;file=article&amp;sid=$sid">$title</a></td><td align="right"></td></tr>";
}


$content .= "</table>";

?>[/php:1:cd652c3387]
scanner
Cytat
Napisałem już taki skrypt jednak on nie działa, na 100% jest błąd porównaniu daty news np. 2003-10-25 20:13:31 z obecną, da ktoś rade mi pomóc ?[php:1:bf1c3b6e4c]<?php
$data= mktime (0,0,0,date("Y"),date("m"),date("d"));  
?>[/php:1:bf1c3b6e4c]
http://pl2.php.net/mktime [php:1:bf1c3b6e4c]<?php
$data= mktime (0,0,0,date("Y"),date("d"),date("m"));
?>[/php:1:bf1c3b6e4c]
tomek0077
Napisałem z pomocą mhs nowy skrypt jednak nie wiadomo czemu on nie działa(nie wyswietla żadnych wyników), widzi ktoś tu jakiś błąd ?

[php:1:3df0a4fd65]<?php
$today = date('Y-m-d');


$content = "<table width="100%" border="0">";

$sql = "SELECT title FROM ".$prefix."_stories WHERE LEFT(time, 10)= $today ORDER BY
time DESC LIMIT 0,20";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$title = $row[title];


$content .= $title;
}


$content .= "</table>";
?>[/php:1:3df0a4fd65]
Cudi
1. Zgubiłeś
[php:1:9de80b4f9e]<?php
echo $content;
?>[/php:1:9de80b4f9e]
Drobne uwagi:
2. Wsadź nazwe klucza tablicy $row między apostrofy, żeby php odrazu wiedziało że ma sie z tym obchodzić jak ze stringiem, a nie jak ze stałą
3. Niepotrzebnie towrzysz zmienną tymczasową $title, możesz odrazu przypisać wartość $row['title'] do zmiennej $content
[php:1:9de80b4f9e]<?php
while ($row = $db->sql_fetchrow($result)) {
$content .= $row['title'];
}
?>[/php:1:9de80b4f9e]
tomek0077
Chyba się machnąłeś :? nie zgubiłem bo zamiast echo do wyświetlenia używam [php:1:98b55116a2]<?php
$content .= $title;
?>[/php:1:98b55116a2]

To nie jest tworzenie zmiennej, zmienną stworzyłem wcześniej [php:1:98b55116a2]<?php
$title = $row[title];
?>[/php:1:98b55116a2]

Więc tu jest inny błąd, ktoś wie gdzie ? sad.gif
Cudi
Nie, to Ty sie machnołes smile.gif
operator .= nie służy do wyświetlania, a do dopisywania znaków do zmiennej.
Czyli
[php:1:efc5b00f72]<?php
$tekst .= 'tekst';
?>[/php:1:efc5b00f72]
jest jednoznaczne z:
[php:1:efc5b00f72]<?php
$tekst = $tekst . 'tekst';
?>[/php:1:efc5b00f72]
Co nie zmienia faktu że żeby to potem wyświtlić musisz użyć jednej z funkji wypluwających output, np. echo smile.gif
tomek0077
Na 100% nie przynajmniej w blokach phpnuke. Używam tego i wszystko normaknie wyświetla wieć to nie to. Z echo też próbowałem, nic się nie wyświetla,
Cudi
ehhh.... http://pl2.php.net/manual/en/language.oper....assignment.php

Skoro pomimo echo dalej nic, to albo zapytanie jest źle napisane, albo steronik do mysql'a masz padnięty. Daj przed pętlą:
[php:1:9cd77430be]<?php
echo var_dump( $result );
?>[/php:1:9cd77430be]
lub sporóbuj:
[php:1:9cd77430be]<?php
$result = $db->sql_query($sql) or die( mysql_error() );
?>[/php:1:9cd77430be]
Albo spróbuj użyc normalnych, wbudowanych funkcji mysql'a [manual:9cd77430be]mysql_query()[/manual:9cd77430be] i [manual:9cd77430be]mysql_fetch_row()[/manual:9cd77430be]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.