Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL](TinyMCE) Zapisywanie kodu HTML do bazy SQL
andree127
post 24.05.2008, 20:29:59
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.05.2008

Ostrzeżenie: (0%)
-----


Rozwiązanie pewnie jest banalne, ale od kilku godzin nie mogę go wymyślić.
Chcę zrobić prosty system zarządzania treścią dla właściciela strony. Zrobiłem formularz z 'textarea' i do niego pobieram treść danej podstrony z bazy danych MySQL. W ty 'textarea' można zmienić treść i potem jest to zapisywane do bazy. Działa super.
Problem pojawia się w momencie jak podpinam pod to edytor TinyMCE. Tekst do bazy jest zapisywany cały czas niesformatowany. Czyli na sucho, bez zmian z TinyMCE.
Podejrzewam że trzeba coś pokombinować z addslashes() i stripslashes() ale nie znam składni i nie wiem za chiny jak to zrobić. I czy to na pewno to.

skrypt wygląda tak:
Kod
<code>$query = 'SELECT * FROM nazwa_tabeli WHERE id=0';
        if(!$result = mysql_query($query, $db_lnk)){
          echo('Wystąpił błąd: nieprawidłowe zapytanie...<BR>');
          @mysql_close();
          exit;
        }
        while($row = mysql_fetch_row($result)){
          echo("
            <form method=\"post\"  action=\"skrypt_edit.php\">
            <input type=\"hidden\" value=\"0\" name=\"id\">
            <textarea name=\"opis\"  rows=\"15\" cols=\"60\">$row[1]</textarea>
            <input type=\"submit\" value=\"Zatwierdź\">
            </form>
            ");    
          }

skrypt obsługi edycji (skrypt_edit.php) tutaj:
Kod
if (isset($_POST['opis'])):  
                $id = $_POST['id'];
                $opis = $_POST['opis'];
                
                $sql = "UPDATE nazwa_tabeli SET
                              opis='$opis'
                          WHERE id='$id'";
                if (mysql_query($sql))    {
                    echo '<p>Zaktualizowano</p>';
                }    else {
                    echo '<p>Problem aktualizacji</p><p>' . mysql_error() . '</p>';
                    }    
          endif;

Z góry dzięki za pomoc i chęci.

Ten post edytował andree127 24.05.2008, 21:59:51
Go to the top of the page
+Quote Post
XDocTorX
post 24.05.2008, 21:32:38
Post #2





Grupa: Zarejestrowani
Postów: 48
Pomógł: 6
Dołączył: 16.07.2006
Skąd: Jarosław

Ostrzeżenie: (0%)
-----


addslashes() dodaje \ przed znakami ( \ ) ( ' ) ( " )

  1. <?php
  2. $s='<div id="as">';
  3. //wynik : <div id=\"as\">
  4. ?>


stripslashes() usuwa \ jednak jeśli wystąpią dwa pod rząd tj. \\ to zwróci \

Pewnie masz jakiś problem w zapytaniu tj. z " także przed wysłaniem spróbuj dodać addslashes() a po pobraniu przed wyświetleniem treści użyj stripslashes()

Ten post edytował XDocTorX 24.05.2008, 21:33:32
Go to the top of the page
+Quote Post
andree127
post 24.05.2008, 21:58:50
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.05.2008

Ostrzeżenie: (0%)
-----


Niestety. Cały czas to samo. Albo ja źle z tej funkcji korzystam, albo problem tkwi w czym innym. A dopisałbyś do mojego kodu jak uważasz że powinno być addslashes() użyte? Na moim konkretnym przykładzie - może coś ze składnią chrzanię blinksmiley.gif
Go to the top of the page
+Quote Post
XDocTorX
post 24.05.2008, 22:34:56
Post #4





Grupa: Zarejestrowani
Postów: 48
Pomógł: 6
Dołączył: 16.07.2006
Skąd: Jarosław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $query = 'SELECT * FROM nazwa_tabeli WHERE id=0';
  3. if(!$result = mysql_query($query, $db_lnk)){
  4. echo('WystÄ…piĹ‚ bĹ‚Ä…d: nieprawidĹ‚owe zapytanie...<BR>');
  5. }
  6. while($row = mysql_fetch_row($result)){
  7. $opis= stripslashes($row[1]);
  8.  $s = '<form method="post" action="skrypt_edit.php">
  9. <input type="hidden" value="0" name="id">
  10. <textarea name="opis" rows="15" cols="60">'.$opis.'</textarea>
  11. <input type=\"submit\" value=\"ZatwierdĹş\">
  12. </form>';
  13. }
  14. ?>


  1. <?php
  2. if (isset($_POST['opis'])):
  3. $id = $_POST['id'];
  4. $opis = addslashes($_POST['opis']);
  5.  
  6. $sql = 'UPDATE nazwa_tabeli SET
  7. opis="'.$opis.'"
  8. WHERE id="'.$id.'"';
  9. if (mysql_query($sql)) {
  10. echo '<p>Zaktualizowano</p>';
  11. } else {
  12. echo '<p>Problem aktualizacji</p><p>' . mysql_error() . '</p>';
  13. }
  14. ?>
Go to the top of the page
+Quote Post
andree127
post 25.05.2008, 11:18:02
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 24.05.2008

Ostrzeżenie: (0%)
-----


Pomogło o tyle, że zrozumiałem że mój kod php nie był taki zły i problem leży gdzieś indziej. Okazało się że w TinyMCE trzeba skonfigurować znaczniki z których pozwala się korzystać. Myślałem że jak ikonka (np. cool.gif jest dostępna w edytorze to już cały sukces, a tu nie do końca winksmiley.jpg
W każdym razie dzięki za pomoc!

Ten post edytował andree127 25.05.2008, 12:11:27
Go to the top of the page
+Quote Post
-lllllllllllllll-
post 6.04.2012, 11:00:12
Post #6





Goście







headsetsmiley.png arrowheadsmiley.png wnsmileyanim:
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 23:25