Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Niedziałający system newsów
Forum PHP.pl > Forum > Gotowe rozwiązania
Fipaj
Cóż...

Zrobiłem system newsów. Dodawanie i pokazywanie newsów oparte na bazie danych. Działa

Kiedy jednak spróbowałem dodać obsługę komentarzy skrypt się rozwalił...

Mogę prosić szanowną publikę o poprawienie błędów?? Będę dozgonnie wdzięczny...

Błędy te siedzą zapewne w plikach index/komentuj. Index nie potrafi dobrze przekazać do zmiennej w URLu wartości, natomiast w pliku komentuj nie działa nic... Wsyzstkie pliki można oglądać tu: http://www.members.lycos.co.uk/fipaj/news/

Oto pliki:

index.php
  1. <?php
  2. $bd = @mysql_connect ('localhost', 'fipaj', '');
  3. @mysql_select_db ('fipaj_uk_db');
  4. $zapytanie = @mysql_query ('SELECT * FROM nowosci ORDER BY identyfikator DESC LIMIT 6');
  5. while ($wiersz = @mysql_fetch_array ($zapytanie)) {
  6.     print ('<p>');
  7.     print ('<h3>');
  8.     print $wiersz['tytul'];
  9.     print ('</h3>');
  10.     print ('<small>');
  11.     print ('Data:');
  12.     print $wiersz['data'];
  13.     print ('; Autor:');
  14.     print $wiersz['autor'];
  15.     print (';</small><br>');
  16.     print $wiersz['tresc'];
  17.     $wiersz['identyfikator'] = $id;
  18.     print ('<br><a href=\"komentuj.php?k=' . $id . '\">Komentuj!</a></p>');
  19. }
  20. @mysql_close ($bd);
  21. ?>


panel.php
  1. <html>
  2. <head>
  3. <title>Panel administracyjny</title>
  4. </head>
  5. <body>
  6. <?php
  7. if (isset ($_POST['wyslij'])) {
  8.     if ($_POST['haslo'] == &#092;"TeSt\") {
  9.         $bd = @mysql_connect ('localhost', 'fipaj', '');
  10.         @mysql_select_db ('fipaj_uk_db');
  11.         $_POST['tytul'] = $tytul;
  12.         $_POST['tresc'] = $tresc;
  13.         $_POST['autor'] = $autor;
  14. $zapytanie = @mysql_query (&#092;"INSERT INTO nowosci VALUES ('$tytul', '$tresc', '$autor', NOW(), '')\");
  15.         @mysql_close ($bd);
  16.         print ('News został dodany...');
  17.     }
  18.     else {
  19.         print ('Niepoprawne hasło...');
  20.     }
  21. }
  22. else {
  23.     print ('<form action=\"panel.php\" method=\"post\">');
  24.     print ('Hasło: <input type=\"password\" name=\"haslo\">');
  25.     print ('Treść: <input type=\"text\" name=\"tresc\">');
  26.     print ('Tytuł: <input type=\"text\" name=\"tytul\">');
  27.     print ('Autor: <input type=\"text\" name=\"autor\">');
  28.     print ('<input type=\"submit\" name=\"wyslij\" value=\"wyslij\">');
  29.     print ('</form>');
  30. }
  31. @mysql_close ($bd);
  32. ?>
  33. </body>
  34. </html>


komentuj.php
  1. <html>
  2. <head>
  3. <title>Komentuj newsa</title>
  4. </head>
  5. <body>
  6. <?php
  7. $bd = @mysql_connect ('localhost', 'fipaj', '');
  8. @mysql_select_db ('fipaj_uk_db');
  9. $zapytanie = @mysql_query ('SELECT * FROM nowosci WHERE identyfikator = '$k' LIMIT 1');
  10. while ($wiersz = @mysql_fetch_array ($zapytanie)) {
  11.     print ('<p>');
  12.     print ('<h3>');
  13.     print $wiersz['tytul'];
  14.     print ('</h3>');
  15.     print ('<small>');
  16.     print ('Data:');
  17.     print $wiersz['data'];
  18.     print ('; Autor:');
  19.     print $wiersz['autor'];
  20.     print (';</small><br>');
  21.     print $wiersz['tresc'];
  22. }
  23. print ('Komentarze:');
  24. $zapytanie = @mysql_query ('SELECT * FROM komentarze WHERE post_identyfikator = $k');
  25. while ($wiersz = @mysql_fetch_array ($zapytanie)) {
  26.     print ('<p>');
  27.     print $wiersz['autor'];
  28.     print ('<br>');
  29.     print $wiersz['tresc'];
  30.     print ('</p>');
  31. }
  32. print ('Dodaj komentarz:');
  33. print ('<form method=\"post\" action=\"komentuj.php\">');
  34. print ('Autor: <input type=\"text\" name=\"autor\">');
  35. print ('Treść: <input type=\"text\" name=\"tresc\">');
  36. print ('<input type=\"submit\" name=\"wyslij\" value=\"wyślij\"></form>');
  37. if (isset ($_POST['wyslij'])) {
  38.     $_POST['autor'] = $autor;
  39.     $_POST['tresc'] = $tresc;
  40.     $zapytanie = @mysql_query ('INSERT INTO komentarze VALUES ($autor, $tresc, $k)');
  41.     print ('Komentarz został dodany');
  42. }
  43. @mysql_close ($bd);
  44. ?>
  45. </body>
  46. </html>
revyag
Plik index.php, wiersz 17. - Czy czasem to przypisanie nie powinno być odwrotnie skonstruowane ?
Plik komentuj.php. linie 38-39
Dlaczego do zmiennych $_POST przypisywane są wartości z pół formularza, które przecież będą zawierać te same wartości co zmienne $_POST po submicie ? To jest bez sensu.
zbig13
Jeszcze zwroc uwage na wiersz 9, 25-26 i 42-43 w pliku komentuj.php. Zmienne przekazywane w pasku adresu w przeglądarce powinny być pobierane metodą $_GET[], np. zamiast:
  1. <?php
  2. $zapytanie = @mysql_query ('SELECT * FROM nowosci WHERE identyfikator = '$k LIMIT 1); 
  3. ?>
powinno być:
  1. <?php
  2. $zapytanie = @mysql_query (&#092;"SELECT * FROM nowosci WHERE identyfikator = {$_GET['k']} LIMIT 1\"); 
  3. ?>

Niektóre serwery mogą obslugiwać samą zmienna $k, ale zalecane jest stosowanie $_GET[]. A poza tym w twoim zapytaniu jest błąd, bo tam, gdzie masz WHERE identyfikator='$k' następuje zamknięcie łańcucha. Chyba chodziło ci o WHERE identyfikator=' . $k . '
Fipaj
Cały czas nie działa... sad.gif
Vertical
Może chodzi o łączenie stringów:
zamiast
  1. <?php
  2. $zapytanie = @mysql_query ('SELECT * FROM nowosci WHERE identyfikator = '$k' LIMIT 1');
  3. ?>

powinno być:
  1. <?php
  2. $zapytanie = @mysql_query ('SELECT * FROM nowosci WHERE identyfikator = '. $k .' LIMIT 1');
  3. ?>

i tak dalej....
Tak apropos to uprościłbym troszkę wyświetlanie. Zamiast:
  1. <?php
  2. print ('<p>');
  3. print ('<h3>');
  4. print $wiersz['tytul'];
  5. ?>

napisałbym:
  1. <?php
  2. printf ('<p><h3> %sn', $wiersz['tytul']);
  3. ?>
Fipaj
Nic... Nie idzie... Chyba trzeba będzie plik komentuj.php przepisać od nowa... ale nie mam pomysłu, co tam może być nie tak... zbyt zawiłe to dla mnie sad.gif
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.