Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Malutki skrypt dla początkujących, szukam gotowego rozwiązania.
Forum PHP.pl > Forum > Gotowe rozwiązania
adamgda
Witam serdecznie!

Szukam gotowego rozwiązania małego skryptu, o to jak by miał wyglądać:
1. Formularz typu text oraz przycisk submit.
2. Treść z formularza zapisuję się bazy danych gdzie dodaje się do danego wpisu "ID".
3. Strona zwraca treść wpisaną w punkcie 1 wraz z linkiem zawierającym ID który można komuś dać i ten ktoś wyświetli tę że treść (coś w stylu strona.pl/msg?id=1).

Dodatkowo wyświetlanie ostatnio dodanych wpisów ale to już umiem, niestety moja wiedza kończy się na umiejętności pobierania danych z bazy, ale gorzej z prawidłowym zapisem hehe wink.gif

To tyle nerdsmiley.png

Jak to mądrze nazwać żeby google podało jakieś konkretne rozwiązanie bo jak się zabiorę za składanie nawet tak prostego skryptu z kilku różnych tutoriali wyjdzie z tego kupa facepalmxd.gif
_Borys_
db_connect.php
  1. <?php
  2.  
  3. /***********************/
  4. // Przykładowa tabela w bazie
  5. /*
  6.  
  7. CREATE TABLE `news` (
  8. `id` int(11) NOT NULL AUTO_INCREMENT,
  9. `wpis` text NOT NULL,
  10. `data_wpisu` datetime NOT NULL,
  11. `uid` varchar(32) NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  14.  
  15. */
  16. $db_host = 'localhost'; // Host (np.localhost)
  17. $db_name = 'test'; //Nazwa bazy
  18. $db_user = 'root'; //db_user
  19. $db_pass = ''; //db_password
  20. $table_name = 'news';
  21. //Połączenie z bazą
  22. $sql = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
  23. mysql_select_db($db_name, $sql) or die(mysql_error());
  24. function dbInsertUpdate($dane)
  25. {
  26. mysql_query($dane) or die(mysql_error());
  27. }
  28. function dbSelect($dane)
  29. {
  30. $wynik = mysql_fetch_assoc(mysql_query($dane)) or die(mysql_error());
  31. return $wynik;
  32. }
  33.  
  34. ?>


wpis.php
  1. <?php
  2. // Ścieżka do pliku odczyt.php np.
  3. $path = 'http://moja-strona.pl/odczyt.php';
  4. // lub do testów na localhoście
  5. //$path = 'odczyt.php';
  6. include_once 'db_connect.php';
  7. // Sprawdzanie czy edytuj kliknięty
  8. if (!empty($_POST['id']) && isset($_POST['edytuj']))
  9. {
  10. $akcja_1 = 'Edytuj wpis';
  11. $akcja_2 = 'Dodaj poprawiony';
  12. $id = (int)$_POST['id'];
  13. $wynik = dbSelect("SELECT wpis FROM $table_name WHERE id = $id");
  14. $input_id = '<input type="hidden" name = "id" value = "' . $id . '"/>';
  15. } else
  16. {
  17. $akcja_1 = 'Nowy wpis';
  18. $akcja_2 = 'Dodaj wpis';
  19. // Dodanie nowego wpisu
  20. if (!empty($_POST['wpis']) && $_POST['dodaj'] == 'Dodaj wpis')
  21. {
  22. $wpis = mysql_real_escape_string($_POST['wpis']);
  23. // Utworzenie unikalnego identyfikatora w linku do odczytu wpisu
  24. // aby użytkownik nie mógł przeglądać po kolei wszystkich wpisów
  25. // zmieniając cyferki w linku.
  26. do
  27. {
  28. $uid = md5(uniqid());
  29. // Sprawdzanie czy nie ma już takiego w bazie, jeśli jest to jeszcze raz tworzymy inny
  30. } while (mysql_query("SELECT uid FROM $table_name WHERE uid = $uid"));
  31. // Tu dodajemy wpis i inne dane do bazy
  32. dbInsertUpdate("INSERT INTO $table_name VALUES(null,'$wpis',NOW(),'$uid')");
  33. $wynik = dbSelect("SELECT wpis,uid FROM $table_name WHERE id = LAST_INSERT_ID()");
  34. $dodano = '<h3 class = "p">DODANO WPIS</h3>';
  35. }
  36. // Dodanie poprawionego wpisu
  37. if (!empty($_POST['wpis']) && $_POST['dodaj'] == 'Dodaj poprawiony')
  38. {
  39. $id = (int)$_POST['id'];
  40. $wpis = mysql_real_escape_string($_POST['wpis']);
  41. // Dodajemy poprawiony wpis
  42. dbInsertUpdate("UPDATE $table_name SET wpis = '$wpis' WHERE id = $id");
  43. $wynik = dbSelect("SELECT wpis,uid FROM $table_name WHERE id = $id");
  44. $dodano = '<h3 class = "p">DODANO POPRAWIONY WPIS</h3>';
  45. }
  46. if (isset($wynik))
  47. {
  48. // Tworzenie linku do odczytu wpisu
  49. $link = '<p class = "p"><a href ="' . $path . '?uid=' . $wynik['uid'] . '">' . $path .
  50. '?uid=' . $wynik['uid'] . '</a></p>';
  51. }
  52. }
  53. ?>
  54. <!DOCTYPE HTML>
  55. <html>
  56. <head>
  57. <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
  58. <style type="text/css">
  59. <!--
  60. #content{
  61. margin: 0 auto;
  62. height: auto;
  63. width: auto;
  64.  
  65. }
  66. .p{
  67. text-align: center;
  68. }
  69. textarea {
  70. margin: auto;
  71. display: block;
  72. height: 300px;
  73. width: 600px;
  74.  
  75. }
  76. -->
  77. </style>
  78. </head>
  79.  
  80. <body>
  81.  
  82. <div id="content">
  83. <form name = "formularz" action = "wpis.php" method = "post">
  84. <p class="p">ID wpisu: <input type="text" name="id" placeholder="ID" size="10" />
  85. <input type="submit" name="edytuj" value="Edytuj" /></p>
  86. <?=isset($input_id) ? $input_id : ''?>
  87. <p class="p"><?=$akcja_1?>:</p>
  88. <textarea name="wpis"><?=isset($wynik['wpis']) ? $wynik['wpis'] : ''?></textarea>
  89. <p class="p"><input type="submit" name="dodaj" value="<?=$akcja_2?>" /></p>
  90. </form>
  91. <?=isset($dodano) ? $dodano : ''?>
  92. <?=isset($link) ? $link : ''?>
  93. </div>
  94.  
  95. </body>
  96. </html>
  97. <?php
  98.  
  99.  
  100. ?>


odczyt.php
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
  5. <style type="text/css">
  6. <!--
  7. #content{
  8. margin: 0 auto;
  9. text-align: center;
  10. margin-top: 50px;
  11. }
  12. -->
  13. </style>
  14. </head>
  15. <body>
  16. <?php
  17.  
  18. // Sprawdzanie czy jest uid
  19. if (!empty($_GET['uid']))
  20. {
  21. // Walidacja uid
  22. preg_match('/^[0-9a-f]{32}$/', $_GET['uid'], $matches);
  23. include 'db_connect.php';
  24. // Pobranie wpisu z bazy
  25. $wynik = dbSelect("SELECT wpis FROM $table_name WHERE uid = '$matches[0]'");
  26. // Zamiana \r\n na <br /> bo teraz będzie w divie wyświetlane a nie w textarea
  27. $wynik = str_replace("\r\n", '<br />', $wynik['wpis']);
  28. mysql_close($sql);
  29. echo '<div id = "content">' . $wynik . '</div>';
  30. } else
  31. {
  32. echo '<div id = "content"><h3>BRAK WPISU</h3></div>';
  33. }
  34.  
  35. ?>
  36. </body>
  37. </html>
adamgda
Dzięki Mistrzu businesssmiley.png

Działa znakomicie!

Jedno tylko pytanie, czy nie da się zrobić tak żeby nie było tego szyfrowania MD5, a najlepiej żeby w ogóle nie było nic przed id, ponieważ wychodzą mi kosmicznie długie i nieczytelne linki ohno-smiley.gif
Chodzi mi o taki efekt wygenerowanego linku: "jakasstrona.pl/1234", ewentualnie "jakasstrona.pl/id=1234" gdzie 1234 to oczywiście ID wpisu.
_Borys_
Zmienione zgodnie z życzeniem.
Przed uruchomieniem usuń z tabeli w bazie wiersz uid

wpis.php
  1. <?php
  2.  
  3. // Ścieżka do pliku odczyt.php np.
  4. $path = 'http://moja-strona.pl/odczyt.php';
  5. // lub do testów na localhoście
  6. //$path = 'odczyt.php';
  7. include_once 'db_connect.php';
  8. // Sprawdzanie czy edytuj kliknięty
  9. if (!empty($_POST['id']) && isset($_POST['edytuj']))
  10. {
  11. $akcja_1 = 'Edytuj wpis';
  12. $akcja_2 = 'Dodaj poprawiony';
  13. $id = (int)$_POST['id'];
  14. $wynik = dbSelect("SELECT wpis FROM $table_name WHERE id = $id");
  15. $input_id = '<input type="hidden" name = "id" value = "' . $id . '"/>';
  16. } else
  17. {
  18. $akcja_1 = 'Nowy wpis';
  19. $akcja_2 = 'Dodaj wpis';
  20. // Dodanie nowego wpisu
  21. if (!empty($_POST['wpis']) && $_POST['dodaj'] == 'Dodaj wpis')
  22. {
  23. $wpis = mysql_real_escape_string($_POST['wpis']);
  24. // Tu dodajemy wpis i inne dane do bazy
  25. dbInsertUpdate("INSERT INTO $table_name VALUES(null,'$wpis',NOW())");
  26. $wynik = dbSelect("SELECT id,wpis FROM $table_name WHERE id = LAST_INSERT_ID()");
  27. $dodano = '<h3 class = "p">DODANO WPIS</h3>';
  28. }
  29. // Dodanie poprawionego wpisu
  30. if (!empty($_POST['wpis']) && $_POST['dodaj'] == 'Dodaj poprawiony')
  31. {
  32. $id = (int)$_POST['id'];
  33. $wpis = mysql_real_escape_string($_POST['wpis']);
  34. // Dodajemy poprawiony wpis
  35. dbInsertUpdate("UPDATE $table_name SET wpis = '$wpis' WHERE id = $id");
  36. $wynik = dbSelect("SELECT id,wpis FROM $table_name WHERE id = $id");
  37. $dodano = '<h3 class = "p">DODANO POPRAWIONY WPIS</h3>';
  38. }
  39. if (isset($wynik))
  40. {
  41. // Tworzenie linku do odczytu wpisu
  42. $link = '<p class = "p"><a href ="' . $path . '?id=' . $wynik['id'] . '">' . $path .
  43. '?id=' . $wynik['id'] . '</a></p>';
  44. }
  45. }
  46. ?>
  47. <!DOCTYPE HTML>
  48. <html>
  49. <head>
  50. <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
  51. <style type="text/css">
  52. <!--
  53. #content{
  54. margin: 0 auto;
  55. height: auto;
  56. width: auto;
  57.  
  58. }
  59. .p{
  60. text-align: center;
  61. }
  62. textarea {
  63. margin: auto;
  64. display: block;
  65. height: 300px;
  66. width: 600px;
  67.  
  68. }
  69. -->
  70. </style>
  71. </head>
  72.  
  73. <body>
  74.  
  75. <div id="content">
  76. <form name = "formularz" action = "wpis.php" method = "post">
  77. <p class="p">ID wpisu: <input type="text" name="id" placeholder="ID" size="10" />
  78. <input type="submit" name="edytuj" value="Edytuj" /></p>
  79. <?=isset($input_id) ? $input_id : ''?>
  80. <p class="p"><?=$akcja_1?>:</p>
  81. <textarea name="wpis"><?=isset($wynik['wpis']) ? $wynik['wpis'] : ''?></textarea>
  82. <p class="p"><input type="submit" name="dodaj" value="<?=$akcja_2?>" /></p>
  83. </form>
  84. <?=isset($dodano) ? $dodano : ''?>
  85. <?=isset($link) ? $link : ''?>
  86. </div>
  87.  
  88. </body>
  89. </html>
  90. <?php
  91.  
  92.  
  93. ?>


odczyt.php
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html" charset="utf-8"/>
  5. <style type="text/css">
  6. <!--
  7. #content{
  8. margin: 0 auto;
  9. text-align: center;
  10. margin-top: 50px;
  11. }
  12. -->
  13. </style>
  14. </head>
  15. <body>
  16. <?php
  17.  
  18. // Sprawdzanie czy jest uid
  19. if (!empty($_GET['id']))
  20. {
  21. // Walidacja uid
  22. preg_match('/^[0-9]+$/', $_GET['id'], $matches);
  23. include 'db_connect.php';
  24. // Pobranie wpisu z bazy
  25. $wynik = dbSelect("SELECT wpis FROM $table_name WHERE id = '$matches[0]'");
  26. // Zamiana \r\n na <br /> bo teraz będzie w divie wyświetlane a nie w textarea
  27. $wynik = str_replace("\r\n", '<br />', $wynik['wpis']);
  28. mysql_close($sql);
  29. echo '<div id = "content">' . $wynik . '</div>';
  30. } else
  31. {
  32. echo '<div id = "content"><h3>BRAK WPISU</h3></div>';
  33. }
  34.  
  35. ?>
  36. </body>
  37. </html>
groncholm
Czemu po wpisywaniu do bazy przez wpis.php nie wyświetla nic w odczyt.php? Wpis.php dane wprowadza prawidłowo do bazy mysql, lecz po uruchomieniu odczyt.php wyświetla się :"BRAK WPISU"
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.