Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Długi tekst
Forum PHP.pl > Forum > Przedszkole
baszar
Witam, zrobiłem sobie system newsów i mam problem gdyż jak chce wpisać długi tekst taki jak np.:


Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Wtedy pisze, że dodało normalnie informacja, ale wpis nie dodaje się do bazy. Tekst jest wklejany do edytora WYSWiG.


Co może byc?
kubek3898
Pole moze byc typu varchar z ograniczona iloscia znakow.
muk4
Skoro używasz edytora to sprawdź czy tekst jest w zmiennej i czy dobrze go przekazujesz do zapytania MySQL
baszar
W bazie typ jest TEXT ;/


Dobrze bo małe wiadomości przesyła bez problemu, jest problem z większymi
!*!
Kod jaki podałeś, wszystkich Nas oślepia.
baszar
Racja sorka


  1. <?php
  2. $tytul = $_POST['tytul'];
  3. $tresc = $_POST['tresc'];
  4. $autor = $_SESSION['nick'];
  5.  
  6.  
  7. if(isset($_POST['dodaj'])){
  8.  
  9. if(!$tytul || !$tresc) {
  10.  
  11. echo '
  12. <div class="nNote nFailure hideit">
  13. <p>Nie wypełniłeś wszystkich pól!</p>
  14. </div>
  15. ';
  16.  
  17. }else{
  18.  
  19. mysql_query("INSERT INTO news SET tytul='$tytul', tresc='$tresc', autor='$autor'");
  20.  
  21. echo '
  22. <div class="nNote nSuccess hideit">
  23. <p>Pomyślnie dodałeś newsa!</p>
  24. </div>
  25. ';
  26.  
  27. }
  28.  
  29. }
  30. ?>


  1. <form action="addNews.php" class="mainForm" method="POST">
  2.  
  3.  
  4.  
  5. <div class="rowElem"><label>Tytuł Newsa:</label><div class="formRight"><input type="text" name="tytul" class="rightDir" title="Wpisz tytuł newsa" /></div><div class="fix"></div>
  6. </div>
  7.  
  8.  
  9. <div class="widget">
  10. <div class="head"><h5 class="iPencil">Treść Newsa</h5></div>
  11. <textarea class="wysiwyg" rows="5" cols="" name="tresc"></textarea>
  12. </div>
  13. <br /><br />
  14. <input type="submit" value="Dodaj Newsa" class="greyishBtn submitForm" name="dodaj"/>
  15. </form>
!*!
Pokaż jeszcze zrzut z bazy, jej strukturę, bo może z tym polem text jest coś nie tak. I czy jesteś pewien że
  1. var_dump($tresc);
coś zwraca?
baszar
SS:

http://iv.pl/images/42068124509514957155.png


var_dump zwrócił

string(10335) i tekst
!*!
Pokaż jeszcze co zwraca mysql_error() http://pl.wikibooks.org/wiki/PHP/Jak_to_się_robiło_kiedyś%3F
baszar
Blad MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Trebuchet MS', sans-serif, Georgia, Courier, 'Times New Roman', serif; line-heig' at line 1
kamil_lk
  1. INSERT INTO news SET tytul='$tytul', tresc='$tresc', autor='$autor'

Jesteś pewny, że to zapytanie jest dobrze skonstruowane?
baszar
A dlaczego sądzisz, że jest źle, jeżeli dodaje krótkie tekst a długich nie chce?
kamil_lk
Nie spotkałem się jeszcze z tego typu zapytaniem.
Ogólnie insert wygląda tak:
  1. INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

A update tak:
  1. UPDATE table_name SET column1=value, column2=value2
StrefaPi
a nie powinno być tak:

  1. INSERT INTO news (tytul, tresc, autor) VALUES ('$tytul', '$tresc', '$autor');


druga sprawa dość ciekawy błąd, czy umieszczasz w bazie treść w postaci kodu html?

jak wygląda
  1. var_export($_POST);
_Borys_
Dlatego nie wsadza do bazy bo masz w zmiennej apostrof, zastosuj np. mysql_real_escape_string() do zmiennej a potem do bazy.
kamil_lk
I kolejna rzecz to filtracja danych przekazywanych do zapytania. Może to one Ci wszystko wysypują?
Użyj mysql_escape_string() do filtracji.
  1. $tytul = mysql_escape_string($_POST['tytul']);
  2. $tresc = mysql_escape_string($_POST['tresc']);
  3. $autor =mysql_escape_string( $_SESSION['nick']);


edit:
--- no i znaleźli się szybsi smile.gif
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.