09/10/2018, 17:39

[Q] Nạp dữ liệu vào content của Textarea bằng PHP?

Chào các bạn,
Mình cần làm một chương-trình để nạp dữ liệu vào một database. Đó là table Điều-kiện sách (Technical specifications) cho các cuộc đấu thầu.
Table csc gồm :
int noart (tức số điều khoản)
varchar(255) artlibelle (tức Tiêu đề)
mediumtext arttexte (tức nội dung điều khoản)
varchar(10) artquanttype (tức kiểu, như đon vị của số lương)
float artquantite (tức số lương)
Và mình dùng MySQL với PHP để cho mọi người nhập vào, trong mạng LAN của sở làm.
Tất cả chạy được, nhưng chỉ có Textarea dùng nhập arttexte (bằng mediumtext) thì không biết cách nào dùng PHP cả, nên phải dùng : echo "mã lệnh JavaScript";
như : echo "document.forms[0].textareaname.value += $content;"
Nhưng bị báo lỗi khi $content dài quá (câu lệnh JavaScript không thể quá 256 bytes, và mình nhìn bằng Menu View/Source của browser thì thấy nó hiển thị cho mấy nghìn bytes.
Vậy mình phải chuyển cách đọc từng byte bằng PHP (do...while) để concat từ từ thì không bị báo lỗi, nhưng phải bỏ đi các newline vì nó làm xáo trộn JavaScript. Do đó cách trình bày bị hư đi.
Các bạn có biết cách nào khác không ? Nếu có thể bằng PHP thì rất tốt.
Đây là source : (comment bằng tiếng Pháp)

<?php
echo "<script> ";
// Remplir les zônes textarea 22/11/02

echo "document.f1.noart.value = '" . $noart . "'; ";
echo "document.f1.artlibelle.value = '" . $artlibelle . "'; ";
if ($artquanttype)
{echo "document.f1.artquanttype.value = '" . $artquanttype . "'; ";}
if ($artquantite)
{echo "document.f1.artquantite.value = '" . $artquantite . "'; ";}

// Concatener 1 par 1 caractère, pour remplir "arttexte" 25/11/02
$charact = "";
$charact2 = " ";
$wstr = $arttexte;
$longueur = strlen($wstr);
$compteur = 1;
$newline = Chr(13) . Chr(10);
if ($longueur > 0)
{
do {
$charact = substr($wstr, 0,1);
$charact2 = substr($wstr, 0,2);
if ($charact2 != $newline)
{/* éliminer new line qui cause error Javascript : 2 bytes 0D, 0A
Si apostrophe, change en ', si " change en "*/
if (($charact == "'") Or ($charact == """))
{echo "document.f1.arttexte.value += '\" . $charact . "'; ";}
else
{echo "document.f1.arttexte.value += '" . $charact . "'; ";}
}
else
{// Cas tombé sur un " ", à enlever 1 byte en plus
$wstr = substr($wstr, 1, $longueur - 1);
$longueur = $longueur - 1;
}
$wstr = substr($wstr, 1, $longueur - 1);
$longueur = $longueur - 1;
} while ($longueur > 0);
}
echo "</script> ";
?>
Thân
tulipden viết 19:42 ngày 09/10/2018
Mình chưa hiểu lắm ý của bạn. Có phải là điều khoản, tiêu đề thì sẽ không được sửa đổi, chỉ có nội dung điều khoản mới được sửa đổi thôi phải không, và nội dung đó được đưa vào trong textarea chứ gì?
Thế thì cái textarea của bạn thì bạn làm thế này

<textarea cols='gì đó' rows='gì đó' name='gì đó'>$arttexte</textarea>
nguyenthu viết 19:47 ngày 09/10/2018
Chào bạn,
Thì đúng là cái form cho phép nhập vào, sửa đổi và xoá đi v.v...
Nhưng mình làm được rồi, nhờ bạn chỉ cho syntaxe. Chương-trình trở thành vô cùng giản-dị.
Cám ơn bạn nhiều.
Thân
Bài liên quan
0