Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarz się nie wysyła
Forum PHP.pl > Forum > Przedszkole
sher
Próbowałem połączyć kilka rzeczy (logowanie, newsy) znalezione w internecie. Jestem zielony w php, czy ktoś mógłby mi wyjaśnić, dlaczego wysłany komentarz nie trafia do bazy danych?
  1. <?php
  2. ini_set('display_errors', 'On');
  3. error_reporting(E_ALL | E_STRICT);
  4.  
  5. include "config.php";
  6. db_connect();
  7. check_login();
  8. $user_data = get_user_data();
  9.  
  10.  
  11. $adres = $_SERVER['REQUEST_URI'];
  12. $a = $_GET['kom'];
  13. $id = $_GET['id'];
  14. if(empty($id))
  15. {
  16. echo '<script>window.location.href="main.php"</script>'; # Przekierowanie, kiedy zmienna $_GET['id'] jest pusta
  17. }
  18. $sql1 = mysql_query("SELECT * FROM news WHERE id=$id LIMIT 1");
  19. $sql2 = mysql_query("SELECT * FROM comments WHERE post_id=$id");
  20. $nr = mysql_num_rows($sql2);
  21. $news = mysql_fetch_assoc($sql1);
  22.  
  23. echo'<h2>'.$news['tytul'].'</h2>
  24. <h3>'.$news['data'].'</h3>
  25. <p> '.$news['tresc'].'</p>
  26. <p align="right"><a href="news.php?id='.$news['id'].'">Komentarze ['.$nr.']</a>';
  27.  
  28. if(isset($a) && $a == 'dodaj')
  29. {
  30. $nazwa = $user_data['user_name'];
  31. $msg = substr(mysql_real_escape_string(htmlspecialchars($_POST['message'])),0,255);
  32. $data = date("F j, Y , g:i a");
  33. $ip=$_SERVER['REMOTE_ADDR'];
  34. if(empty($_POST['message']))
  35. {
  36. echo'wpisz wiadmość';
  37. }
  38. if(!empty($_POST['name']) && ($_POST['message']))
  39. {
  40. $sql = mysql_query("INSERT INTO `comments` (`id`,`post_id`, `autor`, `data`, `tresc`) VALUES (0,'$id','$nazwa,'$data','$msg')");
  41. echo '<script>window.location.href="news.php?id='.$news['id'].'"</script>';
  42. }
  43.  
  44.  
  45. }
  46. if($nr == 0)
  47. {
  48. echo 'Brak komentarzy.<br />';
  49. }
  50. else
  51. {
  52. include 'templates/comment.php';
  53.  
  54. }
  55. include 'templates/form.php';
  56. ?>


form.php
  1. <?php
  2. #wygląd formularza
  3. #pole z nickiem musi mieć name="name"
  4. #pole z tekstem musi mieć name="message"
  5. #akcja do której formularz prowadzi musi być 'action="'.$adres.'&kom=dodaj"'
  6. echo '
  7. <h4>Skomentuj</h4>
  8. <form action="'.$adres.'&kom=dodaj" method="post">
  9. <input id="name" name="name" type="text" style="display: none;" />
  10. <label for="message">Wiadomość</label>
  11. <textarea id="message" name="message" rows="10" cols="20" size="255"></textarea>
  12. <input class="button" type="submit" value="Dodaj" />
  13. </form>';
  14.  
  15. ?>


comment.php
  1. <?php
  2.  
  3. # Plik reprezentuje ogólny wygląd komentarzy. To co jest między {} po while oznacza wygląd jednego komentarza.
  4. #zmienne:
  5. # $nr - Liczba komentarzy
  6. # $adres - adres strony do kotwicy
  7. # $kome['id'] - id komentarza
  8. # $kome['data'] - data dodania komentarza
  9. # $kome['tresc'] - treść komentarza
  10. # $kome['ip'] - IP osoby która komentuje
  11. echo'<h4>'.$nr.' wpisów</h4>';
  12. while($kome = mysql_fetch_assoc($sql2)){
  13. echo '<fieldset><legend>'.$nazwa.' Pisze:</legend>
  14. <br/>
  15. <small>'.$kome['data'].'</small>
  16. <p>'.$kome['tresc'].'</p>
  17. </fieldset>';} #nie usuwać
  18.  
  19. ?>


config.php
  1. <?php
  2. // definiujemy dane do połączenia z bazą danych
  3. define('DBHOST', 'mysql.hostinger.pl');
  4. define('DBUSER', 'u310643226_asd');
  5. define('DBPASS', 'siema222');
  6. define('DBNAME', 'u310643226_asd');
  7.  
  8. function db_connect() {
  9. // połączenie z mysql
  10. mysql_connect(DBHOST, DBUSER, DBPASS) or die('<h2>ERROR</h2> MySQL Server is not responding');
  11. // wybór bazy danych
  12. mysql_select_db(DBNAME) or die('<h2>ERROR</h2> Cannot connect to specified database');
  13. }
  14.  
  15. function db_close() {
  16. }
  17.  
  18. function clear($text) {
  19. // jeśli serwer automatycznie dodaje slashe to je usuwamy
  20. $text = stripslashes($text);
  21. }
  22. $text = trim($text); // usuwamy białe znaki na początku i na końcu
  23. $text = mysql_real_escape_string($text); // filtrujemy tekst aby zabezpieczyć się przed sql injection
  24. $text = htmlspecialchars($text); // dezaktywujemy kod html
  25. return $text;
  26. }
  27.  
  28. function codepass($password) {
  29. // kodujemy hasło (losowe znaki można zmienić lub całkowicie usunąć
  30. return sha1(md5($password).'#!%Rgd64');
  31. }
  32.  
  33. // funkcja na sprawdzanie czy user jest zalogowany, jeśli nie to wyświetlamy komunikat
  34. function check_login() {
  35. if(!$_SESSION['logged']) {
  36. die('<script>window.location.href="notloged.php"</script>');
  37. }
  38. }
  39. // funkcja na sprawdzenie czy user jest niezalogowany
  40. function check_login2() {
  41. if($_SESSION['logged']) {
  42. die('<script>window.location.href="main.php"</script>');
  43. }
  44. }
  45.  
  46. // funkcja na pobranie danych usera
  47. function get_user_data($user_id = -1) {
  48. // jeśli nie podamy id usera to podstawiamy id aktualnie zalogowanego
  49. if($user_id == -1) {
  50. $user_id = $_SESSION['user_id'];
  51. }
  52. $result = mysql_query("SELECT * FROM `users` WHERE `user_id` = '{$user_id}' LIMIT 1");
  53. if(mysql_num_rows($result) == 0) {
  54. return false;
  55. }
  56. return mysql_fetch_assoc($result);
  57. }
  58.  
  59. // startujemy sesje
  60.  
  61. // jeśli nie ma jeszcze sesji "logged" i "user_id" to wypełniamy je domyślnymi danymi
  62. if(!isset($_SESSION['logged'])) {
  63. $_SESSION['logged'] = false;
  64. $_SESSION['user_id'] = -1;
  65. }
  66.  
  67. function showNews()
  68. {
  69. $sql1 = mysql_query("SELECT * FROM news ORDER BY id DESC");
  70. while($news = mysql_fetch_assoc($sql1))
  71. {
  72. $id = $news['id'];
  73. $sql2 = mysql_query("SELECT id FROM comments WHERE post_id=$id");
  74. $nr = mysql_num_rows($sql2);
  75. echo'<h2>'.$news['tytul'].'</h2>
  76. <h3>'.$news['data'].'</h3>
  77. <p> '.$news['tresc'].'</p>
  78. <p align="right"><a href="news.php?id='.$news['id'].'">Komentarze ['.$nr.']</a>';
  79. }
  80. }
  81. ?>
Turson
  1. $sql = mysql_query("INSERT INTO `comments` (`id`,`post_id`, `autor`, `data`, `tresc`) VALUES (0,'$id','$nazwa,'$data','$msg')");
  2. if($sql)
  3. echo '<script>window.location.href="news.php?id='.$news['id'].'"</script>';
  4. else
sher
Nadal żaden rekord nie przybywa :/
by_ikar
To nie miało naprawić tobie kod, ale miało wyświetlić błąd, jeżeli jest jakiś, a ty miałbyś go wrzucić tutaj. Włącz raportowanie błędów i powiedz czy gdzieś jakieś błędy się wyświetlają.
sher
Nie pokazało żadnego errora, lub też jestem ślepy. Sami możcie zobaczyć: http://gamingadventure.besaba.com/logowanie.html
login i hasło: 123
I tam wejdźcie w komentarze i spróbujcie coś napisać ;f
nospor
Odpalasz zapytanie gdy ten warunek jest spelniony

if(!empty($_POST['name']) && ($_POST['message']))

A ten warunek nigdy nie jest spelniony, gdyz ty zawsze formem wysylasz puste NAME.....

A tu masz garsc wskazowek:
Temat: Jak poprawnie zada pytanie
i sie do nich zastosuj

ps: przenosze na przedszkole i tam tez zakladaj ewentualne kolejne tematy
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.