tomek0077
6.01.2004, 23:22:11
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>·</big></strong> <a href="modules.php?name=News&file=article&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
6.01.2004, 23:23:33
Poczytaj o [manual:87a15a460a]mktime()[/manual:87a15a460a]
tomek0077
6.01.2004, 23:29:10
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ć
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
7.01.2004, 01:17:34
Używam phpmyadmin.
Hmmm... jednak mam problem z dalszym wykorzystaniem tego, proszę o dalsze wskazówki
Ps. Wiedziałem że na tym forum są spece...
scanner
7.01.2004, 07:37:04
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
7.01.2004, 13:32:04
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
7.01.2004, 13:37:37
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
7.01.2004, 14:05:24
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>·</big></strong> <a href="modules.php?name=News&file=article&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
.......
no widzisz
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
tomek0077
7.01.2004, 14:38:11
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
7.01.2004, 14:43:33
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
7.01.2004, 15:24:11
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
7.01.2004, 17:30:39
Już mam pomysł na wykonanie
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ć.
tomek0077
7.01.2004, 22:02:16
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
8.01.2004, 00:15:09
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>·</big></strong> <a href="modules.php?name=News&file=article&sid=$sid">$title</a></td><td align="right"></td></tr>";
}
$content .= "</table>";
?>[/php:1:cd652c3387]
scanner
8.01.2004, 11:18:02
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
8.01.2004, 14:18:41
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]
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
8.01.2004, 19:16:11
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 ?
Nie, to Ty sie machnołes
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
tomek0077
8.01.2004, 21:10:19
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,
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.