Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Wyświetlanie danych z jednej tabeli
zwieracz
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.10.2008

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


Witam
Mam tabelę w bazie mysql w której są następujące kolumny: id, cytat, autor, zrodlo, tag;
dane w kolumnach: autor, zrodlo, tag; mogą się powtarzać.
Chciałbym pokazać listę autorów na daną literę wraz ze źródłami mniej więcej w ten sposób:

autor1
- zrodlo1, zrodlo2, zrodlo3
autor2
- zrodlo, zrodlo4
autor3
- zr........

na razie zrobiłem coś takiego:

  1. <?php
  2. $q = mysql_query("SELECT DISTINCT autor, FROM xxx
  3. WHERE autor LIKE '".mysql_real_escape_string($_GET['letter'])."%' ORDER BY autor ASC");
  4. while ($x = mysql_fetch_assoc($q))
  5. {
  6. extract($x);
  7. echo $autor;
  8. }
  9. ?>


Co pokazuje mi listę autorów na daną literę przekazywaną przez GET i jest ok. Ale jak dołączyć do każdego autora jego źródła?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Proszę o wskazówki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zwieracz
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.10.2008

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


dzięki wielkie

webasek:
W sumie zdaję sobie z tego sprawę że powinienem mieć wszystko w innych tabelach i kiedyś tak będę musiał zrobić. Na razie jednak tabela o której mowa używana jest (i stworzona też) przez plugin wp-quotescollection w wordpressie - ja po prostu chciałem się podłączyć innym skryptem do tej tabeli. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Niestety nie przychodzi mi do głowy jak użyć UNION w takiej sytuacji choć już trochę poczytałem o tym złączeniu.

HellRider:
Twoje rozwiązanie zadziałało - nie użyłem co prawda:
  1. <?php
  2. mysql_fetch_row($res, MYSQL_ASSOC)
  3. ?>

bo nie wiedzieć czemu nie działało to u mnie, a zadziałało:
  1. <?php
  2. ?>

w manualu bowiem przeczytałem o powyższych funkcjach:
Cytat
Godne uwagi jest to, że użycie mysql_fetch_assoc() nie jest znacząco wolniejsze od użycia mysql_fetch_row(), a jest bardziej funkcjonalne.
cokolwiek to znaczy??

W sumie wyszło mi coś takiego:
  1. <?php
  2. $res = mysql_query("SELECT DISTINCT autor FROM tabela WHERE autor LIKE '".mysql_real_escape_string($_GET['letter'])."%' ORDER BY autor ASC");
  3. while ($row = mysql_fetch_assoc($res)){
  4. echo "<div>".$row['autor']; //formatuj dowolnie
  5.  
  6. $res2 = mysql_query("SELECT DISTINCT zrodlo FROM tabela WHERE autor='".$row['autor']."' ORDER BY zrodlo ASC");
  7. while ($row2 = mysql_fetch_assoc($res2)){
  8.   echo "<div>".$row2['zrodlo']."</div> "; //formatuj dowolnie
  9. }
  10. echo "</div>";
  11. }
  12. ?>


Mam jeszcze pytanie o szybkość i obciążenie serwera dotyczące tych zapytań do bazy (jak już webasek wspomniał jedna tabela nie jest najszczęśliwszym rozwiązaniem) i czy rzeczywiście użycie mysql_fetch_assoc($res) zamiast mysql_fetch_row($res, MYSQL_ASSOC) (to nie działa) nie spowolni takiego zapytania?
Dodam że na razie w tablicy jest ok 4k rekordów a będzie 2x tyle.

jeszcze raz dzięki
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 08:34