B
BlackShadow
Создаю чат. Там есть функция личных сообщений. Мне нужен код на яве (ну или на PHP в крайнем случае), который бы одним кликом выделял все чекбоксы рядом с сообщениями. Я бы и так нашел этот скрипт в гугле, если бы не одно "но".
Дело в том, что сообщения хранятся в двух таблицах мускула - inbox и outbox. Вытаскивать я их научился, но чтобы не париться с переменными, я сделал небольшую хитрую вещь, при которой происходит следующее:
Если обратить внимание на эту строчку:
<td align=\"center\"><input type=\"checkbox\" name=\"mails[".$id."]\"></td>,
то можно заметить, что при отправке формы, мы получим в POST['mails'] массив, в котором будут наши сообщения. Таким образом, я и смогу их удалять. Но зато изменилось решение в JS-коде, который основывается вот на чем:
form_name1 - это название формы, а cheks - это значение, указываемое в input атрибута name. Но как мы видим из моего примера с массивом в атрибуте name, здесь данный скрипт работать не будет, потому что name у каждого объекта разное.
Вот тут и проблема: как мне обойти эту проблему и сделать так, чтобы сообщения выделялись?
Дело в том, что сообщения хранятся в двух таблицах мускула - inbox и outbox. Вытаскивать я их научился, но чтобы не париться с переменными, я сделал небольшую хитрую вещь, при которой происходит следующее:
PHP:
for ($ii=1; $ii<=$count; $ii++){
$nn = $ii-1;
$toUser = mysql_result($tableMail,$nn,"toUser");
if ($toUser == $log){
$id = mysql_result($tableMail,$nn,"id");
$fromUser = mysql_result($tableMail,$nn,"fromUser");
$themeMess = mysql_result($tableMail,$nn,"themeMess");
$timeMess = mysql_result($tableMail,$nn,"timeMess");
$txtMess = mysql_result($tableMail,$nn,"txtMess");
$readable = mysql_result($tableMail,$nn,"readable");
if ($readable == 1){
$read = "Прочтено";
} else {
$read = "Не прочтено";
}
$sql = "UPDATE inbox SET readable='1' WHERE id='$id'";
$addData = mysql_query($sql);
$inboxStr .= "
<tr>
<td align=\"center\"><input type=\"checkbox\" name=\"mails[".$id."]\"></td>
<td>".$fromUser."</td>
<td>".$themeMess."</td>
<td>".$txtMess."</td>
<td align=\"center\" width=\"1%\">".$timeMess."</td>
<td align=\"center\" width=\"1%\">".$read."</td>
<td align=\"center\" width=\"1%\"><a href=\"mail.php?dir=write&toUser=".$fromUser."&themeMess=".$themeMess."\">Ответить</a></td>
</tr>
";
}
}
Если обратить внимание на эту строчку:
<td align=\"center\"><input type=\"checkbox\" name=\"mails[".$id."]\"></td>,
то можно заметить, что при отправке формы, мы получим в POST['mails'] массив, в котором будут наши сообщения. Таким образом, я и смогу их удалять. Но зато изменилось решение в JS-коде, который основывается вот на чем:
Код:
function sel_all(){
if(!document.form_name1.cheks) return;
if(!document.form_name1.cheks.length){
document.form_name1.cheks.checked = document.form_name1.cheks.checked ? false : true;
} else {
for(var i=0;i<document.form_name1.cheks.length;i++){
document.form_name1.cheks[i].checked = document.form_name1.cheks[i].checked ? false : true;
}
}
form_name1 - это название формы, а cheks - это значение, указываемое в input атрибута name. Но как мы видим из моего примера с массивом в атрибуте name, здесь данный скрипт работать не будет, потому что name у каждого объекта разное.
Вот тут и проблема: как мне обойти эту проблему и сделать так, чтобы сообщения выделялись?