Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] nie działa "order by"
Forum PHP.pl > Forum > Przedszkole
Fantazyn
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?
Indeo
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. ?>
nevt
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.
Fantazyn
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ę.
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-2025 Invision Power Services, Inc.