Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Prosty problem z zapytaniami do bazy
Forum PHP.pl > Forum > Przedszkole
perlik1
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 ?
zbig
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
perlik1
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
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.