Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][HTML][PHP]Komentarze do każdego newsa na stronie
analfabeta11
post 25.05.2010, 19:22:38
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.05.2010
Skąd: Polska

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


Witam serdecznie!
Na początku chciałbym zaznaczyć, że używałem opcji szukaj, lecz nie za bardzo mi się to udało. Pewnie ktoś inny to znajdzie i mi się oberwie, że niepotrzebnie temat zakładam, ale cóż... tak bywa smile.gif

Mój problem wygląda następująco:
Robię sobie taki mały serwis. Dodawanie newsów i inne takie niby bajery w nim są. Cudem udało mi się zrobić odnośniki do poszczególnych tematów na inną podstronę serwisu np. www.serwis.pl/news.php?id=2 i chcę, aly na każdej takiej stronie były komentarze do danego tematu, lecz nie wiem jak to zrobić. I tutaj jest moja prośba do Was. Czy mógłby mi ktoś powiedzieć co mam zrobić? Wiem, że trzeba będzie zrobić formularz i tabelę w bazie danych. To jest chwilowo cała moja wiedza.
Nie chcę takiego "gotowca", lecz odrobina kodu nie zaszkodzi smile.gif

Z góry dziękuję smile.gif
Go to the top of the page
+Quote Post
tehaha
post 25.05.2010, 19:36:27
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


jak już system newsów sam napisałeś to z tym też dasz radę, co potrzebujesz:
1. tabelka komentarze
comment_id | news_id | user_id | comment_text | date

// jeżeli nie masz rejestracji to kolumnę user_id pomiń i dan np. comment_user gdzie będziesz trzymał nick osoby dodającej komentarz

2. na stronie newsa robisz formularz na dodanie komentarza a w nim w pole:
  1. <input type="hidded" name="news_id" value="<?php echo $_GET['id']";?>" />


3. wysyłasz formularz do skryptu dodania formularza i zapisujesz do bazy

4. na stronie serwisu pobierasz komentarze gdzie news_id = $_GET['id']

to chyba powinno Ci wystarczyć
Go to the top of the page
+Quote Post
analfabeta11
post 26.05.2010, 21:12:52
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.05.2010
Skąd: Polska

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


tytul
tresc
autor
data
tresc_dluga

To jest zawartość mojej tabeli news. data robi mi też za id newsa, gdyż jest w niej miesiąc, dzień, rok, godzina, minuta i sekunda co daje wręcz niepowtarzalny numer. Rejestracji nie mam.
Nie rozumiem za bardzo co napisałeś smile.gif Znaczy niby rozumiem o co chodzi, ale z wykonaniem jakoś tak kiepsko mi idzie.
  1. <?php echo $_GET['id']";?>" />

Jak mam to zmienić, żeby pasowało do moich newsów?
Cytat
3. wysyłasz formularz do skryptu dodania formularza i zapisujesz do bazy

To znaczy, że jak daję wyślij, to się do bazy zapisuje, tak?

Ja bardzo przepraszam, że takie problemy stwarzam, ale nic na to nie poradzę. Nie "ogarniam" tego jeszcze smile.gif

PS: To już spoza tematu. Jak zrobić, żeby na stronie głównej wyświetlały się np 4 newsy, a potem inne na kolejnych stronach? Chodzi mi o coś takiego jak jest np na www.demotywatory.pl , że jest 10 newsów i następna strona.
Go to the top of the page
+Quote Post
Fifi209
post 26.05.2010, 21:15:08
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(analfabeta11 @ 26.05.2010, 22:12:52 ) *
tytul
tresc
autor
data
tresc_dluga

To jest zawartość mojej tabeli news. data robi mi też za id newsa, gdyż jest w niej miesiąc, dzień, rok, godzina, minuta i sekunda co daje wręcz niepowtarzalny numer. Rejestracji nie mam.
Nie rozumiem za bardzo co napisałeś smile.gif Znaczy niby rozumiem o co chodzi, ale z wykonaniem jakoś tak kiepsko mi idzie.
  1. <?php echo $_GET['id']";?>" />

Jak mam to zmienić, żeby pasowało do moich newsów?

To musisz przerobić bazę. ;]

Cytat(analfabeta11 @ 26.05.2010, 22:12:52 ) *
PS: To już spoza tematu. Jak zrobić, żeby na stronie głównej wyświetlały się np 4 newsy, a potem inne na kolejnych stronach? Chodzi mi o coś takiego jak jest np na www.demotywatory.pl , że jest 10 newsów i następna strona.

Google -> stronicowanie?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
analfabeta11
post 27.05.2010, 19:58:47
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.05.2010
Skąd: Polska

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


Jakimś cudem, choć nie wiem jak, ale udało mi się zrobić te komentarze, ale mam kolejny problem ;/
Zrobiłem taki prosty system usuwania tych komentarzy. Oto on:
  1. <?php
  2.  
  3. $dousuniecia = $_POST['dousuniecia'];
  4. if ($dousuniecia)
  5. {
  6. $connection = mysql_connect ("localhost", "root", "pass")
  7. or die ("Nie można połączyć z MySQL!");
  8. $db = mysql_select_db ("herosi")
  9. or die ("Nie można połączyć z odpowiednią bazą!");
  10.  
  11. $usun = "DELETE * FROM komentarze WHERE `comment_id` = $dousuniecia";
  12. mysql_query ($usun);
  13.  
  14. mysql_close ($connection);
  15.  
  16. print ("Komentarz został usunięty!");
  17. }
  18. else echo "Nie podałeś ID komentarza do usunięcia!";
  19. ?>

System zrobiłem wcześniej do usuwania newsów i działał świetnie. Przerobiłem go odrobinę, żeby usuwał komentarze i przestał działać. Niby jak klikam wyślij, to skrypt dochodzi do wyświetlenia wiadomości o usunięciu komentarza, ale komentarz zostaje w bazie ;/ Co mam w nim zmienić, żeby znowu działał?

Nie wiem,c czy to się do czegoś przyda, ale tak wygląda formularz usunięcia:
  1. <form action="komentarz_usuniety.php" method="post">
  2. ID komentarza do usunięcia: <input type="text" name="dousuniecia" /><br />
  3. <input type="submit" value="Usuń komentarz z bazy danych!" />


Ten post edytował analfabeta11 27.05.2010, 20:17:19
Go to the top of the page
+Quote Post
thek
post 27.05.2010, 21:35:42
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tak jest jeśli się wali komunikat bez sprawdzenia czy faktycznie się coś powiodło winksmiley.jpg Zamiast
  1. $usun = "DELETE * FROM komentarze WHERE `comment_id` = $dousuniecia";
  2. mysql_query ($usun);
  3. mysql_close ($connection);
  4. print ("Komentarz został usunięty!");
zrób
  1. $usun = 'DELETE FROM komentarze WHERE `comment_id` = '.$dousuniecia.' LIMIT 1';
  2. if( mysql_query ($usun) )
  3. if( mysql_affected_rows( $connection ) > 0 )
  4. echo 'Komentarz został usunięty!';
  5. else
  6. echo 'Nie zabanglało usunięcie.';
  7. else
  8. echo 'Coś nie bangla w bazie: '.mysql_error( $connection );
  9. mysql_close ( $connection );
Dlaczego tak?
Po pierwsze: byk w zapytaniu! Nie ma DELETE * FROM. Zobacz na składnię DELETE. Poza tym optymalizacja. Zawsze tylko jeden komentarz usuwasz, więc daj LIMIT 1 by nie łaziło po całej bazie winksmiley.jpg
Po drugie: Nie sprawdzasz czy zapytanie było prawidłowe testując zwrotkę z mysql_query.
Po trzecie: Prawidłowe zapytanie może nic nie zrobić! Przy UPDATE, DELETE i INSERT musisz więc ilość wierszy sprawdzić jakie były przy okazji modyfikowane/dodawane/usuwane. To może mylić, przykładowo UPDATE rekordu tymi samymi danymi pokaże, że UPDATE był wykonany, ale ani jeden wiersz nie został tak naprawdę zmieniony. Mysql_query zwróci true, ale mysql_affected_rows zwróci 0. Dzieki temu możesz walnąć komunikat w stylu: "W rekordzie nic nie zmieniono."


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
analfabeta11
post 28.05.2010, 14:29:26
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.05.2010
Skąd: Polska

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


Bardzo wszystkim dziękuję za podpowiedzi! Wszystkie moje problemy zostały rozwiązane smile.gif
TO FORUM JEST SUPER!
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: 14.08.2025 - 11:34