Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][HTML][PHP]Komentarze do każdego newsa na stronie
Forum PHP.pl > Forum > Przedszkole
analfabeta11
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
tehaha
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ć
analfabeta11
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.
Fifi209
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?
analfabeta11
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!" />
thek
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."
analfabeta11
Bardzo wszystkim dziękuję za podpowiedzi! Wszystkie moje problemy zostały rozwiązane smile.gif
TO FORUM JEST SUPER!
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.