Jump to content
  • 0

Checkbox. <a> И события


AddM
 Share

Question

Recommended Posts

  • 0

Началось! Кто ещё мораль прочитает? Сижу и читаю, пока ничего не получается, делал через яву, через пхп (функции), от того что пока не хватает знаний в этой области и задал на форуме вопрос,

А для чего тогда нужен форум и раздел "Для начинающих"?

Link to comment
Share on other sites

  • 0

А для чего тогда нужен форум и раздел "Для начинающих"?

Для того, чтобы задавать вопросы, если что-то не получается. Правильный вариант вопроса: «надо сделать такую-то штуку, я делал так, но не работает, потом попробовал эдак и тоже не работает, что не так?» А тут просто предложение сделать работу за тебя — такое здесь не поощряется — разве что за деньги..

Link to comment
Share on other sites

  • 0

На странице по дефолту выводится таблица из БД где в id внедряется checkbox, он мне нужен для редактирования этих строк, например, добаление заметок, статуса и т.д.(код этого функционала не стал выкладывать, много займёт места). далее решил, что будет удобней, если при нажатии на ссылку галачка будет автоматом ставиться для удобства редактирования, пытался через функцию, но не рабтает так как надо, ни как не работает собитие onclick. А если в input type='checkbox' вставить этот параметр checked='$a1' или (".$a1."), то автоматически ставятся галочки, т.к. в html параметр checked это и есть галочка. Вот и пытался при помощи переменной решить это и не получается. Поэтому решил спросить здесь. Ниже можно всё увидеть.


<?php
require_once ("./имя_файла.php");
?>
function Test ()
{
$a1=checked;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тут текст</title>
<link href="имя_файла.css" rel="stylesheet" type="text/css">

<div id="имя_идишника">
<?php

$result = mysql_query ("SELECT * FROM DB ORDER by name ASC;",$link);
echo "<table border=0 width=''>";
echo "<tr>
<td >"."id"."</td>
<td id='v_l'></td>
<td>"."id_области"."</td>
<td id='v_l'></td>
<td>"."Наименование филиала"."</td>
<td id='v_l'></td>
<td>"."Адрес филиала"."</td>
<td id='v_l'></td>
<td>"."Хост филиала"."</td>
<td id='v_l'></td>
<td>"."Ссылка на камеру"."</td>
<td id='v_l'></td>
<td>"."Статус Проверки"."</td>
<td id='v_l'></td>
<td>"."Статус Работы"."</td>
<td id='v_l'></td>
<td>"."Заметки"."</td>
<td id='v_l'></td>
<td>"."Статус"."</td>
<td id='v_l'></td>
<tr>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
</tr>";
while ($myrow = mysql_fetch_array ($result))
{
echo "<tr>
<td><input type='checkbox' name='checkd[]' value='".$myrow['id']."' ".$a1.">".$myrow['id']."</td>
<td id='v_l'></td>
<td>".$myrow['obl']."</td>
<td id='v_l'></td>
<td>".$myrow['name']."</td>
<td id='v_l'></td>
<td>".$myrow['addres']."</td>
<td id='v_l'></td>
<td>".$myrow['hs']."</td>
<td id='v_l'></td>
<td>"."<a href="."http://".$myrow['sil']." target='_blank' onclick='Test()'>"."http://".$myrow['sil']."</a>"."</td>
<td id='v_l'></td>
<td>".$myrow['prov']."</td>
<td id='v_l'></td>
<td>".$myrow['rab']."</td>
<td id='v_l'></td>
<td>".$myrow['textp']."</td>
<td id='v_l'></td>
<td>".$myrow['status']."</td>
<td id='v_l'></td>
</tr>
<tr>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
<td id='h_l'></td>
</tr>";
}
echo "</table>";
?>
</div>
</body>
</html>

"h_l" и "v_l" это графические границы для таблицы.

Link to comment
Share on other sites

  • 0

document.getElementById('chbox').checked='true';

Написал пост - 5 коп.

Знал, что написать - 19 руб, 95 коп.

Реквизиты для отправки вознаграждения у меня в подписи

а ты переставай лепить html-код в echo. Лучше закрой php-тэг и пиши просто текст. А то тебе нужна php-вставка, а ты делаешь html-вставку в php с кучей кавычек.

И ещё, ВСЕ ПАРАМЕТРЫ ДОЛЖНЫ БЫТЬ В КАВЫЧКАХ!!! Все, а не только те, которые тебе больше нравятся

Убери width из table и вынеси его в css

<td > странный тэг

Не должно быть повторяющихся идентификаторов! Это запрещено ваще! Было бы у тебя две печени, ты бы это понял. А судя по твоему коду, не две печени, а сорок две.

<td>"."<a href="."http://"
Зачем тут две лишних конкатенации и где кавычки у href?
<td>".$myrow['prov']."</td>
Ты используешь двойные кавычки, так зачем ты переменные выносишь из них? Зачем тогда вообще тебе двойные кавычки? Пиши одинарными, так быстрее работает.
echo "<table border=0 width=''>";

echo "<tr>

А чё бы каждую строку в echo не взять?
if ($i == 1) $checked=' checked="checked"';

else $checked='';

echo '<input type="checkbox"'.$checked.'>';

Такой вариант почему не попробовал?

PHP (что за константа checked?)

function Test ()

{

$a1=checked;

}

Javascript
<a href="."http://".$myrow['sil']." target='_blank' onclick='Test()'>

Рукалицо.png

Link to comment
Share on other sites

  • 0

Потому что с пхп начал и кавычки для меня уже привычное дело, а там где их нет не ругается интерпиритатор, хавает и всё выполянет. Width у меня для теста как был изначально, так и остался.

Зато 42 печени на доноры можно сдать и людей спасти :facepalmxd:

Чем <td> странный? Обычный тег из таблицы, который взят с вашего же сайта.

не-не переменные надо двойными, если одинарными он ругается при обработке скрипта.

Вот мне один тоже говорил "в файле.php все вставки html пиши через echo", но я его не слушал и пишу ток половину через echo, мне так воспринимать код проще.

потому что у меня сейчас мозг разрывается от этого личного проекта, в голове каша html, css, php, mysql пару месяцев с этим работаю и проект этот надо уже показать, а по сути эта мелкая ИС в ней ещё много разных функций, которые не выложил, там кода много и во всякой извращённой форме написано, т.к. всё пишется по мере роста знаний и времени нет пока переверстать всё адекватно... + с сегодняшней темой переключился на яву, которой вообще не знаю, за неё теперь садиться надо, т.к. пхп перезагружает страницу, а мне не надо лишний раз их перезагружать, а ява выполняет на лету, а точнее всё как надо. Из всего что у меня сегодня получилось с явой это я смог добиться передачи и вывод перемнных по событию onclick через alert(var); из пхп в яву.

и вообще сегодня пятница...

PHP (что за константа checked?)

function Test ()

{

$a1=checked;

}

это я пытался в input type=checkbox вставить в переменную это значение, а переменная просто находилась в теге input

типа так:

<input type="checkbox" name="check[]" value="" ".$a1.">

Думал будет работать! Эксперементировал.

if ($i == 1) $checked=' checked="checked"';

else $checked='';

echo '<input type="checkbox"'.$checked.'>';

Такой вариант почему не попробовал?

Вот этот вариант я уже начал сегодня пробовать через яву, но пока не получается.

Edited by AddM
Link to comment
Share on other sites

  • 0

этот вариант как раз на php, а как сделать яваскриптом (не путать с явой), я написал первой строкой.

<td > был странным из-за пробела.

Одинарные кавычки прекрасно работают. Переменные выноси за кавычки, как ты и делаешь. А если уж взялся использовать двойные, то пиши переменные внутри них. Если у тебя массив, возьми переменную в фигурные скобки.

Если ты знал, что проект будет больше 1-2 кб, нужно было заранее разносить всё по разным файлам. html-шаблоны наклепать, потом подгружать их, код на функции разбить. Сразу кодить что-либо на яваскрипте не советую, лучше сперва поучить. А если тебе ещё и IE нужен, то вообще геморройно, у этого IE половина функций не проходит. Я вот книжку читаю, так у него всё своё. И обработчики событий и создание обработчиков и что-то там с атрибутами.

Кому нужна печень мутанта? Исправляй id. Они тебе точно нужны-то?

Link to comment
Share on other sites

  • 0

Хорошо попробую. ID я использую для вставки графических сигментов, мелких много, просто попробовал так сделать можно и без них, в таблице.

А css файл к примеру у меня отдельно, скрипт на пхп, который удаляет из базы тоже отдельно, как тот что добавляет. Сначала закончу первый этоап потом уже разобъю на куски и разными файлами с подгрузкой перевесртаю для простоты понимания, пока буду писать много кода в одном файле.

Link to comment
Share on other sites

  • 0


function Test()
{
document.getElementById('check').checked='true';
}

Так работает, но у меня же строится таблица из массива записей, точнее записи из таблицы в массив помещаются и выводится множество строчек с чекбоксами, получается на какую ссылу не нажму выделяется всегда только 1-й. Можно как-то массив в хтмл задать или через яву, что бы чекбокс стаивлся там где я ссылку нажимаю?

Может можно сделать, например, что бы и в чексбоксе и в ссылке генерился массив идишников, а потом в функции проверка на совпадения,е сли равны, то отмечаем чекбокс иначе нет. Такое возможно?

Edited by AddM
Link to comment
Share on other sites

  • 0

Хм... сделал так (вариант таблицы урезаный):



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Админка</title>
<link href="begin.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function Test(id)
{
document.getElementById('check'+id).checked='true';
}
</script>

<?php

$result = mysql_query ("SELECT * FROM cam ORDER by name ASC;",$link);
echo "<table border=0 width=''>";
echo "<tr>
<td >"."id"."</td>
<td>"."Адрес филиала"."</td>
<td>"."Ссылка на камеру"."</td>
</tr>"
while ($myrow = mysql_fetch_array ($result))
{
echo "<tr>
<td><input type='checkbox' name='checkd[]' value='".$myrow['id']."' id='check' >".$myrow['id']."</td>
<td>".$myrow['addres']."</td>
<td>"."<a href="."http://".$myrow['sil']." target='_blank' onclick='Test(".$myrow['id'].")'>"."http://".$myrow['sil']."</a>"."</td>
</tr>";
}
echo "</table>";

Список создаётся у меня динамически, т.е. при выполеннии скрипта выводится таблица с количеством записей сколько их в БД, если 100, то рисует 100, значит 100 ссылок, 100 разных адресов и 100 чекбоксов.

добавил сюда onclick='Test(".$myrow['id']." id, который присваивается каждой строке из БД. Если в обработчике функции пишу alert(id) то всё отл, он выводит верные id нажимая на ссылки, т.е. всё соответствует, но не работает, если нпаишу так document.getElementById('check'+id).checked='true';.

Я знаю что со статическим списком это прокатит легко, но с динамическим видимо нужно ещё что-то.

Link to comment
Share on other sites

  • 0

Ну так чекбоксы должны иметь соответствующие идентификаторы check1, check2, check3

О_О а как я им в динамическом массиве это впихну, если количество строк в таблице не постоянно? Т.е. то много стало, то часть удалилась... походу придётся это оставить и пока переключиться на перевёрстку и разбор явыскприт.

постой

у меня они есть же


value='".$myrow['id']."'

как можно в скрипте явы связать два тега по какми либо образом и напсиать проверку что если ид от чекбокса и ид от сслыки совпадают что чекед=true?

Edited by AddM
Link to comment
Share on other sites

  • 0

А так делать можно? Пытаюсь кнопку сделать с подтверждением на удаление, а то у меня просто удаляет.



function Test1()
{
if (confirm('Уверены?'))
{
<?php
require_once './editmain.php';
?>

}
else
{
alert("OR");
}
}

судя потому что не срабатывает вставки в яваскрипт из пхп нельзя делать?

Link to comment
Share on other sites

  • 0

Если ID совпадают, то разработчику нужно просто оторвать руки.

Ты что, не можешь в цикле while сделать инкремент счётчику? Ну тогда ты отдаёшь мне 100 рублей, в результате экономишь время, которое проводишь на этом форуме, а я делаю тебе чекбоксы с уникальными идентификаторами, да ещё такие, чтобы каждый из них переключался своей ссылкой. Разжёвано было уже всё, что можно, только собери по частям готовый код. И опять мимо.

Link to comment
Share on other sites

  • 0

Я учусь и лучше всего на примерах. метод восприятия у людей различается. Что значит, если ID совпадают?

Какие ID? Что ты под ID имеешь в виду? ID тега или ID БД каждой строчки?

Я про ID БД, где в БД есть, например, 3 поля: id(автоматически присваивается к любой новой строке), adres(ввод в ручную), sil(ссылка на ресурс-ввод в ручную).

так вот я всё это время псиал тебе про id из БД. Т.к. Удаление я смог сделать по ID из БД, т.е. ставлю галочку и жму удалить у меня удалется запись из БД и обновлется страничка, где уже нет той строки, но не получается сделать выделение по нажатию ссылки адекватно. Т.к. у меня нет статичных функци в виду того что БД постоянно изменяется все циклы на построение таблицы являются динамическими.

Вот пример где я чекбокс внедрил в поле ID из БД:


<td><input type='checkbox' name='checkd[]' value='".$myrow['id']."'-->(идентификатор из БД) id='check'-->(статичный идентификатор тега) >".$myrow['id']."</td>

<td>"."<a href="."http://".$myrow['sil']."-->(создание ссылки, IP берётся из БД и подставляется) target='_blank' onclick='Test(".$myrow['id'].")'-->(событие куда для проверки вставил id из БД, а не из тега.)>"."http://".$myrow['sil']."</a>"

с инкриментом я могу предположить только следующее:


<?php
$c:=0;
$result = mysql_query ("SELECT * FROM cam ORDER by name ASC;",$link);
echo "<table border=0 width=''>";
echo "<tr>
<td >"."id"."</td>
<td>"."Адрес филиала"."</td>
<td>"."Ссылка на камеру"."</td>
</tr>"
while ($myrow = mysql_fetch_array ($result))
{
$c=$c++;
echo "<tr>
<td><input type='checkbox' name='checkd[]' value='".$myrow['id']."' id='check' >".$myrow['id']."</td>
<td>".$myrow['addres']."</td>
<td>"."<a href="."http://".$myrow['sil']." target='_blank' id='".$c."' "onclick='Test(".$c.")'>"
."http://".$myrow['sil']."</a>"
."</td>
</tr>";
}
echo "</table>";

Завтра проведу испытания. Надоело, в голове каша от всего...

Link to comment
Share on other sites

  • 0

Твой "статичный идентификатор тега" повторяется у каждого чекбокса. Такого быть не должно. Поскольку чекбоксы ты формируешь в цикле, то добавляй к этому идентификатору значение счётчика цикла, так он станет уникальным.

Ты вставляешь в javascript-функцию значение ID из БД, и что эта функция должна с ним теперь сделать? У javascript в распоряжении только твоя страница, он не подозревает ни о каких там базах данных и о том, что вообще где-то есть сервер. Так что передавай идентификатор чекбокса. Но сперва сделай чтобы у каждого чекбокса он был уникален.

С инкрементом будет примерно так, да, только его же нужно и чекбоксу прикрутить, не только функции в параметр.

$c:=0;

Ну у нас же не Delphi, окстись.

$c=$c++;

Лишнее действие

$c++;

 id='".$c."'

Читается же плохо

 id='$c'

"onclick='Test(".$c.")'

Лишняя кавычка. И опять ".$c." можно заменить на $c

<td>"."<a href="."

А тут какая необходимость резать строку на три части? Почему не на 10?

Link to comment
Share on other sites

  • 0

Ну, я просто лёгких путей не ищу, думал может можно заставить яву рабоать с mysql внедрив в неё php. Это из области фантастики?))

Пусть пока строчки будут так разделенны, мне просто пока удобно так, потом как всё работать будет я уже перепишу код. Сначала я тоже терялся видя множество двойных кавычек, ну сейчас уже всё хорошо))

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy