Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Newsy z 2 tabel mysql
Forum PHP.pl > Forum > Przedszkole
Green-sc
Witam. Chce zrobic skrypt newsow. Ma on polegac na tym ze w mysql beda podane 2 tabele. Jedna do newsow a druga do meczy. I jak zrobic zeby byly wyswietlane w tym skrypcie newsy z tych 2 tabel?
PawelW
Rozwiń myśl trochę i może poprzyj to mini przykładem bo nie bardzo rozumiem.

Ale jeżeli masz np tabele newsy[news_id, tresc_newsa] i mecze[mecz_id, tresc_meczu] to nie widze problemu.
Formułujesz dwa zapytania 'SELECT * FROM newsy' i drugie 'SELECT * FROM mecze'
wynik zapytań (przetwarzanie musisz sobie napisać) wrzucasz pod zmienne $newsy i $mecze i możesz dowolnie na nich działać.
W razie czego print_r($newsy) pokaże Ci strukturę teblicy newsy.
Green-sc
rozwijajac chodzi o to ze:
Mam 2 tabele mysql. Jedna mecze a druga news.
Chce zeby te 2 tabele (rekordy z tych dwoch tabel) pojawily sie w jednej na stronie w postaci newsow. Jest skrypt newsow i ma sie skladac z dwoch tabel mysql. Chyba dokladniej nie da sie wytluamczyc.

mysql_query ( A ) ;
mysql_query ( B ) ;

Print"newsy z zapytan A i B sortowane by DATA";

A bardziej przykladowo to mam:
tabele mysql news.
mysql_query(SELECT * From news Order by Data DESC);
Druga tabela mecze
mysql_query(SELECT * From mecze Where stan='rozegrany Order by Data Desc');
No i teraz newsy ktore beda skladaly sie z tych dwoch zapytac.
href
to że masz dwie tabele to już wiemy ale powiedz czy wchodzą ze sobą w jakieś relacje, czy dane z tych dwóch tabel są jakoś ze sobą powiązane? bo jeśli nie, a zależy ci tylko na sklejeniu tych dwóch zapytań w jedno to możesz zrobić to w ten sposób:
Kod
mysql_query(SELECT * From news Order by Data DESC UNION SELECT * From mecze Where stan='rozegrany Order by Data Desc');
Green-sc
Nie poprostu trzeba je ze soboa zespoic. Z dwoch tabel ma powstac jedna tyle ze odpowiednio posortowane no i w meczach odpowiednio wytypowane.
A ten twoj kod nie dziala.
href
a zapytanie dałeś pomiędzy cudzysłowy? ja tam tylko przerabiałem z tego co ty podawałeś, jeśli działają twoje zapytania to i moje powinno.
Green-sc
no moje dzialaja

Kod
$wynik = mysql_query("SELECT * FROM news Order by Data DESC UNION SELECT * FROM mecze Where stan='rozegrany' Order by Data Desc");


A i przeczytalem info na temat operatora UNION:
Cytat
Łączone wyniki muszą składać się z takiej samej liczby kolumn, a poszczególne kolumny muszą być tego samego typu, poza tym konieczne jest, aby występowały one w tej samej kolejności w obu wynikach (listing 4.12).

Jezeli tabele sa rozne to nie bedzie chodzic?

A i jeszcze przeczytalem ze dziala na wersji 5.0 mysql. Moja wersja to : 3.23.58-max-debug. U ciebie dziala?

Zainstalowalem mysql 5 lecz blad nie zniknal.
kod wyglada tak:
  1. <?
  2. $wynik = mysql_query("SELECT * FROM news Order by Data DESC UNION SELECT * FROM mecze Where stan='rozegrany' Order by Data Desc");
  3.  
  4. while ($rekord = mysql_fetch_array ($wynik))
  5. {
  6. ?>

A blad tak:
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\apache\httpd\html\new\news.php on line 7


A i jeszcze jak wszedlem na phpmyadmina to jest cos takiego:
Kod
Błąd
Dodatkowe możliwości pracy z połączonymi tabelami zostały
wyłączone. Aby dowiedzieć się, dlaczego - kliknij tutaj.


Jakies pomysly?
Kicok
Po pierwsze jeśli chcesz mieć bardziej czytelne błędy to stosuj taki zapis:
  1. <?php
  2. $result = mysql_query('SELECT * FROM costam') or die(mysql_error());
  3. ?>


Po drugie nawet jeśli tabela mecze i tabela newsy zawierają różną ilość kolumn, to i tak klauzulę UNION można wykorzystać. Wystarczy pobierać z obu tabel taką samą ilość kolumn takiego samego typu. Jeśli np. interesuje cię tytuł, treść, autor i data, to użyj:
  1. (SELECT tytul, tresc, autor, DATA FROM news) UNION
  2. (SELECT tytul, tresc, autor, DATA FROM mecze WHERE stan='rozegrany')
  3. ORDER BY DATA DESC
Green-sc
Ok dziala. Wystarczylo wskazac kolumny z ktorych ma pobierac dane. Widocznie '*' CHodz dopiero jak tabele maja taki sam uklad.
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.