Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z edycją newsa..
Forum PHP.pl > Forum > Przedszkole
Yetrof
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. ?>
sniezny_wilk
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 ?
Yetrof
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?
piotrooo89
Zdecydowanie mniej niż z plikami ale trzeba przysiąść trochę do SQL'a
Yetrof
Znacie jakieś dobre kursy Mysql ?. Bo wiem tylko, że jest na wikibooks, ale nie wiem jak z nim jakościowo jest smile.gif
sniezny_wilk
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
piotrooo89
na w3 jest fajny tutek ja na nim pierwsze kroki robiłem, masz tam również przykłady.

TUTORIAL
webdice
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.
Yetrof
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
piotrooo89
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
Pilsener
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
sniezny_wilk
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
piotrooo89
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.
Yetrof
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.
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.