Консультация № 55268
13.09.2006, 12:26
0.00 руб.
0 2 2
Уважаемые эксперты! Вопрос 1) Имеется html-таблица с рядами данных из базы MySQL, в каждом ряде в первой ячейке имеется элемент checkbox. Элементы можно включать/выключать в произвольном порядке. Научите, плз, как сделать скрипт, при помощи которого можно отметить все элементы checkbox или снять выделение со всех элементов, чтобы выделенные ряды можно было либо удалить, либо редактировать. Вопрос 2) В приложении имеется скрипт запроса $result2 внутри запроса $result, при выполнении которого выходит сообщение об ошибке: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource on line 05. Что я делаю неправильно, из-за чего появляется ошибка?

Приложение:
01 $result = mysql_query("SELECT * FROM $table LIMIT 0, 10");02 while ($myrow=mysql_fetch_array($result))03 { 04 $var=$myrow["var"];05 $result2 = mysql_query("SELECT * FROM $table2 WHERE var=‘$var‘");06 while ($myrow=mysql_fetch_array($result2)) {08 $text = $myrow["text"];09 }10 echo "$var, $text";11 }

Обсуждение

Неизвестный
13.09.2006, 12:58
общий
это ответ
Здравствуйте, Vicbar!
1. Средствами PHP это не сделать, но можно сделать на JAVA. Код в приложении. Как это работает посмотри на http://filepost.ru
2. Во-первых, все запросы должны заканчиваться ; т.е.
"SELECT * FROM $table LIMIT 0, 10;"
"SELECT * FROM $table2 WHERE var=‘$var‘;"
Во-вторых, приравнивай функцию mysql_fetch_array разным переменным.
В-третьих, слова var и text в $myrow["var"] и $myrow["text"] заключается в одинарные кавычки $myrow[‘var‘] и $myrow[‘text‘]
в-четвертых, в переменной $text окажится последнее значение из второго запроса. Или примените соединение строк, или переместите вывод на 9 позицию.

P.S. В случае вопросов по PHP пиши в личку.

Приложение:
Делаешь файл (например js.js) со следующим содержимым:function CheckAll(Element,Name) { thisCheckBoxes = Element.parentNode.parentNode.parentNode.getElementsByTagName(‘input‘); for (i = 1; i < thisCheckBoxes.length; i++) { if (thisCheckBoxes[i].name.indexOf(Name)==0){ thisCheckBoxes[i].checked = Element.checked; } } } И прописываешь его загрузку: <script src="js.js?ver=1" type="text/javascript"></script>В шапке таблицы ставите следующий код ( в нужном столбце).<input type="checkbox" title="select all" onclick="CheckAll(this,‘element‘)">В самой таблице пишешь следующее: <input type="checkbox" name="element_number">где element_number - номер строки или элемента
Неизвестный
13.09.2006, 13:23
общий
это ответ
Здравствуйте, Vicbar!
1. Сначала нужно получить коллекцию всех checkbox -ов, для этого можно или поместить таблицу в форму и всем checkbox-ам задать

одинаковое имя(например chkrow), тогда Form1.chkrow - будет массив этих checkbox-ов, перебрав который в цикле мы получим доступ ко все

элементам, или же можно использовать коллекцию Table1.all.tags("INPUT") если в таблице нет больше никаких INPUT-ов
>
function CheckTbl1(v){
for(var i=0;i<Form1.chkrow.length;i++){
Form1.chkrow(i).checked=v
}
}
function CheckTbl2(v){
var chks=Table1.all.tags("INPUT")
for(var i=0;i<chks.length;i++){
chks(i).checked=v
}
}
</script>

2. Проверьте значение $result2, скорее всего оно False, а это возможно только если второй запрос выполняется с ошибкой, попробуйте заключить

$table2 в "`" - обратная кавычка, и для $var использовать mysql_escape_string():
$result2=mysql_query("SELECT * FROM `$table2` WHERE var=‘".mysql_escape_string($var)."‘")
Форма ответа