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

Форум PHP

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

 

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

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

тема: form
 
 автор: Oligarx   (19.03.2006 в 19:44)   письмо автору
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 ';'

Всё на что было подозрение уже пробывал исправлять ... уже даже предположений нет как нужно ... :(((

   
 
 автор: cheops   (19.03.2006 в 21:23)   письмо автору
 
   для: 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 и ?>.

   
 
 автор: Oligarx   (20.03.2006 в 12:38)   письмо автору
 
   для: 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'].' не выбран';
}
?>


Но чёт не работает :((

Я запутался ... :((

   
 
 автор: Trianon   (20.03.2006 в 13:34)   письмо автору
 
   для: 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>";
?>

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

   
 
 автор: Oligarx   (20.03.2006 в 23:05)   письмо автору
 
   для: 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   (21.03.2006 в 09:33)   письмо автору
 
   для: 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($query0strlen($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'].)

Загвозка в предыдущем посте ...

   
 
 автор: kasmanaft   (21.03.2006 в 09:48)   письмо автору
 
   для: 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'].\" - тут тоже точки не нужны...

   
 
 автор: Trianon   (21.03.2006 в 10:40)   письмо автору
 
   для: 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>";
    }
}
?>

   
 
 автор: Trianon   (21.03.2006 в 10:22)   письмо автору
 
   для: 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>"; 




Если бы Вы применили Вариант, который я Вам посоветовал, никаких таких проблем бы не было.

   
Rambler's Top100
вверх

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