Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tworzenie forum, Tworzę forum od zera proszę o pomoc...
Prezi2907
post 5.12.2010, 18:26:44
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Proszę o pomoc przy tworzeniu forum...
Jest taka sytuacja...

Posiadam system logowania i rejestracji...

Wiem jak maja wyglądać tabele w bazie i jakie maja mieć relacje:
f_users [id][login][password]
f_topic{idt][topic][id_owner] id_owner=f_users.id
f_post[idp][id_topic][id_owner][post] id_topic=f_topic.idt ; id_owner=users.id;


Teraz tak...
jeżeli ktoś się zaloguje normalna sprawa że tworzy się jego nazwa i hasło... to jest pikuś.
Teraz zakładając temat jego ID z sesji spisuje się do INSERT gdzie ładowane jest temat i owner
Później przy zakładaniu tematu automatycznie wychodzi mu POST (wiadomo pierwszy) z numerem ID tematu oraz właściciela postu.
Teraz najgorsze. Jak zrobić aby menu tematów zwiększało się o nazwę a później w linku przenosił GET ID tematu i ID ownera aby było wiadomo później kto dany temat napisał...
Później z postami już nie ma problemu.
Od razu zaznaczam że to nie musi być w żaden sposób zabezpieczone ponieważ chodzi mi tu w głównej mierze o załapanie całej tej sekwencji ruchu...

Czyli podsumowując:
1. Dodanie do menu z tematami każdego tematu (mysql_fetch_array to załatwi ale nie do końca
2. Przesłanie ID tematu gdzie po załadowaniu pokażą się posty tylko z tego tematu, nazwa tematu i nazwa użytkowników (to trzecie już dam rade sam zrobić ale gdyby dało radę za jednym dmuchnięciem smile.gif )
3. I jeżeli ktoś chce usunąć temat to aby usunęło go i w raz z nim żeby poleciały wszystkie POSTY które były dla niego utworzone w bazie MySQL...

Proszę o szybką pomoc...

Pozdrawiam...

I nie jestem żadnym profesjonalistą w PHP, uczę się dopiero...
Go to the top of the page
+Quote Post
Mephistofeles
post 5.12.2010, 19:27:08
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


1. Menu z tematami? Nie prościej pobierać po prostu tematy z jakiejś kategorii?
2. Zwykły select z joinami, from tematy join uzytkownicy
3. Ustaw cascade przy onDelete, a posty się same skasują.

Poza tym zajrzyj do gotowych skryptów, choćby phpBB, wiem, że to skomplikowane, ale pewne rzeczy można nawet po samej strukturze bazy załapać.
Go to the top of the page
+Quote Post
Prezi2907
post 5.12.2010, 23:48:09
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Cytat(Mephistofeles @ 5.12.2010, 20:27:08 ) *
1. Menu z tematami? Nie prościej pobierać po prostu tematy z jakiejś kategorii?
2. Zwykły select z joinami, from tematy join uzytkownicy
3. Ustaw cascade przy onDelete, a posty się same skasują.

Poza tym zajrzyj do gotowych skryptów, choćby phpBB, wiem, że to skomplikowane, ale pewne rzeczy można nawet po samej strukturze bazy załapać.


1. Wiesz to ma być na zasadzie wyświetlającej się listy tematów... Nie tak jak tu że jakieś podkategorie itd... tylko temat do wątku i nic więcej...
2. Czyli ominąć relacje całkowicie i polecieć w selectach...
3. Dzięki bardzo.

Mam dodatkowe pytanie. Robię skrypt który ma mi z każdym tematem tworzyć tabelę w bazie gdzie będą przechowywane posty...
Na razie bez userów itd...
Tworzenie bazy danych... (zmienna post jest brana z formularza wcześniej w którym piszę tylko nazwę tematu i pierwszy post...)
  1. <?php
  2. mysql_connect("localhost","db_user","db_password") or die ("Nie dla Ciebie te informacje :)");
  3. mysql_select_db("db_name") or die ("Nie można połączyć się z bazą danych");
  4.  
  5. $sql1="create table if not exists t_".$_POST['topic']."(
  6.  
  7. id int(11) NOT NULL auto_increment,
  8.  
  9. post text(3000) NOT NULL,
  10.  
  11. PRIMARY KEY (id))";
  12.  
  13. echo('Temat został poprawnie założony...')
  14. ?>


Teraz tak :
1. Zmienna post po przesłaniu pisze mi tylko pierwszy wyraz... Jak to obskoczyć a jeżeli będzie dodawać mi np "_" to jak odwrócić ten proces gdy będę chciał odczytać nazwę tematu (w tym przypadku nazwę tabeli smile.gif )... - wiecie zapewne że jak będzie topic ="dwa wyrazy" - to będzie się wszystko sypać...
Jak widać wszystkie tabele z tematami do forum zaczynają się z przedrostkiem t_ (nie przeszkadza to w działaniu skryptu).
Proszę o pomoc...

Cytat(Prezi2907 @ 6.12.2010, 00:27:08 ) *
1. Wiesz to ma być na zasadzie wyświetlającej się listy tematów... Nie tak jak tu że jakieś podkategorie itd... tylko temat do wątku i nic więcej...
2. Czyli ominąć relacje całkowicie i polecieć w selectach...
3. Dzięki bardzo.

Mam dodatkowe pytanie. Robię skrypt który ma mi z każdym tematem tworzyć tabelę w bazie gdzie będą przechowywane posty...
Na razie bez userów itd...
Tworzenie bazy danych... (zmienna post jest brana z formularza wcześniej w którym piszę tylko nazwę tematu i pierwszy post...)
  1. <?php
  2. mysql_connect("localhost","db_user","db_password") or die ("Nie dla Ciebie te informacje :)");
  3. mysql_select_db("db_name") or die ("Nie można połączyć się z bazą danych");
  4.  
  5. $sql1="create table if not exists t_".$_POST['topic']."(
  6.  
  7. id int(11) NOT NULL auto_increment,
  8.  
  9. post text(3000) NOT NULL,
  10.  
  11. PRIMARY KEY (id))";
  12.  
  13. echo('Temat został poprawnie założony...')
  14. ?>


Teraz tak :
1. Zmienna post po przesłaniu pisze mi tylko pierwszy wyraz... Jak to obskoczyć a jeżeli będzie dodawać mi np "_" to jak odwrócić ten proces gdy będę chciał odczytać nazwę tematu (w tym przypadku nazwę tabeli smile.gif )... - wiecie zapewne że jak będzie topic ="dwa wyrazy" - to będzie się wszystko sypać...
Jak widać wszystkie tabele z tematami do forum zaczynają się z przedrostkiem t_ (nie przeszkadza to w działaniu skryptu).
Proszę o pomoc...

Problem rozwiązany smile.gif Poszukałem w manualach o trim() i fajne żeczy wyczytałem przy okazji smile.gif

  1. <?php
  2. mysql_connect("localhost","db_user","db_password") or die ("Nie dla Ciebie te informacje :)");
  3. mysql_select_db("db_name") or die ("Nie można połączyć się z bazą danych");
  4.  
  5. $sql1="create table if not exists t_".str_replace(' ','_',$_POST['topic'] "(
  6.  
  7. id int(11) NOT NULL auto_increment,
  8.  
  9. post text(3000) NOT NULL,
  10.  
  11. PRIMARY KEY (id))";
  12.  
  13. echo('Temat został poprawnie założony...')
  14. ?>
Go to the top of the page
+Quote Post
karolrynio
post 6.12.2010, 21:07:18
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 25
Dołączył: 2.02.2009

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


Moja skromna podpowiedź. Nie musisz próbować za każdym razem tworzyć nowej tabeli. to bez sensu. Tabelę tworzysz 1 raz i nie musisz tego robić z poziomu php, możesz to zrobić za pomocą phpMyAdmina.


---
edit

Pzepraszam, że nie doczytałem do końca i nie zwróciłem uwagi na ważną rzecz:
Masz źle zaprojektowaną strukturę tabeli.

Dlaczego tworzysz dla każdego tematu nową tabelę?

Wystarczy, że zrobisz sobie jedną tabelę topics i w niej kolumny:
id, nazwa, id pierwszego posta, i id autora

I drugą tabelę posts:
id, autor, treść, data dodania

Wtedy dodając temat nie tworzysz nowy rekord w tabeli topics - wiersz z nazwą i autorem + drugi rekord w tabeli posts.

Jak masz tak zbudowane tabele, to nie ma problemu, żeby wyciągnąć posty z danego tematu, możesz również przeszukać bazę czy istnieje dany temat ze słowem kluczowym itp.

Przy Twojej propozycji budowy bazy danych nie masz takiej możliwości.

Proponuję żebyś zobaczył jak to jest robione np. w phpBB lub innym gotowym skrypcie forum. Można się z nich dużo nauczyć jeśli zaczniesz analizować kod.

Ten post edytował karolrynio 6.12.2010, 21:19:48
Go to the top of the page
+Quote Post
Prezi2907
post 20.12.2010, 14:47:50
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


Co do problemu @UP wszystko mam już załatwione, kolega doradził mi podobnie jak wyżej user ale z drobną modyfikacją.

Wszystko gra i śmiga właśnie ładowane są wszelkie niezbędniki do forum.

Mam natomiast inny sposób.

Chciałbym uzyskać pewną sprawę:
Mam sobie jakiś link
  1. <a href="jakastamstrona.php">Link </a>

Powiedzmy jak przesłać informacje w linku (jakieś id lub inną wartość) aby później w skrypcie do którego prowadzi link można było operować daną zmienną...
Wiem że można zrobić to metodą GET ale ja chce całkowicie pominąć pokazywanie jakichkolwiek linków więc GET odpada... Chodzi mi tu bardziej o metodę POST lub alternatywną jakąś... NIE PISAĆ PROSZĘ NIC Z AJAXA, JAVASCRIPT itd... SAM PHP. Uczę się tego języka i chce jak najwięcej z takich myków poznać smile.gif
A może można to jakoś w sesjach porobić? powiem szczerze że sesje już mam oblatane więc prosty przykład lub nakierowanie mnie w jakąś stronę zupełnie wystarcza...


Aha linki generowane będą z bazy formatowane i dopiero wyświetlane także nazwa danej pozycji w bazie i id można spokojnie pobrać... tylko jak to przypisać aby z linkiem się wysłało ? jak zrobię <form ... > <a href=""><input type="hidden" value="$zmienna" />LINK </a></form> to prześle mi info w POST ?

Ok temat już ogarnięty. Można zamknąć wątek.
Co do mojego problemy. Zamiast robić linki zrobiłem przyciski submit w transparent bez bordera i wyglądały jak linki do tego z zmiennej przypisywałem nazwe (była to wartość z bazy danych) i value (tu również dawałem zmienną z bazy danych po odpowiedniej modyfikacji i formatowaniu całego zapytania tak by zamiast różnych znaków z bazy zastępował je białymi znakami itd...)

Nom to by było na tyle. Dziękuje wszystkim z góry za pomoc i życzę spokojnych i wesołych świąt.


DO ZAMKNIĘCIA

Ten post edytował Prezi2907 10.12.2010, 20:28:35
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.05.2024 - 05:23