Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Sortowanie tablicy, problem rozwiązany
Swi7ch
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 9.04.2005

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


Otóż mam taki kod:
  1. <?php
  2.  
  3.  
  4. foreach (array_merge(glob("upload/*.txt"),glob("upload/*.TXT")) as $filename) {
  5.    $path = $filename;
  6. $file = basename ($path);
  7. include('connect.php');
  8. $query="SELECT opis FROM wyniki WHERE plik='$file' ORDER BY data";
  9. $result=mysql_query($query);
  10. $row = mysql_fetch_assoc($result);
  11. foreach($row as $wartosc) {
  12.    echo "<a href=\"$filename\">$wartosc</a>";
  13.    echo "<br /><br />";
  14.    
  15.    }
  16.  
  17. }
  18. ?>


Pobieram wszystkie nazwy plików z folderu i przyporządkowuje je do opisów które każdy plik ma w bazie danych. Mam problem z posortowaniem tego. W kodzie znajduje się ORDER BY jednak nie jest to żadne rozwiązanie, gdyż skrypt wyświetla chyba wg kolejności w jakiej zczyta pliki z folderów. Chciałbym posortować to wg. kolumny data która znajduje się w bazie.

pozdrawiam

Ten post edytował Swi7ch 20.04.2009, 12:32:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PawelC
post
Post #2





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


To może tak masz takie zapytanie:
  1. <?php
  2. $query="SELECT opis FROM wyniki WHERE plik='$file' ORDER BY data";
  3. ?>

Czyli pobierasz jeden konkretny rekord, a dokładnie wartość kolumny opis, where plik=cos tam

dalej jest wykonanie zapytania:
  1. <?php
  2. $result=mysql_query($query);
  3. $row = mysql_fetch_assoc($result);
  4. ?>

I tutaj po co jest ta pętla skoro pobierasz jeden rekord?? Nie rozumiem tego skoro, możesz to zrobić tak:
  1. <?php
  2. $result=mysql_query($query);
  3. $row = mysql_fetch_array($result);
  4. echo '<a href="'.$filename.'">'.$row['opis'].'</a>';
  5.   echo '<br /><br />';
  6.   ?>

I bez użycia pętli która jest tu Ci nie potrzebna. Bo po co robić pętle w pętli?

Zobacz tak:
  1. <?php
  2. foreach (array_merge(glob("upload/*.txt"),glob("upload/*.TXT")) as $filename) {
  3.   $path = $filename;
  4. $file = basename ($path);
  5. include('connect.php');
  6. $query="SELECT opis FROM wyniki WHERE plik='$file'";
  7. $result=mysql_query($query);
  8. $row = mysql_fetch_array($result);
  9. echo '<a href="'.$filename.'">'.$row['opis'].'</a>';
  10.   echo '<br /><br />';
  11.  
  12. }
  13. ?>

Posortować to mógłbyś rekordy pobrane z bazy gdybyś pobierał wszystkie na raz, bez klauzuli where np:
  1. <?php
  2. select * from wyniki
  3. ?>

I z takim zapytaniem mógłbyś sobie sortować np po dacie, a z takim zapytaniem jak ty masz, i przy użyciu where nie posortujesz.

Ten post edytował ExPlOiT 20.04.2009, 00:51:25
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 15:14