jak wyciągnąć temat z bazy

Tutaj udzielane jest wsparcie przy problemach związanych z instalacją, konwersją, aktualizacją oraz użytkowaniem phpBB 2.0.x.
slew
Posty: 9
Rejestracja: 14 września 2007, 13:02

jak wyciągnąć temat z bazy

Post autor: slew » 16 września 2007, 19:47

chciałbym wyciągnąć temat z bazy i przenieść do innej (inne forum). jak to zrobić? jakie zapytanie do bazy żeby wybrał odpowiedni temat wraz z postami?

Awatar użytkownika
mateusz
Zasłużony
Posty: 2174
Rejestracja: 14 maja 2005, 17:43
Lokalizacja: JAWORZNO
Kontakt:

Post autor: mateusz » 16 września 2007, 21:15

Ponieważ w takim zapytaniu musi być podane polecenie WHERE podaj co wiesz o tym temacie. jego id czy może jakiś czas. daj jakiś punkt zaczepienia :D
No i oczywiście w tej bazie docelowej nie może być już tematów i postów o tym samym id które będziesz kopiował bo wyjdą problemy :D
Zapraszam również na moje forum: www.indianie.info
www.sklepbezglutek.pl - zapraszam do sklepu z żywnością bezglutenową i niskobiałkową. Makarony, chleby, zdrowa żywność. Wysyłane od ręki bez ryzyka utraty świeżości w trakcie dostarczania.

slew
Posty: 9
Rejestracja: 14 września 2007, 13:02

Post autor: slew » 17 września 2007, 14:15

więc jest tak:
z tabeli phpbb2_topics wyciągam nazwe tematu (jego topic_id) - prosta sprawa
ale co dalej
z tabeli phpbb2_posts wyciągnąć muszę topic_id a z tabeli phpbb2_posts_text muszę wyciągnąć post_id ale tylko te ktore są w tabeli phpbb2_posts przypisane do konkretnego tematu.
Więc jakie zadać zapytanie aby z tabeli phpbb2_posts_text wyciągnąć tylko posty tematu x?

Awatar użytkownika
mateusz
Zasłużony
Posty: 2174
Rejestracja: 14 maja 2005, 17:43
Lokalizacja: JAWORZNO
Kontakt:

Post autor: mateusz » 17 września 2007, 18:35

zakładam w przykładach że id tematu to 10

najpierw jak masz już konkretne id z phpbb2_topics
z tabeli phpbb2_posts sprawdzasz wpisy gdzie topic_id jest takie samo jak znalezione z 1 zapytania
mając id_post z tabeli phpbb2_posts_text wyciągasz zapytania gdzie id_post jest takie samo jak to z 2 zapytania

chyba to zagmatwane :D to powinno ci wyjaśnić:

Kod: Zaznacz cały

SELECT *  FROM `phpbb_topics`  WHERE `topic_id` = 10 

Kod: Zaznacz cały

SELECT *  FROM `phpbb_posts`  WHERE `post_id` = 10 

Kod: Zaznacz cały

SELECT *  FROM `phpbb_posts_text`  WHERE `post_id` = 10
Zapraszam również na moje forum: www.indianie.info
www.sklepbezglutek.pl - zapraszam do sklepu z żywnością bezglutenową i niskobiałkową. Makarony, chleby, zdrowa żywność. Wysyłane od ręki bez ryzyka utraty świeżości w trakcie dostarczania.

slew
Posty: 9
Rejestracja: 14 września 2007, 13:02

Post autor: slew » 17 września 2007, 22:22

troche musiałem pomyśleć ale wszystko się zgadza tylko czy z tego mam rozumieć że jeżeli temat ma 100 postów to muszę zadać 100 zapytaź czyli np:
SELECT * FROM `phpbb_posts_text` WHERE `post_id` = 13
SELECT * FROM `phpbb_posts_text` WHERE `post_id` = 16
SELECT * FROM `phpbb_posts_text` WHERE `post_id` = 44
itd aż do 100.
Dobrze zrozumiałem? Jeżeli tak to jest to oczywiście rozwiązanie ale trochę czasochłonne.

W związku z tym czy jest jakieś zapytanie do bazy które pozwoli jednym zapytaniem wydobyć z tabeli phpbb_posts_text wszystkie posty należące do tematu x ?

Awatar użytkownika
mateusz
Zasłużony
Posty: 2174
Rejestracja: 14 maja 2005, 17:43
Lokalizacja: JAWORZNO
Kontakt:

Post autor: mateusz » 18 września 2007, 16:38

zrób sobie plik posty.php i w jego zawartość wpisz:
[php]<?php
$sql_conn = mysql_connect('localhost', 'login', 'haslo') or die('Brak połączenia');
$wybr = mysql_select_db('nazwa_bazy') or die('Błąd podczas wybierania bazy sql');

$id = 1167; //id tematu z którego szukamy postów

$sql = "SELECT * FROM `phpbb_topics` WHERE `topic_id` = $id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

$sql2 = "SELECT * FROM `phpbb_posts` WHERE `topic_id` = $id";
$result2 = mysql_query($sql2);
while($row2 = mysql_fetch_array($result2))
{
$sql3 = "SELECT * FROM `phpbb_posts_text` WHERE `post_id` = ".$row2['post_id'];
$result3 = mysql_query($sql3);
$row3 = mysql_fetch_array($result3);
echo $row3['post_text']."<br><br><br>";

}
?>[/php]

uzupełnij swoimi danych (host, dane dostępowe i nazwę bazy) potem wpisz id tematu z którego chcesz posty i uruchom to w przeglądarce dostaniesz piękny spis postów.

oczywiście co i jak ma się wyświetlać możesz sobie zmieniać. ja wybrałem najprościejsze rozwiązanie :D

ewentualnie można dodawać do polecenia echo taki tekst aby wyświetlał juz gotowe zapytania sql. które tylko sobie skopiujesz i uruchomisz w nowym phpmyadminie

Rozwiązanie nie jest najlepsze bo polecenie sql wsadziłem w pętlę ale tak najszybciej mi się pisało.

EDIT
przykład: http://www.indianie.info/posty.php
Zapraszam również na moje forum: www.indianie.info
www.sklepbezglutek.pl - zapraszam do sklepu z żywnością bezglutenową i niskobiałkową. Makarony, chleby, zdrowa żywność. Wysyłane od ręki bez ryzyka utraty świeżości w trakcie dostarczania.

slew
Posty: 9
Rejestracja: 14 września 2007, 13:02

Post autor: slew » 19 września 2007, 13:54

oo, dzieki, juz ma rece i nogi. dzięki :)

a co dodać w echo żeby wyswitlał nad postem jego autora?

Awatar użytkownika
mateusz
Zasłużony
Posty: 2174
Rejestracja: 14 maja 2005, 17:43
Lokalizacja: JAWORZNO
Kontakt:

Post autor: mateusz » 19 września 2007, 13:58

w tabeli phpbb_post masz tylko id autora: poster_id musisz dodać sobie jeszcze aby po tym id wybierał z tabeli users login. chyba że starcza ci samo id. próbuj sam ewentualnie daj znać to coś skrobnę.

EDIT
mój 2000 post. okrągłą liczba :D
Zapraszam również na moje forum: www.indianie.info
www.sklepbezglutek.pl - zapraszam do sklepu z żywnością bezglutenową i niskobiałkową. Makarony, chleby, zdrowa żywność. Wysyłane od ręki bez ryzyka utraty świeżości w trakcie dostarczania.

slew
Posty: 9
Rejestracja: 14 września 2007, 13:02

Post autor: slew » 19 września 2007, 14:10

sam nie dam rady :(
jak znajdziesz chwilkę zeby cos skrobnac jak dodac autora postu (id nie starczy) bedzie fajnie ;) i moze date postu.

Awatar użytkownika
mateusz
Zasłużony
Posty: 2174
Rejestracja: 14 maja 2005, 17:43
Lokalizacja: JAWORZNO
Kontakt:

Post autor: mateusz » 23 września 2007, 20:41

sorki zapomniałem sobie o tobie :D
plik przygotowałem ale wyszło mi z głowy go podać:
[php]<?php
$sql_conn = mysql_connect('localhost', 'login', 'haslo') or die('Brak połączenia');
$wybr = mysql_select_db('nazwa_bazy') or die('Błąd podczas wybierania bazy sql');

$id = 1167; //id tematu z którego szukamy postów

$sql = "SELECT * FROM `phpbb_topics` WHERE `topic_id` = $id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);

$sql2 = "SELECT * FROM `phpbb_posts` WHERE `topic_id` = $id";
$result2 = mysql_query($sql2);
while($row2 = mysql_fetch_array($result2))
{


$sql3 = "SELECT * FROM `phpbb_posts_text` WHERE `post_id` = ".$row2['post_id'];
$result3 = mysql_query($sql3);
$row3 = mysql_fetch_array($result3);

$sql4 = "SELECT username FROM `phpbb_users` WHERE `user_id` = ".$row2['poster_id'];
$result4 = mysql_query($sql4);
$row4 = mysql_fetch_array($result4);

echo "<b>User:</b> ".$row4['username']." <b>czas</b> ".date('d-m-Y', $row2['post_time'])."<br /><b>Treść:</b> ".$row3['post_text']."<br><br><br>";

}
?>[/php]

format daty zmieniasz w funkcji data obecnie to: 'd-m-Y' wpisuje z przyzwyczajenia. możesz wybrać dowolne zgodnie z zasadami funkcji php 'date'.
przykład stary: http://www.indianie.info/posty.php
Zapraszam również na moje forum: www.indianie.info
www.sklepbezglutek.pl - zapraszam do sklepu z żywnością bezglutenową i niskobiałkową. Makarony, chleby, zdrowa żywność. Wysyłane od ręki bez ryzyka utraty świeżości w trakcie dostarczania.

Zablokowany

Wróć do „Pomoc”