0

ユーザーに情報をテキストエリアに入力させ、その情報をmysqlデータベースに保存するという問題があります。ユーザーは、次のような HTML をテキストエリアに挿入できます。

<ul>
  <li>Test</li>
</ul>

しかし、ユーザーが入力したデータを表示するためにデータベースから取得されているデータが、ユーザーが要求した正しい HTML 形式を表示していない理由がわかりません。

これは私が持っているものです: 情報の表示:

<?php
function display ($result) {
  if (mysql_num_rows($result) > 0) {
    echo "<form action='scripts/submit.php' method='post'>";
      echo "<input type='submit' name='post' value='Post'/>";
      echo " | ";
      echo "<label for='searchDate'>Search Archives By Date:</label>";
      echo "<input type='text' name='searchDate'>";
      echo "<input type='submit' name='submitDate' value='Search'/>";
      echo " | ";
      echo "<label for='searchTicket'>Search Archives By Ticket:</label>";
      echo "<input type='text' name='searchTicket'/>";
      echo "<input type='submit' name='submitTicket' value='Search'/>";
      echo "<hr/>";
    echo "</form>";
    echo "<table border='1' id='resultTable'>";
      while($row = mysql_fetch_assoc($result)) {
      $replace = str_replace ("\n","<br/>",$row['content']);
      echo "<tr>";
        echo "<td><span id='boldText'>Entry By:</span> ".$row['user']." | <span id='boldText'>Description:</span> ".$row['description']." | <span id='boldText'>Entry Date:</span> ".$row['date']."</td>";
      echo "</tr>";
      echo "<tr>";
        echo "<td>";
            echo "<p>".$replace."</p>";
        echo "</td>";
      echo "</tr>";
      echo "<tr>";
        echo "<td>";
          echo "<form action='scripts/submit.php' method='post'>";
            echo "<input type='hidden' name='count' value='$row[count]'/>";
            echo "<input type='submit' name='edit' value='Edit'/>";
            echo "<input type='submit' name='delete' value='Delete'/>";
          echo "</form>";
        echo "</td>";
      echo "</tr>";
          }
          echo "</table>";
      }
      else {
        echo "<h3 id='noResults'>Nothing has been posted yet.  Click 'Post' to add something to the whiteboard.</h3>";
        echo "<form action='scripts/submit.php' method='post'>";
          echo "<input type='submit' name='post' value='Post'/>";
        echo "</form>";
      }
}

?>

投稿ロジックを追加します。

if(isset($_POST['add_post'])) {
$content = mysql_real_escape_string($_POST['content']);
$description = mysql_real_escape_string($_POST['desc']);

  $query = "INSERT INTO $table_name (user, description, content)
            VALUES ('$_SESSION[logged_in]','$description', '$content')";
  $result = mysql_query($query);
  session_write_close();
  header('Location: ../whiteboard.php');
}

何らかの理由で上記の例は機能しませんが、次のようになります。

<p style="font-weight: 900;">Test</p>
4

2 に答える 2

1

htmlentities()またはnl2br()を使用してデータベースに挿入する前に解析し、それを取得するときに反対のことをしてみてください。

于 2012-05-14T04:08:00.783 に答える
0

ブラウザでデータベース エントリを表示している場合、実際のマークアップではなく、フォーマットされた HTML の結果が表示されます。必要な場合は htmlentities($result) を使用してください。

ページのソースを表示して、何が取得されているかを確認し、期待する内容とどのように異なるかを確認します。

于 2012-05-14T04:52:46.623 に答える