|
 3.5 Кб |
|
| в аттаче файл со скриптом выводящем инфрмацию из таблицы (постранично разбитую) задача, добавить ещё одну колонку в <table> c чекбоксом в каждой строке ... со значением
VALUE="<? echo $postrow[$i]['id_msg']; ?>"
|
Без <form> всё работает замечательно ... а с формой ругается на
<form action="" method="GET">
| и на
?><td> <INPUT TYPE="checkbox" NAME="box" VALUE="<? echo $postrow[$i]['id_msg']; ?>"></td> <?
|
Parse error: parse error, unexpected T_STRING, expecting ',' or ';'
Всё на что было подозрение уже пробывал исправлять ... уже даже предположений нет как нужно ... :((( | |
|
|
|
|
|
|
|
для: Oligarx
(19.03.2006 в 19:44)
| | Вместо блока
<?php
echo "<tr>
?><td> <INPUT TYPE="checkbox" NAME="box" VALUE="<? echo $postrow[$i]['id_msg']; ?>"></td> <?
<td>".$postrow[$i]['id_msg']."</td>
<td>".$postrow[$i]['name']."</td>
<td>".$postrow[$i]['msg']."</td>
<td>".$postrow[$i]['mail']."</td>
<td>".$postrow[$i]['icq']."</td>
</tr>";
?>
|
следует писать
<?php
echo "<tr><td> <INPUT TYPE=\"checkbox\" NAME=\"box\" VALUE=\"".$postrow[$i]['id_msg']."\"></td>
<td>".$postrow[$i]['id_msg']."</td>
<td>".$postrow[$i]['name']."</td>
<td>".$postrow[$i]['msg']."</td>
<td>".$postrow[$i]['mail']."</td>
<td>".$postrow[$i]['icq']."</td>
</tr>";
?>
|
Т.е. echo нельзя прерывать тегами <?php и ?>. | |
|
|
|
|
|
|
|
для: cheops
(19.03.2006 в 21:23)
| | Вот из этого срипта передаётся ...
for($i=0; $i < $num_post; $i++)
{
echo "<tr>
<td><INPUT TYPE=\"checkbox\" NAME=\"'.$postrow[$i]['id_msg'].'\" VALUE=\"box\"></td>
<td>".@$postrow[$i]['id_msg']."</td>
<td>".@$postrow[$i]['name']."</td>
<td>".@$postrow[$i]['msg']."</td>
<td>".@$postrow[$i]['mail']."</td>
<td>".@$postrow[$i]['icq']."</td>
</tr>";
}
|
в этот ...
<?
$num=3;
for ($i=0; $i<$num; $i++)
{
if ($_POST[$postrow[$i]['id_msg']] == 'box') echo 'Чекбокс '.$_POST[$postrow[$i]['id_msg']].' выбран!';
else echo 'Чекбокс '.$postrow[$i]['id_msg'].' не выбран';
}
?>
|
Но чёт не работает :((
Я запутался ... :(( | |
|
|
|
|
|
|
|
для: Oligarx
(20.03.2006 в 12:38)
| | Так нельзя.
Чекбоксов много.
Помещать разные значения в одну переменную нельзя, потому что тогда одно значение (первое или последнее - неважно) перекроет все остальные, и в результате до обработчита дойдет лишь одна галочка, а не целый набор.
Как можно?
Можно помещать одно значение в разные переменные. Но тогда их тяжело обрабатывать, т.к. переменных много.
Лучше всего помещать их в массив. Допустим, массив box[]
Для этого
echo "<tr>
<td><INPUT TYPE=\"checkbox\" NAME=\"'.$postrow[$i]['id_msg'].'\" VALUE=\"box\"></td>
|
надо изменить на
echo "<tr>
<td><INPUT TYPE=checkbox NAME=box[] VALUE=".$postrow[$i]['id_msg']." /></td>
|
В обработчике тоже ошибки . Там давно нет никакого $_POST[$postrow], поскольку postrow - это строка, извлеченная из БД, а не элемент формы.
Обработчик можно построить как-то так.
<?
foreach($_POST['box'] as $id_msg)
echo "Чекбокс $id_msg выбран<br>";
?>
|
Невыбранные чекбоксы увидеть нельзя, потому, что информация о них из формы на сервер не передается.
В реализации постранички тоже глюки, но Вы сперва разберитесь с одностраничной моделью, чтобы не запутаться. | |
|
|
|
|
|
|
|
для: Trianon
(20.03.2006 в 13:34)
| |
for($i=0; $i < $num_post; $i++)
{
echo "<tr>
<td><INPUT TYPE=\"checkbox\" NAME=\"box[]\" VALUE=\".$postrow[$i]['id_msg'].\"></td>
<td>".@$postrow[$i]['id_msg']."</td>
<td>".@$postrow[$i]['name']."</td>
<td>".@$postrow[$i]['msg']."</td>
<td>".@$postrow[$i]['mail']."</td>
<td>".@$postrow[$i]['icq']."</td>
</tr>";
}
|
передаёт value равным .Array['id_msg']. а мне нужно чтоб передавалось значение id_msg (Мне это нужно для организации удаления записей из базы)
странно ... например сдесь <td>".@$postrow[$i]['id_msg']."</td> выводится значение которое мне и нужно а VALUE=\".$postrow[$i]['id_msg'].\" сдесь почему то в таком виде .Array['id_msg'].
ничего не понимаю ... :(( | |
|
|
|
|
|
|
|
для: Oligarx
(20.03.2006 в 23:05)
| | Пробывал делать удаление следующим кодом
<?
require("../../../req/mysql.class");
$my=new class_mysql;
$my->sql_connect();
// $my->sql_query="DELETE FROM 'tb_gvest' WHERE 'id_msg' = 130 LIMIT 1;";
// $my->sql_execute();
$box = $_POST['box'];
if(!empty($box))
{
$query = "(";
foreach($box as $val) $query .= "$val,";
// Удаляем последнюю запятую, заменяя её закрывающей скобкой )
$query = substr($query, 0, strlen($query) - 1).")";
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM tb_gvest WHERE .$val. IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}
?>
|
пишет ошибку ...
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.Array['id_msg'].. IN (.Array['id_msg'].)' at line 1
DELETE FROM tb_gvest WHERE ..Array['id_msg'].. IN (.Array['id_msg'].)
Загвозка в предыдущем посте ... | |
|
|
|
|
|
|
|
для: Oligarx
(21.03.2006 в 09:33)
| | для того, чтобы выводилось не array[~~][~~] нужно в foreach немного изменть
foreach($_POST['box'] as $id_msg => $perem)
и насчет вашего второго кода:
ошибка в синтаксисе... чесно не совсем понятно, что такое у вас $val... но если его значение верное (например, $val = 'id=10';), то возле $val не нужно ставить точек...
... и наверху тоже VALUE=\".$postrow[$i]['id_msg'].\" - тут тоже точки не нужны... | |
|
|
|
|
|
|
|
для: Oligarx
(21.03.2006 в 09:33)
| |
<?
require("../../../req/mysql.class");
$my=new class_mysql;
$my->sql_connect();
if(isset($_POST['box']))
{
$boxlist = $_POST['box'];
if(!is_array($boxlist)) // если передан один элемент,
$boxlist = array($boxlist); //делаем из него массив :)
foreach($boxlist as $boxnum => $box)
$boxlist[$boxnum] = intval($box); // убираем из элементов всё кроме чисел
$query = "(".implode(',', $boxlist).")"; // делаем список а ля (1,2,3,7,9)
// Завершаем формирование SQL-запроса на удаление
$query = "DELETE FROM tb_gvest WHERE id_msg IN ".$query;
// Выполняем запрос
if(!mysql_query($query))
{
echo mysql_error()."<br>";
echo $query."<br>";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Oligarx
(20.03.2006 в 23:05)
| | Не так. Если уж Вы так хотите закавычивать все атрибуты, то вместо
echo "<tr>
<td><INPUT TYPE=\"checkbox\" NAME=\"box[]\" VALUE=\".$postrow[$i]['id_msg'].\"></td>
<td>".@$postrow[$i]['id_msg']."</td>
<td>".@$postrow[$i]['name']."</td>
<td>".@$postrow[$i]['msg']."</td>
<td>".@$postrow[$i]['mail']."</td>
<td>".@$postrow[$i]['icq']."</td>
</tr>";
|
следует писать
echo "<tr>
<td><INPUT TYPE=\"checkbox\" NAME=\"box[]\" VALUE=\"".$postrow[$i]['id_msg']."\"></td>
<td>".@$postrow[$i]['id_msg']."</td>
<td>".@$postrow[$i]['name']."</td>
<td>".@$postrow[$i]['msg']."</td>
<td>".@$postrow[$i]['mail']."</td>
<td>".@$postrow[$i]['icq']."</td>
</tr>";
|
Если бы Вы применили Вариант, который я Вам посоветовал, никаких таких проблем бы не было. | |
|
|
|