Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Newsy z 2 tabel mysql
Green-sc
post 30.04.2007, 20:04:13
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 7.09.2006

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


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?
Go to the top of the page
+Quote Post
PawelW
post 30.04.2007, 20:14:21
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 27.02.2007
Skąd: Kraków

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


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.

Ten post edytował PawelW 30.04.2007, 20:14:44
Go to the top of the page
+Quote Post
Green-sc
post 30.04.2007, 21:12:11
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 7.09.2006

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


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.

Ten post edytował Green-sc 30.04.2007, 20:58:59
Go to the top of the page
+Quote Post
href
post 30.04.2007, 21:44:17
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 29.04.2007

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


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');
Go to the top of the page
+Quote Post
Green-sc
post 30.04.2007, 22:03:50
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 7.09.2006

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


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.
Go to the top of the page
+Quote Post
href
post 30.04.2007, 22:08:29
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 29.04.2007

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


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.
Go to the top of the page
+Quote Post
Green-sc
post 1.05.2007, 07:33:19
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 7.09.2006

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


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?

Ten post edytował Green-sc 30.04.2007, 22:11:51
Go to the top of the page
+Quote Post
Kicok
post 1.05.2007, 09:39:42
Post #8





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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


Ten post edytował Kicok 1.05.2007, 09:40:08


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
Green-sc
post 1.05.2007, 11:01:52
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 7.09.2006

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


Ok dziala. Wystarczylo wskazac kolumny z ktorych ma pobierac dane. Widocznie '*' CHodz dopiero jak tabele maja taki sam uklad.
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: 16.06.2025 - 23:08