Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Prosty problem z zapytaniami do bazy
perlik1
post 26.05.2009, 14:26:28
Post #1





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

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


Siemacie

Mam taki oto kod:

  1. <?php
  2. $sort = $_GET['sort'];
  3. $q = mysql_query(&#092;"SELECT `nazwapliku`,`opispliku`,`kategoria`,`data_dodania`,`wyswietlony`,`user`,`size` FROM `pliki_video`  ORDER BY `$sort` DESC LIMIT $poczatek, $ile_na_stronie\");
  4. $iloscwierszy= mysql_num_rows($q);
  5. for ($i=0; $i<$iloscwierszy; $i++){
  6. $row = mysql_fetch_assoc($q);
  7. ?>


Jak widać większej filozofii w nim niema. $_GET otrzymuje wartość data_dodania, podstawiona do bazy wykonuje sortowanie "ostatnio dodanych" plików, wiersze zapisywane są do mysql_fetch_assoc a następnie odwołuje sie do nich w tabeli. Problem w tym, że w skład "ostatnio dodanych" mają wchodzić również pliki z tabeli "pliki_audio". Trzeba zmodyfikować to zapytanie aby pobierało dane z obu tabel tj. "pliki_video" i "pliki_audio". Próbowałem to zrobić w takie oto sposoby:
FROM `pliki_video`, `pliki_audio` albo FROM `pliki_video` AND `pliki_audio` za każdym razem wywalało błąd. Co robie źle questionmark.gif

Następnie w tym samym skrypcie mam zapytanie zliczające rekordy w tabeli na potrzeby stronnicowania. Wygląda następująco:
  1. <?php
  2. $all = mysql_query(&#092;"SELECT COUNT(*) FROM `pliki_video` ORDER BY `$sort` DESC\");
  3. $ile = mysql_result($all, 0);
  4. ?>

I tu znowu potrzebuje policzyć rekordy w obu tabelach tj. "pliki_video" i pliki_audio"
Po wcześniejszych nie powodzeniach z pobieraniem rekordów z obu tabel sprobowałem zrobić następujący myk:
  1. <?php
  2. $all_1 = mysql_query(&#092;"SELECT COUNT(*) FROM `pliki_video` ORDER BY `$sort` DESC\");
  3. $all_2 = mysql_query(&#092;"SELECT COUNT(*) FROM `pliki_audio` ORDER BY `$sort` DESC\");
  4. $all = $all_1 + $all_2
  5. $ile = mysql_result($all, 0)
  6. ?>


też nie dało rady i wywalało błąd.
How to fix it ?

Ten post edytował perlik1 26.05.2009, 14:49:30


--------------------
Trzymaj się ciepło to Ci nie będzie zimno.
Go to the top of the page
+Quote Post
zbig
post 26.05.2009, 15:34:59
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 30
Dołączył: 5.05.2007
Skąd: Mannheim

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


Witam !

Po pierwsze zupelnie niepotrzebnie w zapytaniach o counter uzywasz "ORDER BY" .
Nie ma to zupelnie znaczenia dla uzyskanego wyniku a meczysz tylko mysql-a.

A twoj problem smile.gif

  1. <?php
  2. $ile = (mysql_result($all1, 0) + mysql_result($all2, 0));
  3. ?>


Ale tak na prawde nic to ci nie daje bo couner w tym przypadku pokaze ci dane niezwiazane z pierwszym pytaniem

pytanie zliczajace ilosc wszystkich rekordow
  1. <?php
  2. SELECT sum(m1) FROM (SELECT count(*) as m1 FROM pliki_video UNION SELECT count(*) as m1 FROM pliki_audio) m3
  3. ?>


a samo zapytanie do dwoch tabel

  1. <?php
  2. SELECT m1.* FROM
  3. ( SELECT `nazwapliku`,`opispliku`,`kategoria`,`data_dodania`,`wyswietlony`,`user`,`size` FROM `pliki_video`
  4.   UNION
  5.  SELECT `nazwapliku`,`opispliku`,`kategoria`,`data_dodania`,`wyswietlony`,`user`,`size` FROM `pliki_audio`
  6. )m1  ORDER BY `$sort` DESC LIMIT $poczatek, $ile_na_stronie
  7. ?>


Chociaz nie powiem zebym uwazal to za najszczesliwsze rozwiazanie

Pozdrawiam


--------------------
Flash Flex PHP JAVA RED5 http://www.easyweb24.net
Go to the top of the page
+Quote Post
perlik1
post 26.05.2009, 16:04:13
Post #3





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

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


Dzięki Ci wielkie dobry człowieku. Przetestuje to za parę godzin i dam znać. Że ORDER BY niepotrzebne to wiem... tak jakoś się zaplątało ;/ Zapytanie szczęśliwe czy nie na razie mi zależy żeby działało.
Pozdro

Ten post edytował perlik1 26.05.2009, 16:06:09


--------------------
Trzymaj się ciepło to Ci nie będzie zimno.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 25.06.2025 - 13:47