Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] System news - edycja po wpisaniu 'hassla'?
Forti
post
Post #1





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


  1. <?php
  2. include("config.php");
  3. $result = mysql_query("SELECT * FROM news ORDER BY newsid DESC",$connect);
  4. while($myrow = mysql_fetch_assoc($result))
  5. {
  6. echo "<b>Title: ";
  7. echo $myrow['title'];
  8. echo "</b><br>On: <i>";
  9. echo $myrow['dtime'];
  10. echo "</i><hr align=left width=160>";
  11. echo $myrow['text1'];
  12.  
  13. echo "<form method="POST">";
  14.  
  15. echo "<input type=text name="login"/>";
  16.  
  17. echo "<input type=submit value="Wyślij"/>";
  18.  
  19. echo "</form>";
  20. if ($_POST['login'] == 10){
  21.  
  22. echo "<br><a href=\"read_more.php?newsid=$myrow[newsid]\">Read More...</a>
  23.  
  24. || <a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a>
  25.  
  26. || <a href=\"delete_news.php?newsid=$myrow[newsid]\">Delete</a><br><hr>";
  27.  
  28. || <a href=\"add_news.php\">add</a><br><hr>";
  29. }
  30.  
  31. }
  32.  
  33. ?>
  34.  


Jak już pewnie widzicie, problem jest od linijki echo "<form method="POST">"; - napisałem to sam i już przed wiedziałem że będzie źle.
Co chce osiągnąć - chce by 'newsy' były wyświetlane normalnie dla każdego odwiedzającego. U dołu powinno być pole do wpisania tekstu i przycisk - po wpisaniu hasła chce aby ukazałi mi się opcje: read more, edit, delete, add.

Wpadłem na ten pomysł bo wydaje mi się najprostszy a nie potrafie jeszcze ogarnąć systemu rejestracji, logowania itp. Robie prosty system newsów - na razie wychodzi, jednak problem w tym że każdy będzie mógł go edytować wg. tego co powyżej.

Jakieś rozwiązania praktyczne?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Masz błedy w liniach 13, 15, 17 - powinieneś dodać backslash przed ". 28 - <a href poza " " jest
Włącz raportowane błędów!
Go to the top of the page
+Quote Post
kartin
post
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


  1. $myrow[newsid]
i podobne są niepoprawne

Wyświetlanie kodu HTML za pomocą echo jest niewłaściwe (należy oddzielać kod aplikacji od jej wyglądu). Jeśli upierasz się przy trzymaniu wszystkiego razem to zamiast:
  1. echo "<form method="POST">";
  2.  
  3. echo "<input type=text name="login"/>";
  4.  
  5. echo "<input type=submit value="Wyślij"/>";
  6.  
  7. echo "</form>";


możesz dać:
  1. ?>
  2. <form method="POST">
  3. <input type=text name="login"/>
  4. <input type=submit value="Wyślij"/>
  5. </form>
  6. <?php
Go to the top of the page
+Quote Post
Forti
post
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Panowie, dziękuje za pomoc przy wyświetleniu kodu, rozumiem że trzeba poprawić wiele kwestii. Jednak nadal nie rozwiązuje to mojego problemu - jak zrobić, aby po wpisaniu np. 10 i kliknięciu przycisku wyświetliło mi opcje edit, delete, add new itp.
Go to the top of the page
+Quote Post
kartin
post
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Jak teraz wygląda skrypt i jaki kod HTML otrzymujesz po jego uruchomieniu?
Go to the top of the page
+Quote Post
Forti
post
Post #6





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Witam ponownie.

Nie chce zakładać nowego tematu, więc napisze tutaj - może ktoś mi pomoże.

Na stronie głównej pod "newsami" mam takie cos:
  1. <br><a href=\"edit_news.php?newsid=$myrow[newsid]\">Edit</a>



Następnie wyświetla mi się strona o takim kodzie:


  1. <?php
  2.  
  3. include("config.php");
  4.  
  5. if(isset($_POST['submit']))
  6.  
  7. {
  8. $title = mysql_escape_string($_POST['title']);
  9.  
  10. $text1 = mysql_escape_string($_POST['text1']);
  11.  
  12. $text2 = mysql_escape_string($_POST['text2']);
  13.  
  14. $result = mysql_query("UPDATE news SET title='$title', text1='$text1', text2='$text2' WHERE newsid='$newsid' ",$connect);
  15.  
  16. echo "<b>Thank you! News UPDATED Successfully!<br>You'll be redirected to Home Page after (4) Seconds";
  17.  
  18. echo "<meta http-equiv=Refresh content=4;url=index.php>";
  19.  
  20. }
  21.  
  22. elseif(isset($_GET['newsid']))
  23.  
  24. {
  25.  
  26. $result = mysql_query("SELECT * FROM news WHERE newsid='$_GET[newsid]' ",$connect);
  27.  
  28. while($myrow = mysql_fetch_assoc($result))
  29.  
  30. {
  31.  
  32. $title = $myrow["title"];
  33.  
  34. $text1 = $myrow["text1"];
  35.  
  36. $text2= $myrow["text2"];
  37.  
  38. ?>
  39.  
  40. <br>
  41.  
  42. <h3>::Edit News</h3>
  43.  
  44.  
  45.  
  46. <form method="post" action="<?php echo $PHP_SELF ?>">
  47.  
  48. <input type="hidden" name="newsid" value="<? echo $myrow['newsid']?>">
  49. Tutuł:<input name="title" size="40" maxlength="255" value="<? echo $title; ?>">
  50. <br>
  51. Tekst:<textarea name="text1" rows="7" cols="30"><? echo $text1; ?></textarea>
  52. <br>
  53. Tekst2:<textarea name="text2" rows="7" cols="30"><? echo $text2; ?></textarea>
  54. <br>
  55. <input type="submit" name="submit" value="Update News">
  56. </form>
  57.  
  58.  
  59.  



I wszystko ładnie pięknie, jednak "news" nie edytuje się - wraca do swojej poprzedniej treści. Co może być nie tak w tym kodzie? Żadnych błędów nie zwraca.
Go to the top of the page
+Quote Post
johny_s
post
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


pewnie nie ma newsid
ps.
tak Ciężko wyświetlić zapytanie i z palca do bazy wrzucić?
Go to the top of the page
+Quote Post
kartin
post
Post #8





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


  1. $result = mysql_query("UPDATE news SET title='$title', text1='$text1', text2='$text2' WHERE newsid='$newsid' ",$connect);
Pewnie dla zmiennej $newsid powinieneś przypisać wartość pobraną z $_POST.
W jakim celu do zmiennej $result pobierasz wynik wykonania zapytania, jak z niej nie korzystasz?

Zrób coś w rodzaju:
  1. if ($result) {
  2. //komunikat zapisano poprawnie
  3. }
  4. else {
  5. //komunikat błąd zapisu do bazy
  6. }
Go to the top of the page
+Quote Post
Forti
post
Post #9





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Tyle że delete dla newsid (tabela jest w mysql) czy przycisk dodaj (podobne jak edit ale dodaje nowy) działa poprawnie.
Link z index.php do edit i delete jest w tym samym miejscu, wygląda tak samo praktycznie jeżeli chodzi o kwestie NEWSID

Coś jest źle w kodzie aplikacji z edit, tylko nie potrafie stwierdzić co.

Zadanie: pobrać NEWSID i wyświetlić to, co jest w bazie w tabeli (tytuł, tekst1, tekst2) a następnie nadpisać to.
Go to the top of the page
+Quote Post
kartin
post
Post #10





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Wyświetl sobie treść zapytania SQL (to pewnie wszystko wyjasni) i dodatkowo sprawdzaj czy zostało wykonane prawidłowo.
Go to the top of the page
+Quote Post
Forti
post
Post #11





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


hm.. chyba jeszcze troche nie wszystko ogarniam. Jak sprawdzić treść zapytania SQL?
Go to the top of the page
+Quote Post
kartin
post
Post #12





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Np. wyświetlić przez przy użyciu echo a w nim zapytanie skopiowane z mysql_query().
Go to the top of the page
+Quote Post
Forti
post
Post #13





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Nie ogarniam hehe

wstawiłem coś takiego:

  1. <?php
  2. echo $result = mysql_query("SELECT * FROM news WHERE newsid='$_GET[newsid]' ",$connect);
  3. echo $result = mysql_query("UPDATE news SET title='$title', text1='$text1', text2='$text2' WHERE newsid='$newsid' ",$connect);
  4.  
  5. ?>


i wyświetla mi na stronie: Resource id #41 - a powinno pobrać np. id #5 (artykuł ma taki id) (samo pierwsze echo wyświetla Resource id #1)




ps, może ktoś będzie wiedział (nie chce kolejnego tematu robić)

mam coś takiego:
  1. <br><a href=\"read_more.php?newsid=$myrow[newsid]\">Więcej</a></div>


i to jest na stronie news.php która jest zaincludowana w index.php (index.php?inc=news)
przy pomocy tej funkcji:

  1. <?PHP
  2.  
  3. @$strona=$_GET['inc'];
  4.  
  5.  
  6. if (isset($_GET['inc'])) {
  7. if (file_exists('inc/'.$strona.'.php'))
  8. include('inc/'.$strona.'.php');
  9. else
  10. include('inc/error.php');
  11. }
  12. else {
  13. //załaduj stronę główną
  14. $strona="news";
  15. include('inc/'.$strona.'.php');
  16. }
  17.  
  18.  
  19. ?>


Jak sprawić aby plik read_more wraz z pobranym ID $_get wyświetlił mi się w miejscu news.php przy pomocy include? Próbowałem już róznych warunków, siedze generalnie od wczoraj nad tym problemem. Nawet próbowałem coś z input name="xx" i warunek co zrobić gdy się go naciśnie. Albo wywala error.php albo pustą strone.

Ten post edytował Forti 17.05.2014, 10:43:27
Go to the top of the page
+Quote Post
Turson
post
Post #14





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zapytanie masz wyświetlić w ten sposób
  1. $sql = "SELECT * FROM news WHERE newsid='$_GET[newsid]' ";
  2. $result = mysql_query($sql,$connect);
  3. echo $sql;
Go to the top of the page
+Quote Post
Forti
post
Post #15





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


wyświetliło: SELECT * FROM news WHERE newsid='6'

Czyli w teorii prawidłowo, newsid pobiera prawidłowo (link: edit_news.php?newsid=6). Jednak po edycji dalej pozostaje wersja z przed.



edit:

naprawiłem ;]

było: $result = mysql_query("UPDATE news SET title='$title', text1='$text1', text2='$text2' WHERE newsid='$newsid' ",$connect);
a powinno być : $result = mysql_query("UPDATE news SET title='$title', text1='$text1', text2='$text2' WHERE newsid='$_GET[newsid]' ",$connect);


W postach wyżej zapytałem się odnośnie funkcji include, aby było coś takiego: index.php?inc=read_more.php?newsid=$myrow[newsid] - tylko mam problem bo moja funkcja sama pobiera read_more, wstawia .php a ze wszystkim potem jest problem (obecnie pobiera wszystko i na końcu wstawia .php przez co jest error.

Ten post edytował Forti 17.05.2014, 10:52:05
Go to the top of the page
+Quote Post
Turson
post
Post #16





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


daj
  1. print_r($_GET);


poza tym, to jest bez sensu
  1. @$strona=$_GET['inc'];
  2. if (isset($_GET['inc'])) {
  3. }

Nie wygłuszaj błędów.
  1. if (isset($_GET['inc'])) {
  2. $strona = $_GET['inc'];
  3. }
Go to the top of the page
+Quote Post
Forti
post
Post #17





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Tutaj pokażę jak bardzo zielony jestem, nie wiem co z tym zrobić.

  1. print_r($_GET);

Go to the top of the page
+Quote Post
Turson
post
Post #18





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wklej do swojego kodu najlepiej na sam początek i odśwież stronę, następnie to co tam sie wyswietli skopiuj i wklej na forum
Go to the top of the page
+Quote Post
Forti
post
Post #19





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


array ()
na stronie index.php, pytanie tylko po co to miałem wstawić?

Jezeli chodzi o edycje wpisu to rozwiązałem problem.

Pytanie kolejne: na stronie index.php jest kod na include linków z menu (podany wyzej). domyślnie ładuje się inc/news.php, w nim jest link do pliku read_more.php?newsid=$myrow[newsid]. I chce aby ten link wraz z odpowiednią wartością newsid wyświetlił się w polu include na index.php. Do tego nie mogę dojść.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 23:57