Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Stronicowanie z warunkiem
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Witam. Borykam się z problemem stronicowania. Chcę dodać warunek do zapytania i wciąż mam błąd:
  1. $start = ($s-1)*$na_strone;
  2. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS *
  3. FROM tutoriale
  4. WHERE tut_stan = 1
  5. LEFT JOIN kategorie
  6. ON (kat_id = tut_kat_id)
  7. ORDER BY tut_id DESC
  8. LIMIT $start, $na_strone");
  9. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  10. $stron = ceil($rekordow/$na_strone);

Chciałbym dodać warunek wykluczający wyświetlanie artykułów, gdzie:
  1. WHERE tut_stan = 1

Co nie wymodzę, mam błąd składni zapytania. Chciałbym tez pozbyć się SQL_CALC_FOUND_ROWS * na rzecz COUNT(*)...


--------------------
Go to the top of the page
+Quote Post
kartin
post
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Zobacz w którym miejscu masz WHERE, a w którym powinno być


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Powinno być tak:
  1. $start = ($s-1)*$na_strone;
  2. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS *
  3. FROM tutoriale
  4. LEFT JOIN kategorie
  5. ON (kat_id = tut_kat_id)
  6. WHERE tut_stan=1
  7. ORDER BY tut_id DESC
  8. LIMIT $start, $na_strone");
  9. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  10. $stron = ceil($rekordow/$na_strone);

Ale:
Gdy wpiszę warunek WHERE tut_stan=1, wyświetlają mi się wyniki, gdzie tut_stan=0!
Gdy wpiszę warunek WHERE tut_stan=0, wyświetlają mi się wyniki, gdzie tut_stan=0, lecz nie wszystkie...
Gdy wpiszę warunek WHERE tut_stan<>0, wyświetlają mi się wyniki gdzie tut_stan=1, ale zliczy mi wszystkie wyniki.
Gdy wpiszę warunek WHERE tut_stan<>1, wyświetlają mi się wyniki gdzie tut_stan=1, ale zliczy mi wszystkie wyniki.


--------------------
Go to the top of the page
+Quote Post
kartin
post
Post #4





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Jaką masz strukturę tych tabel?


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. CREATE TABLE `tutoriale` (
  2. `tut_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `tut_nr` smallint(4) UNSIGNED ZEROFILL NOT NULL,
  4. `tut_tytul` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  5. `tut_data` int(10) UNSIGNED DEFAULT NULL,
  6. `tut_autor` text collate utf8_polish_ci,
  7. `tut_zrodlo` text collate utf8_polish_ci,
  8. `tut_tresc` longtext collate utf8_polish_ci,
  9. `tut_kat_id` int(11) DEFAULT NULL,
  10. `tut_stan` enum('0','1') collate utf8_polish_ci NOT NULL DEFAULT '0',
  11. `tut_obraz` varchar(20) character SET latin2 NOT NULL,
  12. `tut_psd` enum('0','1') collate utf8_polish_ci NOT NULL DEFAULT '0',
  13. `tut_notatki` text collate utf8_polish_ci,
  14. `tut_moderator` text collate utf8_polish_ci NOT NULL,
  15. `tut_ktoed` smallint(2) UNSIGNED NOT NULL,
  16. `tut_czased` int(10) UNSIGNED NOT NULL,
  17. `tut_czytano` mediumint(8) UNSIGNED DEFAULT '0',
  18. `tut_zezw_koment` enum('0','1') collate utf8_polish_ci NOT NULL DEFAULT '0',
  19. `tut_zezw_ocenic` enum('0','1') collate utf8_polish_ci NOT NULL DEFAULT '0',
  20. UNIQUE KEY `id` (`tut_id`)
  21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


--------------------
Go to the top of the page
+Quote Post
kartin
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Tylko, że w zapytaniu są używane dwie tabele, a dałeś strukturę jednej.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Druga, to tylko kategorie:
  1. CREATE TABLE `kategorie` (
  2. `kat_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `kat_kategoria` varchar(255) collate utf8_polish_ci DEFAULT NULL,
  4. UNIQUE KEY `id` (`kat_id`)
  5. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Gdy wpiszę warunek WHERE tut_stan=1, wyświetlają mi się wyniki, gdzie tut_stan=0!
Niemożliwe.
Pokaż może przykładowe dane czy coś podobnego.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kartin
post
Post #9





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Jednak możliwe.
  1. `tut_stan` enum('0','1') collate utf8_polish_ci NOT NULL DEFAULT '0',

to nie jest liczba więc, trzeba użyć apostrofów
  1. WHERE tut_stan ='1'


Ten post edytował mariuszli 13.06.2010, 20:34:53


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@mariuszli w tym co piszesz być może i jest racja.

Nie widzę natomiast większego sensu w tym co zrobil Kshyhoo. PO grzyba robić enum z wartości 0 i 1?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(nospor @ 13.06.2010, 21:35:18 ) *
Nie widzę natomiast większego sensu w tym co zrobil Kshyhoo. PO grzyba robić enum z wartości 0 i 1?

To jest tak, jednemu podoba się żona innemu teściowa...
Gdzie nie wejdę na jakieś forum, są zwolennicy jakiegoś rozwiązania, promujący i zachwalający swoje teorie. To rozwiązanie jest właśnie efektem takiej przygody na forum http://www.forumweb.pl. Chodziło mi o najlepsze rozwiązanie dla włączony/wyłączony. Wcześniej używałem innych rozwiązań. To obecne ma być ponoć mniej pamięciożerne.

Podobnie z SQL_CALC_FOUND_ROWS * bo ponoć COUNT(*) jest niby wydajniejsze (http://mariusz.turek.salon404.pl/post/4,my...ws-kontra-count)... Ja jednak nie mogę poradzić sobie z przejściem na COUNT(*).

  1. $start = ($s-1)*$na_strone;
  2. $wynik = mysql_query("SELECT SQL_CALC_FOUND_ROWS *
  3. FROM tutoriale
  4. LEFT JOIN kategorie
  5. ON (kat_id = tut_kat_id)
  6. WHERE tut_stan = '1'
  7. ORDER BY tut_id DESC
  8. LIMIT $start, $na_strone");
  9. $rekordow = mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);
  10. $stron = ceil($rekordow/$na_strone);


@mariuszli, Twoje rozwiązanie okazało się trafne, za co otrzymasz ode mnie wielkiego +


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
To jest tak, jednemu podoba się żona innemu teściowa...
Ale tu nie ma co się podobac lub nie podobać. To co teraz robisz to tak jakbyś używał chlebaka do trzymania w nim chlebaka...

ja rozumiem używać ENUM dla wartości "włączony" i "wyłączony" - po to enum powstało. Ale mi się z celem uzywać enum dla wartości "0" i "1". Rownie dobrze zrób sobie pole TINYINT i trzymaj tam 0 i 1. Będzie to jeszcze mniej pamięciożerne od tego enum co teraz zrobiłes smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #13





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pisząc to porównanie, nie miałem na myśli siebie... Jestem początkujący, gdy nie wygoogluję nic konkretnego, szukam pomocy na forach. To ENUM jest wynikiem wizyty tu - no i poszedłem za radą. Zresztą zobacz sobie 7 post na w/w stronie, jakie mają zdanie o Tobie brzydal.gif Ja się pod tym nie podpisuję, nawet w tym wątku przytaczam jeden Twój artykuł, który był mi pomocny. Reasumując, cały problem polega na tym, że nie ma dobrego źródła, gdzie można by nauczyć się "porządnego" php - sam manual nie wystarcza a kursy traktują raczej lakonicznie niektóre rzeczy.

EDIT. Dodam jeszcze, że żyję w przeświadczeniu, że polscy programiści sporo potrafią ale niechętnie dzielą się swoją wiedzą z innymi a już szczególnie za friko. Rozumiem, że lepiej dać komuś wędkę niż rybę, ale dobrze też pokazać łowisko...

Ten post edytował Kshyhoo 14.06.2010, 15:54:42


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zresztą zobacz sobie 7 post na w/w stronie, jakie mają zdanie o Tobie
Masz na myśli ten tekst:
Cytat
Ten gosc to kafar

? Nom, przejąłem się... winksmiley.jpg

Cytat
że nie ma dobrego źródła, gdzie można by nauczyć się "porządnego" php - sam manual nie wystarcza a kursy traktują raczej lakonicznie niektóre rzeczy.
No i dlatego tłumaczę ci w tym temacie że stosowanie ENUM w tym przypadku jest bez sensu smile.gif

Cytat
Dodam jeszcze, że żyję w przeświadczeniu, że polscy programiści sporo potrafią ale niechętnie dzielą się swoją wiedzą z innymi a już szczególnie za friko.
Wydawało mi się, ze na naszym forum jestes stałym gościem, a tu widzę taką opinię... ludzie to codziennie dzielą się swoją wiedzą za darmo. A to że często dają wędkę zamiast ryby - uwierz, to tylko dla waszego dobra.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #15





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Ja też bym się nie przejmował. Internet to takie medium, że nie sposób natrafić na wszechwiedzących najlepiej zadufanych w sobie dupków. Ten przykład podałem jedynie po to, żeby pokazać, że im więcej znaczysz, więcej możesz oberwać...

Co do ENUM, wcześniej miałem (mam stare zrzuty bazy):
  1. `stan` int(1) NOT NULL DEFAULT '0',

a jeszcze wcześniej:
  1. `stan` char(1) NOT NULL DEFAULT '0',

Człowiek uczy się na błędach - szkoda tylko, że na swoich ;( Największy problem to język - niestety, uczęszczałem do szkoły w czasie, gdy Polska była zapatrzona daleko i ślepo na wschód - a manuale są po angielsku...


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dobra, jutro uporządkuję ci tę tabelę trochę. teraz idę spac.

ps: czyzbyś był starszy ode mnie? eee, nie winksmiley.jpg

edit:
no to jedziem. Na początek drobne uwagi na podstawie kodu co pokazałeś
- jak coś jest liczbą to masz tam wkładać liczbę a nie tekst.
czyli nie '0', '1' ...
a: 0, 1 ...
- jak coś jest datą, to pole ma być typu datowego (DATE,TIME,DATETIME, TIMESTAMP) a nie int
- jak liczba nie jest ZEROFILL to podawanie np. int(11) niczemu nie służy. samo int wystarczy
- jak coś jest auto_increment, i to coś jest też unikalne, to znaczy ze to jest klucz głowny. rób więc z tego klucz główny
- jak coś ma przyjmowac małe liczby, to rób z tego tinyint
- nie rób enum z wartosci liczbowych. to sie mija z celem. Jak chcesz robic to rób z wartości tekstowych, wtedy ma to sens.
- mogłbys się pokusic o typ INNOD_DB zamiast MyIsam - móglbys robić wówczas relacje. No ale to narazie zostawmy
- twórz indexy na polach, które będą brały udział np. w wyszukiwaniach
- jesli pole będzie miało tylko dodatnie liczby, dodawaj UNSIGNED
  1. CREATE TABLE `tutoriale` (
  2. `tut_id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `tut_nr` smallint(4) UNSIGNED ZEROFILL NOT NULL,
  4. `tut_tytul` varchar(255) DEFAULT NULL,
  5. `tut_data` timestamp DEFAULT NULL,
  6. `tut_autor` text , //CZEMU TU MASZ TEXT ?
  7. `tut_zrodlo` text //CZEMU TU MASZ TEXT ?,
  8. `tut_tresc` longtext ,
  9. `tut_kat_id` int UNSIGNED DEFAULT NULL,
  10. `tut_stan` tinyint NOT NULL DEFAULT 0,
  11. `tut_obraz` varchar(20) NOT NULL,
  12. `tut_psd` tinyint NOT NULL DEFAULT 0,
  13. `tut_notatki` text ,
  14. `tut_moderator` text NOT NULL, //CZEMU TU MASZ TEXT ?
  15. `tut_ktoed` smallint UNSIGNED NOT NULL,
  16. `tut_czased` timestamp UNSIGNED NOT NULL,
  17. `tut_czytano` mediumint UNSIGNED DEFAULT 0, //CZEMU TU MASZ mediumint ? Nie powinny byc tinyint? nie wiem co tam bedziesz trzymal.
  18. `tut_zezw_koment` tinyint NOT NULL DEFAULT 0,
  19. `tut_zezw_ocenic` tinyint NOT NULL DEFAULT 0,
  20. PRIMARY KEY (`tut_id`)
  21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #17





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Uuuu, ale konkretów. To może i ja pokomentuję:
  1. CREATE TABLE `tutoriale` (
  2. `tut_id` int UNSIGNED NOT NULL AUTO_INCREMENT, // fakt, jakoś mi się 11 dopisało, sam nie wiem skąd :|
  3. `tut_nr` smallint(4) UNSIGNED ZEROFILL NOT NULL, // chcę mieć liczbę 4-cyfrową
  4. `tut_tytul` varchar(255) DEFAULT NULL,
  5. `tut_data` timestamp DEFAULT NULL, // miałem int(10), bo mam jakieś problemy z przetwarzaniem daty
  6. `tut_autor` text , //CZEMU TU MASZ TEXT ? - tu ma BYć nick, imię autora artykułu
  7. `tut_zrodlo` text //CZEMU TU MASZ TEXT ?, - tu ma BYć adres (www) do źródła
  8. `tut_tresc` longtext ,
  9. `tut_kat_id` int UNSIGNED DEFAULT NULL, // tu takie same jaja, nie wiem skąd TO 11...
  10. `tut_stan` tinyint NOT NULL DEFAULT 0, // poprawię - mam rozumieć, że kod php pozostanie ten sam?
  11. `tut_obraz` varchar(20) NOT NULL, // link do obrazka... (img/00/00/obrazek.jpg)
  12. `tut_psd` tinyint NOT NULL DEFAULT 0,
  13. `tut_notatki` text ,
  14. `tut_moderator` text NOT NULL, //CZEMU TU MASZ TEXT ? - hmmm, TO ma BYć nick dodającego
  15. `tut_ktoed` smallint UNSIGNED NOT NULL, // ID edytującego
  16. `tut_czased` timestamp UNSIGNED NOT NULL, // tu zapisuję czas, w jakim można edytować artykuł (czas z przyszłości)
  17. `tut_czytano` mediumint UNSIGNED DEFAULT 0, //CZEMU TU MASZ mediumint ? Nie powinny byc tinyint? nie wiem co tam bedziesz trzymal. - tu ma BYć licznik, ile razy czytano dany artykuł
  18. `tut_zezw_koment` tinyint NOT NULL DEFAULT 0, // czy zezwolić na komentowanie
  19. `tut_zezw_ocenic` tinyint NOT NULL DEFAULT 0,// czy zezwolić na ocenianie
  20. PRIMARY KEY (`tut_id`)
  21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


- jak coś jest datą, to pole ma być typu datowego (DATE,TIME,DATETIME, TIMESTAMP) a nie int
Jak już pisałem, miałem problemy w przetwarzaniem daty i teraz zapisuję to po prostu tak:
  1. $data = time();

To samo z czasem edycji:
  1. if ($czased == '') {
  2. $czased = time() + 172800;
  3. } else {
  4. $czased = $_POST['czased'];
  5. }

A potem:
  1. '.showdate('Y m.j', $dane['tut_data']).'

Funkcja (szczerze mówiąc, "kwietnia" przekłamuje:
  1. // Format polskiej daty i godziny
  2. function showdate($format,$timestamp=null){
  3. $to_convert = array(
  4. 'l'=>array('dat'=>'N','str'=>array('Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota','Niedziela')),
  5. 'F'=>array('dat'=>'n','str'=>array('styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzień')),
  6. 'f'=>array('dat'=>'n','str'=>array('stycznia','lutego','marca','kwietnia','maja','czerwca','lipca','sierpnia','września','października','listopada','grudnia'))
  7. );
  8. if ($pieces = split('[:/.\ \-]', $format)){
  9. if ($timestamp === null) { $timestamp = time(); }
  10. foreach ($pieces as $datepart){
  11. if (array_key_exists($datepart,$to_convert)){
  12. $replace[] = $to_convert[$datepart]['str'][(date($to_convert[$datepart]['dat'],$timestamp)-1)];
  13. }else{
  14. $replace[] = date($datepart,$timestamp);
  15. }
  16. }
  17. $result = str_replace($pieces,$replace,$format);
  18. return $result;
  19. }
  20. }

- jak liczba nie jest ZEROFILL to podawanie np. int(11) niczemu nie służy. samo int wystarczy
No to łapię...

- jak coś jest auto_increment, i to coś jest też unikalne, to znaczy ze to jest klucz głowny. rób więc z tego klucz główny
Tego nie łapię - myślałem, że właśnie to wykorzystuję...

- jak coś ma przyjmowac małe liczby, to rób z tego tinyint
Czyli na ID kategorii lub ID_kto_edytuje się nada - ja miałem smallint...

- jak coś jest liczbą to masz tam wkładać liczbę a nie tekst.
czyli nie '0', '1' ...
a: 0, 1 ...


- nie rób enum z wartosci liczbowych. to sie mija z celem. Jak chcesz robic to rób z wartości tekstowych, wtedy ma to sens.
W sumie, mógłbym się pokusić o trzymanie w ENUM, wystarczyło by zmienić co nieco w formularzu, bo teraz mam:
  1. <input type="radio" name="stan" value="0" checked="checked" />
  2. <input type="radio" name="stan" value="1" />


- mogłbys się pokusic o typ INNOD_DB zamiast MyIsam - móglbys robić wówczas relacje. No ale to narazie zostawmy
Tak, żart się udał winksmiley.jpg

- twórz indexy na polach, które będą brały udział np. w wyszukiwaniach
Tematu wogóle nie łapię, mam co prawda wyszukiwarkę spłodzoną, ale wzorowałem się na php-fusion...

- jesli pole będzie miało tylko dodatnie liczby, dodawaj UNSIGNED
To już wiedziałem, ale mogłem przeoczyć.
I na koniec:

ps: czyzbyś był starszy ode mnie? eee, nie winksmiley.jpg
Wiek: Kobiet i nospora o wiek się nie pyta winksmiley.jpg Ale swoje lata już mam.
co_jest.gif Serio??


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak już pisałem, miałem problemy w przetwarzaniem daty
To problemy nalezy rozwiązywać a nie omijać. Taką metodą daleko nie zajdziesz. smile.gif
funkcje do daty w mysql
http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html
funkce od daty w php
http://pl.php.net/manual/pl/ref.datetime.php
Jak sobie sam nie bedziesz radził to wal na forum.
Kodu co pokazałeś z datami to nie rozumiem o co w nim biega więc póki co się nad nim nie zastanawiam. Jakiś taki skomplikowany się wydaje winksmiley.jpg Może napisz co chciałeś zrobić.


Cytat
poprawię - mam rozumieć, że kod php pozostanie ten sam?
tak
Cytat
- jak coś jest auto_increment, i to coś jest też unikalne, to znaczy ze to jest klucz głowny. rób więc z tego klucz główny
Tego nie łapię - myślałem, że właśnie to wykorzystuję...
No nie. Ty powiedziales tylko ze pole jest autoincrement i ze jest unikalne. Zas by ogreslic kłócz główny, uzywa sie PRIMARY KEY - zawiera ono między innymi z definicji unikalność

Cytat
- jak coś ma przyjmowac małe liczby, to rób z tego tinyint
Czyli na ID kategorii lub ID_kto_edytuje się nada - ja miałem smallint...
No nie do konca. Jesli kategorii lub osob (kto_edytuje) będzie więcej niż 255 to musisz dac większy typ. Musisz patrzec ile czego może być.

Cytat
- twórz indexy na polach, które będą brały udział np. w wyszukiwaniach
Tematu wogóle nie łapię, mam co prawda wyszukiwarkę spłodzoną, ale wzorowałem się na php-fusion...
Indexy służą do szybszego wyszukiwania informacji w bazie danych. Nigdy nie zaglądałeś do spisu treści w ksiązce? To jest właśnie taki index. Zresztą ksiązki naukowe oprócz spisu tresci mają też normalny index - dzięki temu szybciej znajdujesz informacje na temat tego czego szukasz. W bazie danych jest podobny mechanizm. Jesli więc tworzysz wyszukiwarkę, to dobrze jest załozyc indexy na pola po których wyszukujesz - dzieki temu zapytanie szybciej zwróci wynik

Cytat
ps: czyzbyś był starszy ode mnie? eee, nie
Wiek: Kobiet i nospora o wiek się nie pyta Ale swoje lata już mam.
Serio??
No nie wiem ile ty masz lat, ale ja do szkoły też za komuny chodziłem.

Cytat
`tut_moderator` text NOT NULL, //CZEMU TU MASZ TEXT ? - hmmm, TO ma BYć nick dodającego

Hmmm, to nick moderatora bedzie:
askjdhkajshdjkashkdjhasjkhdjkashdkjhakjssssssssssssssssssssssshdkjashdkjsahdkjha
skjdhkjashdkjashdkjhaskjdhaskjhdkashdjashkdjhsakjdhaskjhdkashdhaskdjhasjkdhjkash
d
kjashdkjsahdjkashdjkahsdjkhaskjdhaskjdhaskjhdjashdkjashdkfkjsdfjksahfjksdahfkjsd
h
fkjshdkfjhsdkjfhskjdhfskjhfskjdfhskjdhfskjdhfksjdhfksjdhfjksdhfsdjkfhskjfhskjhfs
j
kashfkjshfsjdf
?
Naprawdę tam musi być TEXT? Nie może byc varchar(32) ?
A najlepiej żeby był tam ID moderatora. Jego nick wyciągniesz z tabeli ludków.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #19





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Mój wiek, to żadna tajemnica - 43... mam w profilu.

Jak znajdę trochę czasu (po 16 miesiącach znalazłem robotę), pozmieniam kod. Indeksowaniem zajmę się przy wyszukiwarce. Co do nicku moderatora (w zasadzie redaktora) - Administrator zakłada konto a skrypt sprawdza nick, więc nikt mi nie namiesza:
  1. if (!preg_match('/^([A-ZĆÓŁŚŻŹ]{1})([a-zA-ZąśżźćęńłóĄŚŻŹĆŃŁÓ0-9_-]{2,11})$/', $login)) {

Ponadto, nick jest pobrany z bazy przy zapisie artykułu do bazy i służy jedynie dla informacji admina - oczywiście mógłbym zapisywać tylko ID...


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Mój wiek, to żadna tajemnica - 43... mam w profilu.
Dobra, aż tak stary nie jestem winksmiley.jpg

Cytat
Administrator zakłada konto a skrypt sprawdza nick, więc nikt mi nie namiesza:
Tu nie chodzi o namieszanie, ale o ideę


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:07