|
|
|
|
|
для: olegs7
(14.03.2009 в 15:10)
| | Приколько общаться самому с собой))
Хочется получить что-то типа
http://www.itsavesyou.com/TextArea_Resizer_example.htm
Но только, чтобы ресайз происходил самостоятельно, чтобы пользователь не мог увеличивать поле самостоятельно. | |
|
|
|
|
|
|
|
для: olegs7
(13.03.2009 в 20:31)
| | Продолжил копаться. Сделал, но присутствуют баги:
- Если писать на русском, то получам текст непонятной кодировки.
- При добавлении нескольких комментов одним человеком, будет виден только последний. Т.е. надо поставить в файле script_page.php цикл, в который передавалось бы кол-во строк опраленных одним человеком подряд.
А так же не понял ещё как сделать, чтобы при довольно длинном сообщении прокрутка в textarea не появлялась, а само поле формы ползло вниз.
файл index.php
<html>
<head>
<title>Ajax Comment</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<table width="200px" cellspacing="0" cellpadding="5" border="0">
<tr>
<td><strong>Имя :</strong></td>
<td><input type="text" id="text_content1"></td>
</tr>
<tr>
<td><strong>E-Mail :</strong></td>
<td><input type="text" id="text_content2"></td>
</tr>
<tr>
<td><strong>Комментарий :</strong></td>
<td><textarea rows="4" cols="30" id="text_content3"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center" >
<input type="submit" value="Отправить" onMouseUp="getScriptPage('output_div','text_content1','text_content2','text_content3','1','x')">
<input type="button" onClick="reset('text_content1','text_content2','text_content3')" value="Очистить">
</td>
</tr>
<tr><td></td><tr>
<tr><td colspan=2><div id="output_div"></div></td><tr>
<?php
if (is_file("news.dat") and filesize("news.dat") > "0")
{
$file=file("news.dat"); $count=count($file);
do {$count--; $dt=explode("|", $file[$count]);
$dt[0]=date("d.m.Y H:i:s",$dt[0]);
print"
<tr><td colspan=2>
$dt[0]<br>
<b>$dt[1]</b><br>
$dt[3]<br><br>
</td></tr>
";
}
while ($count > "0");
}
?>
</table>
</body>
</html>
|
файл ajax.js
// ajax
subject_id = '';
function handleHttpResponse() {
if (http.readyState == 4) {
if (subject_id != '') {
document.getElementById(subject_id).innerHTML = http.responseText;
}
}
}
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
// js
function getScriptPage(div_id,content_id1,content_id2,content_id3,more_options,act_id)
{
subject_id = div_id;
content1 = document.getElementById(content_id1).value;
content2 = document.getElementById(content_id2).value;
content3 = document.getElementById(content_id3).value;
switch(more_options)
{
case '1':
{
http.open("GET", "script_page.php?val1=" + escape(content1)+"&val2=" + escape(content2)+"&val3=" + escape(content3), true);
}
break;
}
http.onreadystatechange = handleHttpResponse;
http.send(null);
document.getElementById(content_id1).value="";
document.getElementById(content_id2).value="";
document.getElementById(content_id3).value="";
}
function reset(content_id1,content_id2,content_id3)
{
document.getElementById(content_id1).value="";
document.getElementById(content_id2).value="";
document.getElementById(content_id3).value="";
}
|
файл script_page.php
<?php
$name=$_GET['val1'];
$email=$_GET['val2'];
$comment=$_GET['val3'];
// время_добавления
$date=mktime();
// Данные: время_добавления|сообщение|
$text="$date|$name|$email|$comment|";
// запись данных в файл
$fp=fopen("news.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("news.dat", 0644);
if (is_file("news.dat") and filesize("news.dat") > "0")
{
$file=file("news.dat"); $count=count($file)-1;
$dt=explode("|", $file[$count]); $dt[0]=date("d.m.Y H:i:s",$dt[0]);
print"
$dt[0]<br>
<b>$dt[1]</b><br>
$dt[3]<br><br>
";
}
?>
|
| |
|
|
|
|
|
|
| Долго искал, но так и не нашёл.
Задача: Необходимо публиковать соощения на странице без её перезагрузки.
Имеется следующий файл comment.php с кодом:
<?php
if ($_GET['event'] == "add")
{
// Получаем данные из формы при registr_globals=off
if (isset ($_POST['comment'])) {$comment=$_POST['comment'];}
else {$comment="";}
// время_добавления
$date=mktime();
// Данные: время_добавления|сообщение|
$text="$date|$comment|";
// запись данных в файл
$fp=fopen("news.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
@chmod("news.dat", 0644);
print "
<script language=\"Javascript\">
function reload() {location = \"comment.php\"};
setTimeout('reload()', 1000);
</script>
";
exit;}
print"
<tr><td>
<form action=\"comment.php?event=add\" method=\"post\">
<textarea rows=\"4\" cols=\"40\" name=\"comment\"></textarea><br>
<input type=\"submit\" value=\"Добавить\">
</form>
</td></tr>
";
if (is_file("news.dat") and filesize("news.dat") > "0")
{
$file=file("news.dat"); $count=count($file);
if ($count>1) {
do {$count--; $dt=explode("|", $file[$count]);
$dt[0]=date("d.m.Y H:i:s",$dt[0]);
print"<tr><td>$dt[0]<br>$dt[1]<br></td></tr>";
}
while ($count > "0");
}
}
?>
|
При добавлении сообщения происходит запись в файл news.dat и последующее его чтение.
Было бы так же здорово узнать, как при довольно длинном сообщении прокрутка в textarea не появлялась, а само поле формы ползло вниз.
Вопрос актуальный. Буду рад помощи. Спасибо. | |
|
|
|
|