Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ORDER BY i SELECT w php ale bez łączenia się z bazą danych, da się?
Forum PHP.pl > Forum > PHP
statek
Witam,

potrzebuję posortować i przeszukać kilka krótkich tabelek, ale nie chciałbym w tym celu nawiązywać połączenia z bazą danych. Są jakieś funkcje w php działające jak te dwie z SQLa? Szukałem w manualu ale nic nie znalazłem. Czy pozostaje tylko ręczne napisanie tych funkcji?

Pozdrawiam.
Crozin
Cytat
potrzebuję posortować i przeszukać kilka krótkich tabelek
Masz na myśli tabele w bazie danych? No to bez nawiązania połączenia się nie da.
maly_swd
jesli to ma operowac na danych z tablic to:
http://pl.php.net/manual/en/book.array.php tu masz prawie wszystko:)
statek
Dziękuję za odpowiedzi!
Crozin tabelki nie są w bazie danych. Są odczytane z pliku tekstowego. I potrzebuje je posortować wedle kolejnych kolumn (tak jak ORDER BY z SQL), przydałby się też funkcja na wzór SELECT. I pytanie moje jest czy da się to w samym php, nie pisząc tych funkcji od zera zrobić?
maly_swd znam tą stronę biggrin.gif i przeglądałem poszczególne funkcje w poszukiwaniu czegoś odpowiedniego. Ale nie znalazłem nic co by działało tak jak tego potrzebuję. Ale mogłem przecież coś przeoczyć, dlatego pytam czy są w php takie funkcje?

Pozdrawiam.
dr_bonzo
@statek: masz usort() - dopisujesz swoja funkcje porownujaca i ci posortuje tablice.
Ale .... niedlugo napiszesz swoja baze SQL, nie prosciej sie na istniejaca przerzucic?
maly_swd
Niektore funkcje sortujace, zaleznie co i jak ma byc:

ORDER BY=
arsort — Sort an array in reverse order and maintain index association
asort — Sort an array and maintain index association
key — Fetch a key from an array
krsort — Sort an array by key in reverse order
ksort — Sort an array by key
natcasesort — Sort an array using a case insensitive "natural order" algorithm
natsort — Sort an array using a "natural order" algorithm
reset — Set the internal pointer of an array to its first element
rsort — Sort an array in reverse order
shuffle — Shuffle an array
sort — Sort an array
uasort — Sort an array with a user-defined comparison function and maintain index association
uksort — Sort an array by keys using a user-defined comparison function
usort — Sort an array by values using a user-defined comparison function

SELECT = petla (while, for, foreach...)

WHERE = IF.. SWITCH...
statek
Już sobie poradziłem. Pomysł był banalny, implode kolejnych komórek wiersza w jednowymiarową tablicę. Potem zwykły sort i mam swój order by:)

Mam taką wątpliwość, na każdej stronie, w każdej książce o html/php zawsze się radzi aby nie używać w nazwach katalogów spacji i innych znaków nie będących literkami (bez polskich znaków), cyferkami myślnikiem, podkreśleniem. Powiedzcie dlaczego? Sprawdziłem na iis i apachu (win i lin), i żadnych niepokojących objawów nie zauważyłem. To można czy nie można nazwać katalogi: Żółta ćma; pliki: mój żółwik.php ?

Pozdrawiam.
erix
Przenieś te nazwy na inny serwer/platformę, wtedy zobaczysz. ;]

Albo spróbuj wywołać różnymi przeglądarkami nazwy plików przez URL.
statek
erix no właśnie pisałem, że sprawdziłem na serwerze IIS (WINDOWS) i na serwerze APACHE (WINDOWS i LINUX - UBUNTU). Oglądałem te strony przez: IE, FF, OPERĘ, CHROME. I wszystko działało bez zastrzeżeń. Kiedy mogą pojawić się problemy z takimi stronami?

Przecież wszystko dobywa się po stronie serwera, czyli język systemu użytkownika przeglądarki też nie powinien grać roli?

A dwa co mam zrobić jeśli struktura katalogów i plików jest ważna dla strony, menu i treść jest generowana w oparciu właśnie o te nazwy. Spacje można zastąpić podkreśleniem i przy wyświetlaniu znowu zamienić na spacje. Ale co z polskimi literkami? Mógłbym zrobić słownik, ale to dużo roboty w sensie wpisywania tych tłumaczeń: Zolta_cma - Żółta ćma; moj_zolwik.php - mój żółwik.php
Jak tego uniknąć?


Pozdrawiam i dziękuję za odpowiedź.
PS
Jak definiować wygląd odnośników
erix
Cytat
Kiedy mogą pojawić się problemy z takimi stronami?

Naprawdę z góry ciężko powiedzieć. A najważniejsze - goście z ustawionymi innymi stronami kodowymi niż utf/iso (zdarzają się; choćby z konsolki).

Cytat
A dwa co mam zrobić jeśli struktura katalogów i plików jest ważna dla strony, menu i treść jest generowana w oparciu właśnie o te nazwy. Spacje można zastąpić podkreśleniem i przy wyświetlaniu znowu zamienić na spacje. Ale co z polskimi literkami? Mógłbym zrobić słownik, ale to dużo roboty w sensie wpisywania tych tłumaczeń: Zolta_cma - Żółta ćma; moj_zolwik.php - mój żółwik.php
Jak tego uniknąć?

  1. <?php
  2. iconv('utf-8', 'ASCII//TRANSLIT', 'aąbcćdeęfghijklłmnńoóprsśtuwyzźż');
  3. ?>


Cytat
PS
Jak definiować wygląd odnośników

Przeczytać kurs HTML.
statek
erix nie do końca rozumiem. Funkcja iconv służy do zamiany kodowania stringu. Ale nadal nie widzę jak ma to pomóc w rozwiązaniu problemu. Mam na dysku strukturę plików i katalogów w których nazwach są polskie znaki diakrytyczne. I są one ważne. Np nazwa pliku ze zdjęciem, jest jednocześnie opisem zdjęcia, nazwa katalogu jest jednocześnie elementem menu nawigacyjnego. Czyli na stronie wyświetlam często nazwy owych plików/katalogów właśnie z "niedozwolonymi znakami", kodowanie strony to utf8. Wszystko wyświetla się poprawnie. Ale np w odnośnikach są polskie znaki. Dwa, nazwy tych odnośników, jak i reszta kodu strony są tworzone przy pomocy php - odczyt plików/katalogów i wyprodukowywanie strony html.

Jeśli dobrze rozumiem, to fakt, że serwer/os sobie z tym radzi nie musi być regułą i jak przeniosę stronę na jakiś inny, bardziej egzotyczny,to coś się może rypnąć? Czy to o to chodzi?

Bo jeśli ktoś przegląda stronę www używając kodowania ascii, to trudno, żeby coś ciekawego zobaczył. Tym się nie martwię. Natomiast ważne jest czy jeśli w nazwie odnośnika będzie 'www.strona.com/kolory ęąć/index.php?a=żółta żółć&różowy róż' to czy z tym może być jakiś problem? Czy jeśli ktoś będzie korzystał z kompa gdzie jest tylko os w angielskiej wersji językowej i przeglądarka również i nie obsługuje kodowania utf8 albo iso, to czy będzie mógł otworzyć stronę i zobaczyć na niej niepoprawnie wyświetlane teksty, czy w ogóle jej nie da rady otworzyć?

Jednym zdaniem: Czy polskie znaki w adresie, nazwach odnośników coś mogą popsuć?

Pytając o wygląd odnośników miałem na myśli wygląd odnośnika w pasku adresu a nie na stronie www:
'www.strona.com/kolory ęąć/żółta żółć i różowy róż/' zamiast www.strona.com/kolory ęąć/index.php?a=żółta żółć&różowy róż'
czy przekazując getem wartości zmiennych muszą one tak straszyć a adresie? Może da się je jakoś ukryć/zamaskować?

PS
Czy jeśli odczytuje te nazwy plików/katalogów i umieszczam je na stronie to powinienem zmienić jakoś ich kodowanie?
erix
Cytat
Jeśli dobrze rozumiem, to fakt, że serwer/os sobie z tym radzi nie musi być regułą i jak przeniosę stronę na jakiś inny, bardziej egzotyczny,to coś się może rypnąć? Czy to o to chodzi?

Tak.

Cytat
erix nie do końca rozumiem. Funkcja iconv służy do zamiany kodowania stringu. Ale nadal nie widzę jak ma to pomóc w rozwiązaniu problemu. Mam na dysku strukturę plików i katalogów w których nazwach są polskie znaki diakrytyczne.

Translit zmienia polskie diakrytyki na łacińskie odpowiedniki.

Cytat
Czy jeśli ktoś będzie korzystał z kompa gdzie jest tylko os w angielskiej wersji językowej i przeglądarka również i nie obsługuje kodowania utf8 albo iso, to czy będzie mógł otworzyć stronę i zobaczyć na niej niepoprawnie wyświetlane teksty, czy w ogóle jej nie da rady otworzyć?

Istnieje ryzyko, że może być problem.

Cytat
Czy jeśli odczytuje te nazwy plików/katalogów i umieszczam je na stronie to powinienem zmienić jakoś ich kodowanie?

Zależy od systemu plików serwera.

Cytat
Jednym zdaniem: Czy polskie znaki w adresie, nazwach odnośników coś mogą popsuć?

A czy już na to pytanie nie odpowiedziałem? Zrób kompromisowo: http://example.org/zażółć-gęślą-jaźń-10 i wiążącym składnikiem niech będzie 10, który będzie identyfikatorem rekordu w bazie/tablicy z listą plików.
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.