Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Problem z edycją newsa..
-Yetrof-
post
Post #1





Goście







Piszę swój system newsowy i mam problem. Kiedy do formularza wpisuję numer newsa który ma być edytowany do pewnego czasu dzieje się normalnie. Pojawia się formularz z zawartością tematu newsa i jego treścią. Jak coś dopiszę i daję żeby wysłało, to później tego samego newsa nie da się ponownie edytować a przy zapisywaniu tego newsa tworzy się nowy news a to co dopiszę przy edycji nie jest zapisywane jako dopisanie to tego samego newsa którego edytowałem. Jak to rozwiązać żeby po edycji newsa można było go edytować bez końca a nie tylko raz no i żeby zapisywał się nie jako osobny news tylko po prostu dopisanie do tego starego edytowane newsa? Kod:

  1. <?php
  2.  
  3.  
  4. if (!isset($_SESSION['user'])) {
  5.  
  6. echo '<form action="login.php" method="post" > 
  7. Login: <input type="text" name="nick" /><br />
  8. <br />Haslo: <input type="password" name="pass" /><br />
  9. <br /><input type="submit" value="Loguj" /> </form> <br />';
  10.  
  11. } 
  12.  
  13. else {
  14.  
  15. $mod= $_GET['mod'];
  16. switch($mod) { 
  17.  
  18. default:
  19.  
  20. echo '<div id="all">
  21. <div id="header">
  22. <ul class="menu1">
  23. <a href="page.php"><li>Home</a></li>
  24. <a href="page.php?mod=manage"><li>Manage</a></li>
  25. <a href="page.php?mod=add"><li style="word-spacing: 4px">Dodaj newsa</a></li>
  26. <a href="page.php?mod=logout"><li>Wyloguj</a></li>
  27. </ul>
  28. </div>
  29. <div id="main">'
  30. . 'Witaj: '. $_SESSION['user'] 
  31. . '</div>' 
  32. . '</div>' 
  33. . '</div>';
  34.  
  35. break;
  36.  
  37. // Dodawanie newsa
  38.  
  39. case 'add':
  40.  
  41. $subject= $_POST['subject'];
  42. $new= $_POST['new'];
  43. $date= date("d.m.Y, H.i");
  44.  
  45. function number($numer,$share,$filep) {
  46.  
  47. $filep= "news.txt";
  48. $plik = file($filep);
  49. $length = count($plik);
  50. $max = "";
  51.  
  52. for($i= 0;$i<= $length; $i++) {
  53.  
  54. $line = explode("$share",$plik[$i]);
  55. $line[$numer] = (int)$line[$numer];
  56.  
  57. if($line[$numer] > $max) {
  58.  
  59. $max = $line[$numer];
  60.  
  61. }
  62.  
  63. }
  64.  
  65. return("$max");
  66.  
  67. }
  68.  
  69. $number= number('0', 'df%^s*6*7', 'news.txt')+1;
  70.  
  71. $all= $number . 'df%^s*6*7' . $subject . 'df%^s*6*7'
  72.  . $new . 'df%^s*6*7' . $date;
  73.  
  74. echo '<div id="all">
  75. <div id="header">
  76. <ul class="menu1">
  77. <a href="page.php"><li>Home</a></li>
  78. <a href="page.php?mod=manage"><li>Manage</a></li>
  79. <a href="page.php?mod=add"><li style="word-spacing: 4px">Dodaj newsa</a></li>
  80. <a href="page.php?mod=logout"><li>Wyloguj</a></li>
  81. </ul>
  82. </div>
  83. </div>
  84. </div>';
  85.  
  86.  
  87. if (empty($_POST['subject']) || empty($_POST['new'])) {
  88.  
  89. echo '<div id="add">
  90. <form method="post">
  91. <br />Temat:<br /> <input type="text" name="subject" size="52" /><br />
  92. <br /><textarea name="new" cols="40" rows="10"></textarea><br />
  93. <br /><input type="submit" Value="Napisz" /></div>';
  94.  
  95. if (isset($_POST['subject']) || isset ($_POST['new'])) {
  96.  
  97.  
  98. echo 'Nie wpisales wymaganych informacji tongue.gif';
  99.  
  100. } 
  101.  
  102. }
  103.  
  104. else {
  105.  
  106. $file= fopen('news.txt', 'a');
  107. fwrite($file, $all ."r\n");
  108. fclose($file);
  109.  
  110.  
  111.  
  112. echo '<div id="newadd">News zostal dodany tongue.gif</div>';
  113.  
  114. }
  115.  
  116. break; 
  117.  
  118. // Zarzadzanie newsami
  119.  
  120. case 'manage':
  121.  
  122. echo '<div id="all">
  123. <div id="header">
  124. <ul class="menu1">
  125. <a href="page.php"><li>Home</a></li>
  126. <a href="page.php?mod=manage"><li>Manage</a></li>
  127. <a href="page.php?mod=add"><li style="word-spacing: 4px">Dodaj newsa</a></li>
  128. <a href="page.php?mod=logout"><li>Wyloguj</a></li>
  129. </ul>
  130. </div>
  131. </div>
  132. </div>';
  133.  
  134. $manage= file('news.txt');
  135.  
  136. foreach ($manage as $shnews) {
  137.  
  138. $explo= explode ('df%^s*6*7', $shnews);
  139. $subshow= $explo[1];
  140.  
  141. echo '<div id="manage">' . 'Temat: ' . $subshow . '</div>';
  142.  
  143. }
  144.  
  145. echo '<div id="man">' . '<form method="post" id="manag">
  146. Wpisz nr newsa: <input type="text" name="nr" size="5" />
  147. <input type="submit" Value="Usun" />
  148. </form>' 
  149. . '<form action="page.php?mod=edit" method="post">
  150. Wpisz nr newsa: <input type="text" name="edit" size="5" />
  151. <input type="submit" Value="Edit" />
  152. </form>'
  153. . '</div>';
  154.  
  155. if (empty($_POST['nr'])) {
  156.  
  157. if (isset($_POST['nr'])) {
  158.  
  159. echo 'Wpisz numer newsa, ktory ma zostac usuniety';
  160.  
  161. }
  162.  
  163. } 
  164.  
  165. else {
  166.  
  167. $filename = "news.txt";
  168. $delete = $_POST['nr'];
  169.  
  170. $file = file($filename);
  171. $file[$delete-1] = "";
  172. $file = implode ("",$file);
  173. $fp = fopen ($filename , "w");
  174. flock ($fp,2);
  175. fwrite ( $fp , $file);
  176. flock($fp,3);
  177. fclose($fp);
  178.  
  179. echo 'News zostal usuniety';
  180.  
  181. }
  182.  
  183.  
  184.  
  185. break; 
  186.  
  187. // Edycja newsa
  188.  
  189. case 'edit':
  190.  
  191.  
  192.  
  193. $ftse= file("news.txt");
  194.  
  195. foreach ($ftse as $gg) {
  196.  
  197.  
  198. $readsubnew= explode ('df%^s*6*7', $gg);
  199. $number= $readsubnew[0];
  200. $subjectedit= $readsubnew[1]; 
  201. $editnew= $readsubnew[2];
  202. $line= $number;
  203. $edit= $_POST['edit'];
  204.  
  205. if ($line== $edit) {
  206.  
  207. $filename = "news.txt";
  208. $delete = $_POST['edit'];
  209. $file = file($filename);
  210. $file[$delete-1] = "";
  211. $file = implode ("",$file);
  212. $fp = fopen ($filename , "w");
  213. flock ($fp,2);
  214. fwrite ( $fp , $file);
  215. flock($fp,3);
  216. fclose($fp);
  217.  
  218. echo '<div id="ad">'
  219. . '<form method="post">' .'<br />' . 'Temat: ' . '<br />' . '<textarea name="subjectedit" size="52">' . $subjectedit . '</textarea>'. '<br />'
  220. .'<br />' . '<textarea name="editnew" cols="40" rows="10">' . $new . '</textarea>' . '<br />'
  221. . '<br />' . '<input type="submit" Value="Zapisz" />' . '</div>';
  222.  
  223.  
  224. $nowy = $addnumber . 'df%^s*6*7' . $_POST['subjectedit'] . 'df%^s*6*7' . $_POST['editnew'] 
  225. . 'df%^s*6*7' . $date;
  226. $nr= $edit;
  227. $filename = "news.txt";
  228. $nr_y = $_POST['edit'];
  229. $plik = file($filename);
  230. $plik[$nr_y-1] = $nowy."r\n";
  231. $plik = implode("",$plik);
  232. $fp = fopen($filename , "w");
  233. flock($fp,2);
  234. fputs( $fp , $plik);
  235. flock($fp,3);
  236. fclose($fp);
  237.  
  238. }
  239.  
  240. } 
  241.  
  242.  
  243. break;
  244.  
  245. // Wylogowywanie 
  246.  
  247. case 'logout':
  248.  
  249. if (!isset($_SESSION['user'])) {
  250.  
  251. echo 'Nie byles zalogowany tongue.gif';
  252. echo '<form action="page.php?mod=logout" method="post" > 
  253. Login: <input type="text" name="nick" /><br />
  254. <br />Haslo: <input type="password" name="pass" /><br />
  255. <br /><input type="submit" value="Loguj" /></form>';
  256.  
  257. }
  258.  
  259. else {
  260.  
  261. unset ($_SESSION['user']);
  262. header ("Location: page.php");
  263.  
  264. } 
  265.  
  266. break;
  267.  
  268. }
  269.  
  270.  
  271.  
  272. }
  273.  
  274. ?>


pokazywanie newsa:

  1. <?php
  2.  
  3. $file= file('news.txt');
  4.  
  5.  
  6.  
  7. foreach ($file as $news) {
  8.  
  9. $data= explode('df%^s*6*7', $news);
  10. $subject= $data[1];
  11. $new= $data[2];
  12. $date= $data[3];
  13.  
  14. echo '<div id="all">' 
  15. . '<div id="subject">' . $subject . '</div>'
  16. . '<div id="news">' . $new . '</div>'
  17. . '<div id="end">' . 'Dodano: ' . $date . '<a href="show.php?mode=showcomments">komentarze</a>' . '</div>'
  18. . '</div>' . '<div id="height">' . '</div>'; 
  19.  
  20.  
  21.  
  22. $mode= $_GET['mode'];
  23.  
  24. switch ($mode) {
  25.  
  26. case 'showcomments': 
  27.  
  28. include ("showcomments.php");
  29.  
  30. }
  31.  
  32.  
  33. } 
  34.  
  35. ?>
Powód edycji: Dodałem tag. Następnym razem pamietaj o tym. /webdicepl
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #2





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Nie zagłębiałem się w kod za bardzo, ale jeśli dobrze widzę cały system newsów jest oparty na plikach. Sądzę, że coś takiego będzie lepiej wykonać na bazie danych, znacznie lepiej jest edytować rekordy i na pewno będzie to łatwiejsze niż w przypadku plików txt. Zarządzanie całym systemem też będzie łatwiejsze i nie wiele bardziej skomplikowane od systemu plików. Zatem - czemu nie użyjesz MySQL'a ?


--------------------
Go to the top of the page
+Quote Post
-Yetrof-
post
Post #3





Goście







Wiem że na bazie będzie łatwiej smile.gif , ale po prostu jakoś nie mogę ruszyć z nauką baz danych. Nie wiem czego. Dużo roboty z opanowaniem Mysql jest?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Zdecydowanie mniej niż z plikami ale trzeba przysiąść trochę do SQL'a


--------------------
Go to the top of the page
+Quote Post
-Yetrof-
post
Post #5





Goście







Znacie jakieś dobre kursy Mysql ?. Bo wiem tylko, że jest na wikibooks, ale nie wiem jak z nim jakościowo jest smile.gif
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #6





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(Yetrof @ 6.05.2008, 09:33:28 ) *
Wiem że na bazie będzie łatwiej smile.gif , ale po prostu jakoś nie mogę ruszyć z nauką baz danych. Nie wiem czego. Dużo roboty z opanowaniem Mysql jest?


Ale PHP i MySQL idą w parze. To jest coś co prędzej czy później będziesz musiał znać. Im szybciej tym lepiej. Tutaj wykorzystasz tylko kilka prostych zapytań typu. INSERT, DELETE, UPDATE, konstrukcję WHERE, równie prostą. Nauki naprawdę nie będzie dużo. Pooglądaj ten kurs.

EDIT:
Cytat(Yetrof @ 6.05.2008, 09:38:16 ) *
Znacie jakieś dobre kursy Mysql ?. Bo wiem tylko, że jest na wikibooks, ale nie wiem jak z nim jakościowo jest smile.gif


Zobacz ten co podałem winksmiley.jpg

Ten post edytował sniezny_wilk 6.05.2008, 10:40:24


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




na w3 jest fajny tutek ja na nim pierwsze kroki robiłem, masz tam również przykłady.

TUTORIAL


--------------------
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(Yetrof @ 6.05.2008, 11:38:16 ) *
Znacie jakieś dobre kursy Mysql ?. Bo wiem tylko, że jest na wikibooks, ale nie wiem jak z nim jakościowo jest smile.gif


Szukanie nie boli. Zobacz sobie ten temat.
Go to the top of the page
+Quote Post
-Yetrof-
post
Post #9





Goście







Myślałem ,że będzie więcej. Biorę się do nauki biggrin.gif. Tak szczerze mówiąc, już mnie szlag trafiał z plikam, bo to nie chodzi, tamto nie chodzi :E
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(Yetrof @ 6.05.2008, 11:43:16 ) *
Tak szczerze mówiąc, już mnie szlag trafiał z plikam, bo to nie chodzi, tamto nie chodzi :E


jak zaczynasz z baza to też może Ci nie wychodzić bo to jest cos nowego ale pożytecznego smile.gif


--------------------
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Zanim zaczniesz pisać, zapoznaj się z darmowymi i popularnymi systemami newsów na plikach - choćby PS news czy Cute news, przeanalizuj panel i kod źródłowy, unikniesz wielu podstawowych błędów (choć twórcy tych skryptów także się ich nie ustrzegli)
2. Wybór nośnika danych to już kwestia drugorzędna - na pewno o wiele wygodniejsza jest baza, dziś mało kto ma duże praktyczne doświadczenia w stosowaniu plików tekstowych. Pomóc Ci może ten tutorial:
forumweb.pl/viewtopic.php?t=39103
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #12





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

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


Cytat(Pilsener @ 6.05.2008, 10:02:47 ) *
1. Zanim zaczniesz pisać, zapoznaj się z darmowymi i popularnymi systemami newsów na plikach - choćby PS news czy Cute news, przeanalizuj panel i kod źródłowy, unikniesz wielu podstawowych błędów (choć twórcy tych skryptów także się ich nie ustrzegli)


Nie zgodzę się z Tobą. Jeśli ktoś nie zna SQL to patrzenie na sam kod nic mu nie da. To tak jakbyś zaczynał się uczuć SQL'a a ktoś pokazałby Tobie 120 zapytań na podstawie których miałbyś się uczyć - to nie jest metoda. Do tego z tego co widzę kolego jest początkujący nawet w PHP, a podejrzewam, że te systemy są w OOP, do tego na pewno nie mają jednego pliku i zanim kolega przez to przebrnie to minie sporo czasu, do tego jak sam mówiłeś twórcy też popełnili błędu. Uważam również, że właśnie nauka na własnych błędach jest najlepszą szkołą i raz naprawiając dany błąd raczej nigdy go nie popełnisz drugi raz, a wpajanie w siebie czyjegoś kodu nic nie daje. Reasumując polecam zaczynać od tutoriali, książek i for smile.gif


--------------------
Go to the top of the page
+Quote Post
piotrooo89
post
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




zgadzam sie z sniezny_wilk. Poprawianie WŁASNYCH błędów jest 100% skuteczna metodą nauki programowania i to niezależnie czy mówimy tu o php, mysql, c++. To daje największe efekty. Więc nie pozostaje jak życzyć naszemu drogiemu Yetrof miłej lektury.


--------------------
Go to the top of the page
+Quote Post
-Yetrof-
post
Post #14





Goście







No zacząłem bazę przed chwilą i naprawdę prosta jest smile.gif. A co do newsów. Na plikach czasami szlag trafia. Cutenews są dobrze napisane i warto ten skrypt analizować ale PsNews to nie jest mądry wybór. W PsNews jest masa błędów. Jak zobaczyłem składnię PsNews i przesyłanie hasła do konta sesją laugh.gif to sobie je podarowałem.
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 Aktualny czas: 20.08.2025 - 10:45