|
|
|
| Всем добрый день! Уже пару дней ломаю голову над одним скриптом на ява-скрипт! Идея такая выводится из базы список значений всех полей и чекбоксы рядом с ними. При нажатии на чекбокс ява-скрипт должен перекинуть его значение в текстовый инпут внизу списка. Если использовать скрипт для массива значений не из базы а заданного в скрипте то всё ок. Как только начинаю работать с базой всё ломается и дебаггер пишет "object required" . В чём тут беда?
сразу скажу что в ява-скрипте я не спец. Заранее спасибо.
<?php
include ('dbIncl.php');
//$all_value=array(Вариант1,Вариант2,Вариант3,Вариант4);
mysql_select_db($database, $db);
$sql2= "SELECT CategoryRecID,CategoryEnglish FROM t_category ";
$result2 = mysql_query($sql2);
$myrow = mysql_fetch_array($result2);
$count = mysql_num_rows($result2);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8">
<script type='text/javascript'>
function union_chbox() {
// определим переменную
values="";
for (i = 0; i<<?php echo $count;?>; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
// записываем значения в обычный инпут
document.getElementById('values_str').value = values;
return (true);
}
</script>
</head>
<body>
<form name="formname" action="#">
<?php
for ($i=0; $i<$count,$myrow = mysql_fetch_array($result2); $i++) { // перебираем все значения массива
print "<input type='checkbox' name='box$i' value='$myrow[CategoryEnglish]' id='box$i' onClick='CheckUnckeckAll()'>$myrow[CategoryEnglish]";
}
?>
<!----Сюда записываем все ВЫБРАННЫЕ Значения---->
<input type="text" name="values" id="values_str" size="60" value=""/>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 16:58)
| | Запустите ваш код в браузере, нажмите пункты меню "Вид --> Исходный HTML-код", скопируйте его и выложите его здесь.
ВМЕСТО того, который вы выложили.
НИКТО, кроме вас не знает, что у вас выводится из БД.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: PAT
(29.07.2009 в 17:27)
| | Вывожу:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8">
<script type='text/javascript'>
function union_chbox() {
// определим переменную
values="";
for (i = 0; i<4; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
// записываем значения в обычный инпут
document.getElementById('values_str').value = values;
return (true);
}
</script>
</head>
<body>
<form name="formname" action="#">
<input type='checkbox' name='box0' value='Newspaper' id='box0' onClick='CheckUnckeckAll()'>Newspaper
<input type='checkbox' name='box1' value='Magazine' id='box1' onClick='CheckUnckeckAll()'>Magazine
<input type='checkbox' name='box2' value='Internet' id='box2' onClick='CheckUnckeckAll()'>Internet
<!----Сюда записываем все ВЫБРАННЫЕ Значения---->
<input type="text" name="values" id="values_str" size="60" value=""/>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 17:34)
| | ну а где ваша функция?
я про CheckUnckeckAll() | |
|
|
|
|
|
|
|
для: ride
(29.07.2009 в 17:40)
| | ой сори,вот так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8">
<script type='text/javascript'>
function union_chbox() {
// определим переменную
values="";
for (i = 0; i<4; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
// записываем значения в обычный инпут
document.getElementById('values_str').value = values;
return (true);
}
</script>
</head>
<body>
<form name="formname" action="#">
<input type='checkbox' name='box0' value='Newspaper' id='box0' onClick='return union_chbox()'>Newspaper
<input type='checkbox' name='box1' value='Magazine' id='box1' onClick='return union_chbox()'>Magazine
<input type='checkbox' name='box2' value='Internet' id='box2' onClick='return union_chbox()'>Internet<!----Сюда записываем все ВЫБРАННЫЕ Значения---->
<input type="text" name="values" id="values_str" size="60" value=""/>
</form>
</body>
</html>
|
перепутал источники... | |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 17:43)
| | у вас чекбоксов три, а в функции - 4 | |
|
|
|
|
|
|
|
для: ride
(29.07.2009 в 17:47)
| | я это тоже вижу и не могу понять где беда... в базе 4 записи | |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 17:52)
| | Понять не можете? А это вот от этого:
$myrow = mysql_fetch_array($result2); - уже извлекли строку из ресурса, а потом еще раз mysql_fetch_array() (в конце кода) делаете, но указатель то где будет при этом?
И вообще, переписать все, достаточно один раз и одного цикла while. И mysql_fetch_assoc() вместо mysql_fetch_array(). | |
|
|
|
|
|
|
|
для: sim5
(29.07.2009 в 18:03)
| | а и верно...спасибо щас попробую | |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 18:17)
| | поправил цикл PHP,чекбоксов стало 4, но ява скрипт всё равно не цепляется.... вот исходник:
<?php
include ('dbIncl.php');
//$all_value=array(Вариант1,Вариант2,Вариант3,Вариант4);
mysql_select_db($database, $db);
$sql2= "SELECT PublishLocationRecID,PublishLocationEnglish FROM t_publish_location ";
$result2 = mysql_query($sql2);
$count = mysql_num_rows($result2);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8">
<script type='text/javascript'>
function union_chbox() {
// определим переменную
values="";
for (i = 0; i<<?php echo $count;?>; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
// записываем значения в обычный инпут
document.getElementById('values_str').value = values;
return (true);
}
</script>
</head>
<body>
<form name="formname" action="#">
<?php
while ($myrow = mysql_fetch_assoc($result2)) { // перебираем все значения массива
print "<input type='checkbox' name='box$myrow[PublishLocationRecID]' value='$myrow[PublishLocationEnglish]' id='box$myrow[PublishLocationRecID]' onClick='return union_chbox()'>
$myrow[PublishLocationEnglish]";
}
?>
<!----Сюда записываем все ВЫБРАННЫЕ Значения---->
<input type="text" name="values" id="values_str" size="60" value=""/>
</form>
</body>
</html>
|
а вот то что видит браузер:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8">
<script type='text/javascript'>
function union_chbox() {
// определим переменную
values="";
for (i = 0; i<4; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
// записываем значения в обычный инпут
document.getElementById('values_str').value = values;
return (true);
}
</script>
</head>
<body>
<form name="formname" action="#">
<input type='checkbox' name='box1' value='Phone Book' id='box1' onClick='return union_chbox()'>Phone Book
<input type='checkbox' name='box2' value='Newspaper' id='box2' onClick='return union_chbox()'>Newspaper
<input type='checkbox' name='box4' value='Magazine' id='box4' onClick='return union_chbox()'>Magazine
<input type='checkbox' name='box5' value='Internet' id='box5' onClick='return union_chbox()'>Internet
<!----Сюда записываем все ВЫБРАННЫЕ Значения---->
<input type="text" name="values" id="values_str" size="60" value=""/>
</form>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 18:29)
| | дебаггер пишет : if (document.getElementById('box'+i).checked) is null | |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 18:29)
| | не хочется вам давать готовый ответ.
посмотрите внимательнее:
у вас получилось 4 чекбокса:
<input type='checkbox' name='box1' value='Phone Book' id='box1' onClick='return union_chbox()'>Phone Book
<input type='checkbox' name='box2' value='Newspaper' id='box2' onClick='return union_chbox()'>Newspaper
<input type='checkbox' name='box4' value='Magazine' id='box4' onClick='return union_chbox()'>Magazine
<input type='checkbox' name='box5' value='Internet' id='box5' onClick='return union_chbox()'>Internet
|
задайте себе вопрос: "Почему у них такие ID"?
далее посмотрите на свой яваскрипт цикл
for (i = 0; i<4; i++) {
// если чекбокс выбран
if (document.getElementById('box'+i).checked) {
// записываем в переменную
values = values+document.getElementById('box'+i).value+";";
}}
|
какие у вас тут айдишники?
делайте выводы | |
|
|
|
|
|
|
|
для: ride
(29.07.2009 в 18:41)
| | Наверно я вас не совсем понимаю... Вы имеете в виду то что ID в цикле пхп идут не по порядку? Если да то я пробовал и с другой таблицей и тот же результат...
Подскажите если не трудно,а то меня по видимому заклинило и может я не вижу очевидных вещей. | |
|
|
|
|
|
|
|
для: varvar
(29.07.2009 в 18:54)
| | смотрите:
у вас есть элементы:
<input type="checkbox" id="box1">
<input type="checkbox" id="box2">
<input type="checkbox" id="box4">
<input type="checkbox" id="box5">
|
в цикле document.getElementById('box'+i) пытается работать с
<input type="checkbox" id="box0">
<input type="checkbox" id="box1">
<input type="checkbox" id="box2">
<input type="checkbox" id="box3">
|
но у вас нет элементов с айди box0, box3
То есть логика в пхп и в яваскрипте у вас разная.
самый просто вариант для вас - это поменять пхп:
<?php
$i=0;
while ($myrow = mysql_fetch_assoc($result2)) { // перебираем все значения массива
print "<input type='checkbox' name='box$myrow[PublishLocationRecID]' value='$myrow[PublishLocationEnglish]' id='[b]box$i[/b]' onClick='return union_chbox()'>
$myrow[PublishLocationEnglish]";
$i++;
}
|
| |
|
|
|
|
|
|
|
для: ride
(29.07.2009 в 19:03)
| | Всё заработало!!! Огромное спасибо!!! Я действительно тупил... | |
|
|
|