Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana formatu arraya
Forum PHP.pl > Forum > PHP
kam821
Witam serdecznie.
Zwracam się do was z małym pytankiem.
Potrzebuję zamienić jeden array będący wynikiem zapytania sql, dajmy na przykład taki przypadek:
użyty tak:
Cytat
$row = $db->sql_fetchrow($result);
for($i = 0; $i < count($row); $i++)
{
$user_id = $row['user_id']
$username = $row['username'];
}

Potrzeba mi zamienić taki array, aby można go było użyć tak - cachuje wszystkich userów, a potem gdy chce pobrać username jednego to wpisuje:
Cytat
$user_id = intval($_GET['userid']);
$username = $users[$user_id]['username']; // zmienna array $users to cała zacachowana baza.

Z góry dziękuję
Pozdrawiam.
bim2
Musisz stworzyć tabliće której klucz przyjmie wartość $row['user_id']; Mały przykład:
  1. for()
  2. {
  3. $tablica[$zmienna['id']][] = $row;
  4. }

Chyba sam coś skleisz z tego smile.gif Wyglądasz na mądrą osobę. ;P
kam821
Dziękować ślicznie smile.gif
Mam jeszcze jeden kłopot, nie chcę brudzić świeżej kartki, więc napisze tutaj:
Potrzebuję pobrać z bazy danych 2 rzeczy: Poprzedni temat i Następny temat jednym zapytaniem.
Warunkami byłyby oczywiście taki samo ID forum, oraz ID ostatniego posta większe i mniejsze od, który znajduje się w aktualnie oglądanym temacie, całość zapytania zakończymy limitem 2.
Próbuję coś sam wymyslić, zatrzymałem się na tym, dalej pustka biggrin.gif
  1. SELECT t.topic_title, t.topic_id, t.forum_id
  2. FROM phpbb_topics t
  3. WHERE t.forum_id = $forum_id
  4. AND t.topic_moved_id = 0
  5. AND ( t.topic_last_post_id < $topic_last_post_id OR t.topic_last_post_id > $topic_last_post_id )
  6. ORDER BY t.topic_last_post_id DESC, ORDER BY t.topic_last_post_id ASC // tutaj napewno jest błąd, no ale wpisałem od rzeczy tongue.gif
  7. LIMIT 2
krowal
  1. SELECT * FROM users
  2. WHERE
  3. id = (SELECT id FROM users AS u2 WHERE u2.id > 331 ORDER BY u2.id LIMIT 1) OR
  4. id = (SELECT id FROM users AS u2 WHERE u2.id < 331 ORDER BY u2.id DESC LIMIT 1)

To jest na tabeli userów bo akurat na niej testowałem winksmiley.jpg
Dostosuj to do swojego zapytania, dodaj wymagane warunki do podzapytań i powinno być dobrze.
kam821
  1. $sql = "SELECT t.topic_title, t.topic_id, t.forum_id
  2. FROM " . TOPICS_TABLE . " t
  3. WHERE t.forum_id = $forum_id
  4. AND t.topic_moved_id = 0
  5. AND next_topic = (t.topic_last_post_id < $topic_last_post_id
  6. ORDER BY t.topic_last_post_id DESC
  7. LIMIT 1)
  8. OR t.forum_id = $forum_id
  9. AND t.topic_moved_id = 0
  10. AND next_topic = (t.topic_last_post_id > $topic_last_post_id
  11. ORDER BY t.topic_last_post_id ASC
  12. LIMIT 1)";


Przykładowy błąd:

Cytat
SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY t.topic_last_post_id DESC LIMIT 1) OR t.forum_id = 154 AND t.t' at line 6

SELECT t.topic_title, t.topic_id, t.forum_id FROM phpbb_topics t WHERE t.forum_id = 154 AND t.topic_moved_id = 0 AND next_topic = (t.topic_last_post_id < 13563 ORDER BY t.topic_last_post_id DESC LIMIT 1) OR t.forum_id = 154 AND t.topic_moved_id = 0 AND next_topic = (t.topic_last_post_id > 13563 ORDER BY t.topic_last_post_id ASC LIMIT 1)
krowal
Ech.. wiesz co to są podzapytania ? smile.gif
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.