Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] nie działa "order by"
Fantazyn
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Dobry wieczór.
Mam problem, mam prostą tabelkę NEWS
  1. 'CREATE TABLE news
  2. (id INT not null AUTO_INCREMENT key,
  3. tytul VARCHAR(30),
  4. tresc text,
  5. autor VARCHAR(30),
  6. data CHAR(14),
  7. ip CHAR(15))';

w której znajduje się już kilka przykładowych wartości zapisywanych przez php w taki sposób:
  1. <?php
  2. $pytanie = "INSERT INTO news VALUES (null,'".$tytul."','".$tresc."','".$autor."','".date("y.m.d-H:i")."','".$ip."')";
  3. $odp = $baza->query($pytanie);
  4. ?>

Jak w mysql dam polecenie
  1. SELECT * FROM news ORDER BY DATA DESC

to ładnie wyświetla wszystkie wartości uporządkowane przez date (malejąco). Niestety, gdy próbuje osiągnąć podobny wynik w php:
  1. <?php
  2. $pytanie = 'select data,autor,tytul,tresc from news order by data desc';
  3. $odp = $baza->query($pytanie);
  4. $wyniki = $odp->num_rows;
  5. for ($i=0;$i<$wyniki;$i++)
  6. {
  7. $wiersz = $odp->fetch_assoc();
  8. echo stripslashes($wiersz['tresc']);
  9. }
  10. ?>

to niestety zawsze segreguje mi względem kolumny "id" rosnąco (która jest kluczem).
Pytanie: czy robię coś nie tak? Można w jakiś inny - bardziej niezawodny - sposób wyświetlać treść rekordów uporzdkowanych względem daty?


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





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


To bardzo dziwne - zwracany przez mysql będzie miał sortowanie takie jak w klauzuli ORDER BY. Możliwe więc, że
obiekt którym pobierasz dane z bazy modyfikuje Twoje zapytanie (i zmienia sortowanie)
Spróbuj połączyć się bezpośrednio :
  1. <?php
  2. $pytanie = 'select data,autor,tytul,tresc from news order by data desc';
  3. $odp = mysql_query($pytanie);
  4.  
  5. while($wiersz=mysql_fetch_assoc($odp)){
  6. echo stripslashes($wiersz['tresc']);
  7. }
  8.  
  9. ?>


--------------------
Go to the top of the page
+Quote Post
nevt
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


tu jest błąd:
  1. <?php
  2. // jest
  3. $pytanie = 'select data,autor,tytul,tresc from news order by data desc';
  4.  
  5. // powinno być
  6. $pytanie = 'select `data`, autor, tytul, tresc from news order by `data` desc';
  7. ?>


DATA jest słowem zastrzeżonym w MySQL, jest elementem niektórych poleceń i opcji, np. LOAD DATA INFILE, DATA DIRECTORY, LOAD MASTER DATA, LOAD DATA FROM MASTER...

powodzenia.


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Fantazyn
post
Post #4





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Dziękuję bardzo za odpowiedzi. Wszystko działa : ).
Ps. Nie jest wymagane dodawanie apostrofów dla data w tym przykładzie (sprawdzone).
Jeszcze raz dziękuję.


--------------------
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: 21.08.2025 - 09:38