Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Wpisywanie dużych tekstów do tablicy, i przy okazji przepełnienie stosu
pikornecki
post 18.10.2011, 21:39:02
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 27.07.2010

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


Witam, mam pewien duży problem.

Pracuję z edytorem CKEditor. Wysyłam treść do bazy danych. Chciałbym teraz zmienić tą treść za pomocą tego samego formularza (pod textarea podpięty CKEditor). Formularz składa się z tego textarea oraz selecta. W momencie zmiany selecta powinna wpisać się treść z odpowiedniego miejsca z bazy danych. Można to zrobić ajaxem, wiem niemniej jednak ja robię to tak (pseudokod):

1. pobierz za pomocą php info z bazy


$q = "SELECT id, name FROM tabela ORDER BY id";y
$r = mysqli_query($dbc, $q);
if (mysqli_num_rows($r) >= 1) {
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$maxId = $row['id'];
$bookmarkContent[$row['id']] = $row['bookmarkContent'];
}
}
2. mam więc tablicę z pobranymi argumentami pora wtrącić to do javascript

echo '
<script language="JavaScript" type="application/javascript">
var tablica = new Array();
';
for ($i = 1; $i <= $maxId; $i++) {
$tekst = htmlspecialchars_decode($bookmarkContent[$i]);
$tekst = str_replace('&nbsp', '<br />', $tekst);
print "tablica[$i] = '$tekst';";
}
3. a następnie funkcja ''wpychająca'' te texty do wyswiga
echo 'function zakladkaDoEdycji2(form)
{
yourInt = parseInt(form);
CKEDITOR.instances.bookmarkEditor.setData(tablica[form]);
}
</script>';

Wywołanie funkcji wygląda tak

onchange="zakladkaDoEdycji2(this.form.changableBookmarksList.value)"

a name obiektu(textarea) to bookmarkEditor

I teraz pojawia się problem bo jak do jednego elementu tablicy jest wpisywany bardzo długi tekst to się wykrzacza. Z tej strony http://www.truuck.boleslawiec.pl/przepe%C5...enie_stosu.html dowiedziałem się (czego domyślałem się wcześniej) że przepełniam tablicę a tym samym stos. pytanie jak to zrobić żeby działało.

W skrócie zmiana selekta ma spowodować wpisanie tekstu z bazy danych do textarea do którego podpięty jest wyswig. JAK TO ZROBIĆ?

Ten post edytował pikornecki 18.10.2011, 21:40:07
Go to the top of the page
+Quote Post
zegarek84
post 18.10.2011, 21:59:11
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


może daj tą stronę live...

jestem ciekaw jednego fragmentu w Twoim kodzie:
Kod
print "tablica[$i] = '$tekst';";

czy w tym tekście nigdy nie wystąpi pojedynczy apostrof?? - nie wydaje mi się by był on znakiem specjalnym ;p - może jednak konsola coś pokazuje...

i a propo treści z strony do której podałeś linka
Cytat
Inną przyczyną przepełnienia stosu jest próba stworzenia dużej tablicy na stosie. Rozwiązaniem jest zwykle przydzielanie pamięci dynamicznie.

JS jest dosyć mocno dynamicznym językiem, poza tym po drodze tworzysz dynamicznie tablicę deklaracją new Array(); wink.gif


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
pikornecki
post 18.10.2011, 23:14:45
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 27.07.2010

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


ok znam już prawdopodobną odpowiedź:

Multiline Strings

teraz więc pytanie, jak z takiego stringa:


'<p>
&nbsp;</p>
<p class="p1" style="text-align: center; ">
<span style="color:#ff0000;"><span style="font-size:18px;"><b>STOLARSKI &nbsp;ZAKŁAD &nbsp;USŁUGOWO - PRODUKCYJNY</b></span></span></p>
'

zrobić takiego co zastąpi mi nową linię na znak ' \ ' tak jak na tej stronie:

http://www.strzelecki.info/2011/05/26/mult...ngs_javascript/
Go to the top of the page
+Quote Post
zegarek84
post 18.10.2011, 23:48:22
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


znak nowej linii w windowsie to \r\n, w linuxie to \r, w macu to \n więc znaki specjalne \r i \n mógłbyś zamieniać na spacje gdyż tak jest wyświetlana nowa inia w html'u i nie piszę o br - ale to tak k' woli tego o co bezpośrednio pytałeś...

w zrobisz duuuużo lepiej jeśli lukniesz na funkcję w php json_encode czy podobnie się zwie i już po problemie szybka konwersja Twojej tablicy jedną funkcją wink.gif


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
pikornecki
post 19.10.2011, 00:05:12
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 27.07.2010

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


no i bym powiedział ZAJE..ŚCIE zegarek84 pomogłeś smile.gif funkcja json_encode pozbawiła mnie jakichkolwiek problemów i wszystko działa smile.gif
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: 1.05.2025 - 04:35