Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: не работает скрипт обработки checkbox - ов
 
 автор: varvar   (29.07.2009 в 16:58)   письмо автору
 
 

Всем добрый день! Уже пару дней ломаю голову над одним скриптом на ява-скрипт! Идея такая выводится из базы список значений всех полей и чекбоксы рядом с ними. При нажатии на чекбокс ява-скрипт должен перекинуть его значение в текстовый инпут внизу списка. Если использовать скрипт для массива значений не из базы а заданного в скрипте то всё ок. Как только начинаю работать с базой всё ломается и дебаггер пишет "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>

  Ответить  
 
 автор: PAT   (29.07.2009 в 17:27)   письмо автору
 
   для: varvar   (29.07.2009 в 16:58)
 

Запустите ваш код в браузере, нажмите пункты меню "Вид --> Исходный HTML-код", скопируйте его и выложите его здесь.

ВМЕСТО того, который вы выложили.

НИКТО, кроме вас не знает, что у вас выводится из БД.

[поправлено модератором]

  Ответить  
 
 автор: varvar   (29.07.2009 в 17:34)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: ride   (29.07.2009 в 17:40)   письмо автору
 
   для: varvar   (29.07.2009 в 17:34)
 

ну а где ваша функция?
я про CheckUnckeckAll()

  Ответить  
 
 автор: varvar   (29.07.2009 в 17:43)   письмо автору
 
   для: 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>


перепутал источники...

  Ответить  
 
 автор: ride   (29.07.2009 в 17:47)   письмо автору
 
   для: varvar   (29.07.2009 в 17:43)
 

у вас чекбоксов три, а в функции - 4

  Ответить  
 
 автор: varvar   (29.07.2009 в 17:52)   письмо автору
 
   для: ride   (29.07.2009 в 17:47)
 

я это тоже вижу и не могу понять где беда... в базе 4 записи

  Ответить  
 
 автор: sim5   (29.07.2009 в 18:03)   письмо автору
 
   для: varvar   (29.07.2009 в 17:52)
 

Понять не можете? А это вот от этого:
$myrow = mysql_fetch_array($result2); - уже извлекли строку из ресурса, а потом еще раз mysql_fetch_array() (в конце кода) делаете, но указатель то где будет при этом?
И вообще, переписать все, достаточно один раз и одного цикла while. И mysql_fetch_assoc() вместо mysql_fetch_array().

  Ответить  
 
 автор: varvar   (29.07.2009 в 18:17)   письмо автору
 
   для: sim5   (29.07.2009 в 18:03)
 

а и верно...спасибо щас попробую

  Ответить  
 
 автор: varvar   (29.07.2009 в 18:29)   письмо автору
 
   для: 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:36)   письмо автору
 
   для: varvar   (29.07.2009 в 18:29)
 

дебаггер пишет : if (document.getElementById('box'+i).checked) is null

  Ответить  
 
 автор: ride   (29.07.2009 в 18:41)   письмо автору
 
   для: 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+";";
}} 

какие у вас тут айдишники?
делайте выводы

  Ответить  
 
 автор: varvar   (29.07.2009 в 18:54)   письмо автору
 
   для: ride   (29.07.2009 в 18:41)
 

Наверно я вас не совсем понимаю... Вы имеете в виду то что ID в цикле пхп идут не по порядку? Если да то я пробовал и с другой таблицей и тот же результат...
Подскажите если не трудно,а то меня по видимому заклинило и может я не вижу очевидных вещей.

  Ответить  
 
 автор: ride   (29.07.2009 в 19:03)   письмо автору
 
   для: 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++;

  Ответить  
 
 автор: varvar   (29.07.2009 в 19:11)   письмо автору
 
   для: ride   (29.07.2009 в 19:03)
 

Всё заработало!!! Огромное спасибо!!! Я действительно тупил...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования