Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] czy jest mozliwy cms w jednym pliku?
Forum PHP.pl > Forum > Przedszkole
andixxx
Witam.
Czy jest możliwe stworzenie jednego pliku, za pomocą którego możemy wyświetlać, dodawać, edytować i usuwać wpisy w bazie? ..
Chodzi mi przede wszystkim o to, aby na stronie była widoczna aktualnie tylko TYLKO JEDNA z tych rzeczy..

czyli, np. wchodzimy w plik wszystko.php - tu wyświetlają się wyniki z tabeli, obok dodaj i edytuj i osobny link do dodaj wpis.. teraz, gdy klikniemy dodaj wpis, wyniki znikną a zamiast nich pojawi się formularz.. po dodaniu wpisu, cofa nas znów do (odświeżonych) wyników.. a gdy klikniemy w edytuj, to znów znikną wyniki i pojawi się pole do update danych ..

potrzebuje takie coś, a za nic nie wiem jak się do tego zabrać .. JAk by ktoś był tak miły.. proszę o pomoc.
motyl-pl
  1. <?php
  2. if($_GET['strona'] == "podstrony" and !$_GET['akcja']) {
  3.  
  4. echo '<a href="podstrony-dodaj" title="Dodaj nową podstrone"><img src="img/dodaj.jpg" alt="Dodaj nową podstrone" class="dodaj"></a><ol>';
  5. $podstrony = mysql_query("SELECT id,nazwa FROM podstrony");
  6. while($pobierz = mysql_fetch_array($podstrony)) {
  7.  
  8. $nazwa = stripslashes($pobierz['nazwa']);
  9. $id = $pobierz['id'];
  10.  
  11. echo '<li style="wdith:900px;float:left;"><span style="width:500px;float:left;">'.$nazwa.'</span><span style="width:300px;float:left;"><a href="podstrony-edytuj-'.$id.'" title="Edytuj '.$nazwa.'"><img src="img/edytuj.jpg" class="edytuj" alt="Edytuj '.$nazwa.'" /></a> <a href="podstrony-usun-'.$id.'" title="Usuń '.$nazwa.'"><img src="img/usun.jpg" alt="Usuń '.$nazwa.'" class="usun" /></a></span></li>';
  12. }
  13. echo '</ol>';
  14. }
  15.  
  16.  
  17. /* Dodaj */
  18. if($_GET['akcja'] == "dodaj") {
  19.  
  20. '<form action="zarzadzanie-podstrony" method="post">
  21. <p><label onmouseover="menu(10);" onmouseout="menu(0)">Nazwa podstrony: <input type="text" name="nazwa" class="input-tresc" /></label></p>
  22. <p onmouseover="menu(11);" onmouseout="menu(0)"><textarea cols="80" id="editor1" class="ckeditor" name="tresc" rows="10" style="width:960px;"></textarea></p>
  23. <script type="text/javascript">
  24. var editor = CKEDITOR.replace( \'editor1\' );
  25. CKFinder.SetupCKEditor( editor, \'ckfinder/\' ) ;
  26. </script>
  27. <p><input type="submit" name="podstrona" value="dodaj" class="submit" /></p>
  28. </form>';
  29. }
  30. if($_POST['podstrona'] == "dodaj") {
  31.  
  32.  
  33. $clean = array();
  34. $mysql = array();
  35.  
  36. $clean['nazwa'] = $_POST['nazwa'];
  37. $mysql['nazwa'] = mysql_real_escape_string($clean['nazwa']);
  38. $clean['tresc'] = $_POST['tresc'];
  39. $mysql['tresc'] = mysql_real_escape_string($clean['tresc']);
  40. $ip = $_SERVER['REMOTE_ADDR'];
  41.  
  42. mysql_query("INSERT INTO podstrony SET nazwa='{$mysql['nazwa']}', tresc='{$mysql['tresc']}'");
  43. mysql_query("INSERT INTO logi SET nazwa = 'Podstrona ".$mysql['nazwa']." została dodana', data = CURDATE(), ip = '$ip', kategoria = '4'");
  44. header("Location: zarzadzanie-podstrony");
  45. }
  46. /* Usuń */
  47. if($_GET['akcja'] == "usun") {
  48.  
  49. $clean = array();
  50. $clean['id'] = $_GET['id'];
  51.  
  52. $podstrona = mysql_query("SELECT nazwa FROM podstrony WHERE id='{$clean['id']}'");
  53. while($pobierz = mysql_fetch_array($podstrona)) {
  54. $nazwa = stripslashes($pobierz['nazwa']);
  55. }
  56.  
  57. if(!is_int($clean['id'])) {
  58. $ip = $_SERVER['REMOTE_ADDR'];
  59. mysql_query("INSERT INTO logi SET nazwa = 'Podstrona ".$nazwa." została usunięta', data = CURDATE(), ip = '$ip', kategoria = '4'");
  60. mysql_query("DELETE FROM podstrony WHERE id='{$clean['id']}'");
  61. header("Location: zarzadzanie-podstrony");
  62. }
  63. else {
  64.  
  65. echo "Nie kombinuj zmieniając id : )";
  66. }
  67. }
  68. /* Edytuj */
  69. if($_GET['akcja'] == "edytuj") {
  70.  
  71. $clean = array();
  72. $mysql = array();
  73.  
  74. $clean['id'] = $_GET['id'];
  75. $mysql['id'] = mysql_real_escape_string($clean['id']);
  76. if(!is_int($clean['id'])) {
  77.  
  78. $podstrony_edycja = mysql_query("SELECT * FROM podstrony WHERE id='{$mysql['id']}'");
  79. while($pobierz = mysql_fetch_array($podstrony_edycja)) {
  80.  
  81. $nazwa = stripslashes($pobierz['nazwa']);
  82. $tresc = stripslashes($pobierz['tresc']);
  83.  
  84.  
  85. '<form action="zarzadzanie-podstrony" method="post">
  86. <p><label onmouseover="menu(10);" onmouseout="menu(0)">Nazwa podstrony: <input type="text" value="'.$nazwa.'" name="nazwa" class="input-tresc" /></label></p>
  87. <p onmouseover="menu(11);" onmouseout="menu(0)"><textarea cols="80" id="editor1" class="ckeditor" name="tresc" rows="10" tyle="width:960px;">'.$tresc.'</textarea>
  88. <script type="text/javascript">
  89. var editor = CKEDITOR.replace( \'editor1\' );
  90. CKFinder.SetupCKEditor( editor, \'ckfinder/\' ) ;
  91. </script>
  92. </p>
  93. <p><input type="submit" name="podstrona" value="edytuj" class="submit" /></p>
  94. <input type="hidden" name="id" value="'.$clean['id'].'" />
  95. </form>';
  96. }
  97. } }
  98. if($_POST['podstrona'] == "edytuj") {
  99. $clean = array();
  100. $mysql = array();
  101. $ip = $_SERVER['REMOTE_ADDR'];
  102. $clean['id'] = $_POST['id'];
  103. $clean['nazwa'] = $_POST['nazwa'];
  104. $mysql['nazwa'] = mysql_real_escape_string($clean['nazwa']);
  105. $clean['tresc'] = $_POST['tresc'];
  106. $mysql['tresc'] = mysql_real_escape_string($clean['tresc']);
  107.  
  108. mysql_query("INSERT INTO logi SET nazwa = 'Podstrona ".$mysql['nazwa']." uległa edycji', data = CURDATE(), ip = '$ip', kategoria = '4'");
  109. mysql_query("UPDATE podstrony SET nazwa='{$mysql['nazwa']}', tresc='{$mysql['tresc']}' WHERE id='{$clean['id']}'");
  110. header("Location: zarzadzanie-podstrony");
  111. }
  112.  
  113. ?>


Przeanalizuj sobie tongue.gif
Fantazyn
A tu masz pełne rozwiązanie open source
OneFileCMS

Pozdrawiam
andixxx
Dzięki bardzo:) No to biorę się do roboty smile.gif

EDIT:

wiec jak już wiem jak się do tego zabrać, pogooglowałem troszkę i trafiłem na takie rozwiązanie z wykorzystaniem switch
teraz mam pytanie.. takie coś także zda egzamin? czy to dobre rozwiązanie? jakieś rady ? (chciałbym to od zera napisać wszystko sam, aby się podszkolić : )

  1. <?php
  2. switch($_GET['id']) {
  3. case 'dodaj':
  4. echo "wykonywanie kodu dla akcji dodania wpisu do bazy";
  5. break;
  6. case 'edytuj':
  7. echo "edytowanie wpisow z bazy";
  8. break;
  9. case 'usun':
  10. echo "usuwanie tego co chcemy";
  11. break;
  12. case 'inna':
  13. echo "jakas inna akcja ktora moze sie przydac";
  14. break;
  15. default:
  16. echo 'akcja podstawowa - wyswietlanie wynikow';
  17. }
  18.  
  19. echo "<br><br> tresc wyswietlana zawsze na koncu ..";
  20. ?>


oczywiście tylko pouzupełniać kody i takie tam;)
akcje wywoływane są poprzez index.php?id=nazwa_case
thek
Można trzymać w jednym, czemu nie. Tylko lepiej podziel to na pliki, które nie ingerują w warstwę widoku nadto między sobą. O ile usuwanie nie koliduje z niczym (bo nic nie dzieje się widocznego od strony usera) tylko wyświetla komunikat o powodzeniu lub nie, to już dodanie i wyświetlanie są kompletnie różne. Stąd ja bym podzielił to na 2 pliki: dodaj+edytuj (działają na tym samym formularzu!) oraz wyświetl+usun (usunięcie powoduje i tak powrót do wyświetlania wszystkich smile.gif ). Dlaczego dodaj+edytuj są osobno choć też powracają do listy wszystkich? Bo niekoniecznie muszą wrócić. A co jeśli nastąpi błąd danych? Też wróci do listy choć z komunikatem: "Wpisu nie dodano bo serwer bazy danych leży i kwiczy."? Nie powinno wrócić do formularza i wypisać błędy oraz nakazać ich poprawę.
Nie ma sensu pchać wszystkiego do jednego pliku i potem masę IFów robić w zależności od przesłanych zmiennych GET i/lub POST. Próba poprawienia czegoś póxniej to będzie babranie się z kodem i zastanawianie WTFIWDH? What The Fuck I Was Doing Here?
andixxx
Dzięki za sugestie i wyjaśnienie tego i tamtego winksmiley.jpg w takim razie jeśli takie wyjście będzie lepsze wypadało by posłuchać mądrzejszego;) .. ogólnie idee mam taka aby wyglądało to mniej więcej tak:


+ dodaj wpis

id | tekst1 | tekst 2 | opcje
=======================
1 | aaaaa | bbbbbb | edytuj / usun
2 | cccccc | ccccccc | edytuj / usun
3 | ddddd | dddddd | edytuj / usun



Czyli jeśli dobrze zrozumiałem, stwarzam dwa pliki, w jednym skrypt wyświetlania i usuwania rekordów a w drugim (z tym będzie dużo gorzej ;d) do dodawania i edycji jednocześnie (na jednym formularzu?!) .. może jakaś podpowiedź jak to zrobić?

edit: znalazlem winksmiley.jpg http://forum.php.pl/index.php?showtopic=142412
H4eX
Gdy dodajemy to formularz jest pusty i zapytanie to INSERT, a gdy edytujemy to pierw wczytujemy dane za pomocą SELECT i pokazujemy w formularzu a następnie jak już zmienimy i klikniemy "Wyślij" to za pomocą zapytania UPDATE zmienimy dane w bazie. Cała operacja oparta na warunkach. Możesz to zrobić oddzielnie i tak bym proponował, mniej wysiłku i optymalny kod.
andixxx
ok a inaczej.. da rade zrobić coś takiego poprzez funkcje albo klasy ? zależało by mi chyba jednak na tym żeby było wszystko to w jednym pliku i bardzo czytelnie się wyświetlało w przeglądarce..
H4eX
No da się to zrobić w jednym pliku na zasadzie warunków, ale po co tak się męczyć? Strona się będzie powolniej wczytywała jak i kod mniej czytelny.
motyl-pl
W ogóle spojrzałeś na to co dałem w moim poście ?
Wszystko masz w tym pliku:
dodawanie, edycja, usuwanie.
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.