Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Niedziałający system newsów, Po systemie szablonów :D
Fipaj
post 17.03.2005, 13:28:30
Post #1





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


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>


Ten post edytował Fipaj 17.03.2005, 13:30:42


--------------------
Go to the top of the page
+Quote Post
revyag
post 17.03.2005, 13:41:18
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


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.


--------------------
-------------

------
Go to the top of the page
+Quote Post
zbig13
post 17.03.2005, 14:09:38
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

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


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 . '
Go to the top of the page
+Quote Post
Fipaj
post 17.03.2005, 16:23:44
Post #4





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


Cały czas nie działa... sad.gif


--------------------
Go to the top of the page
+Quote Post
Vertical
post 17.03.2005, 16:40:17
Post #5





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


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. ?>


Ten post edytował Vertical 17.03.2005, 16:42:19
Go to the top of the page
+Quote Post
Fipaj
post 17.03.2005, 16:55:29
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


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


--------------------
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 - 00:44