|
|
|
| Привет всем
Сейчас изучаю PHP с помощью книги практика создания веб-сайтов, и изменяю скрипт с диска под свои нужды в связи с чем вопрос я не знаю как мне передать переменную с помощью chekbox в MySql, мне нужно что бы я мог выбирать сразу несколько chekbox - ов одновременно, которые передавали бы свои значения в строку MySql.
мне это нужно для создания каталога
я думаю строка таблицы должна быть SET, чтобы можно было отмечать сразу несколько значений.
и еще хотел узнать как мне сделать чтобы потом на странице которую будет видеть пользователь все значения из строки Set появлялись с пробелом, или запятой
проще говоря чтобы я выбирал состав позиции а потом пользователю мог видеть этот состав как один текс, не охота всегда писать если проще один раз помучиться, а потом просто выбирать из chekbox - ов.
ВСЕМ БОЛЬШОЕ СПАСИБО. | |
|
|
|
|
|
|
|
для: Michail
(14.08.2005 в 19:25)
| | Хм... Тут RTFM не принято, но, думаю, что ознакомиться с http://www.softtime.ru/bookphp/gl1_1.php вам стоит. Просто слишком объемный вопрос:-) | |
|
|
|
|
|
|
|
для: Киналь
(14.08.2005 в 20:47)
| | >>Хм... Тут RTFM не принято, но, думаю, что ознакомиться с
RTFM уже своего рода традиция :)) | |
|
|
|
|
|
|
|
для: Michail
(14.08.2005 в 19:25)
| | Хм... посмотрите середину темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=427, а также продолжение обсуждения в теме http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=483
>и еще хотел узнать как мне сделать чтобы потом на странице которую будет
> видеть пользователь все значения из строки Set появлялись с пробелом, или
>запятой
SET и возвращает значения разделённые запятой - тут ничего специально делать не придётся.
PS Вопросы, посвящённые MySQL лучше сразу задавать в разделе http://www.softtime.ru/forum/index.php?id_forum=3 | |
|
|
|
|
|
|
|
для: cheops
(14.08.2005 в 22:50)
| | Что-то у меня не получается, а в книге жалко нет примера как передавать данные chekbox-ом в Базу может кто подскажет правильный вариант.
Мне нужно чтобы я мог сразу несколько chekbox-ов выделить и передать в одну строку базы. Мои предположения что строка должна быть SET вроде подтвердили,
у меня где то ошибка либо в форме, либо в обработчике либо в скрипте вывода посетителю
в addprodform у меня прописано для примера так:
<TD><INPUT type='checkbox' value='tomaten' name='type[]'>
<SPAN class=style1> Tomatensause</SPAN></TD>
<TD><INPUT type='checkbox' value='zwiebeln' name='type[]'>
<SPAN class=style1> Zwiebeln</SPAN></TD>
<TD><INPUT type='checkbox' value='kase' name='type[]'>
<SPAN class=style1>Käse</SPAN></TD>
<TD><INPUT type='checkbox' value='champingnons' name='type[]'>
<SPAN class=style1> Champingnons</SPAN></TD>
<TD ><INPUT type='checkbox' value='paprika' name='type[]'>
<SPAN class=style1> Paprika</SPAN></TD>
в обработчике:
<?php
// Осуществляем соединение с базой данных
require_once("../config.php");
// Проверим - достаточно ли информации для занесения в базу данных
if(!isset($_POST['price_k'])) links($_POST['id_catalog'], "Не введена общая цена");
if(!isset($_POST['price_n'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
if(!isset($_POST['price_g'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
// Выясняем скрыта товарная позиция или нет
if($_POST['hide'] == "on") $showhide = 'show';
else $showhide = 'hide';
//chekbox
if(!isset($_POST['type'])) links($_POST['id_catalog'], "Не введен chekbox");
// Заменяем одинарные кавычки
$_POST['note'] = str_replace("'","'",$_POST['note']);
$_POST['address'] = str_replace("'","'",$_POST['address']);
// Формируем запрос
$query = "INSERT INTO product VALUES (
NULL,
".$_POST['price_k'].",
".$_POST['price_n'].",
".$_POST['price_g'].",
'".$_POST['currency']."',
'".$_POST['type']."',
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
if(mysql_query($query)) {
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
</HEAD></HTML>";
} else puterror("Ошибка при добавлении продукции");
function links($id_catalog,$msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога продукции</a></p>";
exit();
}
?>
ну а в product:
<td><p class=small> $type</td>
В базе я создал строку под названием Type стрка тип SET перечислел все название chekbox-ов как например 'tomaten','gurken' ну и т.д. по дефолту она у меня 0
Плиз если можете покажите где я дурень ошибку сделал времени катострофически нехватает, Заранее Спасибо | |
|
|
|
|
|
|
|
для: Michail
(16.08.2005 в 19:25)
| | А нет $_POST['type'] - это массив, в этом вы сможете убедится распечатав его дамп
<?php
print_r($_POST['type']);
?>
|
Поэтому его перед испльзованием в SQL-запросе следует превратить в строку
<?php
$_POST['type'] = implode(",",$_POST['type']);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.08.2005 в 20:19)
| | а куды втыкатбь эту строчку в какой скрипт
<?php
$_POST['type'] = implode(",",$_POST['type']);
?> | |
|
|
|
|
|
|
|
для: Michail
(17.08.2005 в 10:46)
| | объясните мне пожалуйста как полному дереву куда и что, Спасибо | |
|
|
|
|
|
|
|
для: Michail
(17.08.2005 в 10:46)
| | Хотел написать, да забыл :) Поставьте эту строку перед
<?php
// Формируем запрос
$query = "INSERT INTO product VALUES (
NULL,
".$_POST['price_k'].",
".$_POST['price_n'].",
".$_POST['price_g'].",
'".$_POST['currency']."',
'".$_POST['type']."',
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(17.08.2005 в 13:08)
| | ну это я уже вроде сам додумал, но теперь другая проблема, меня уже все достало я откатил все на ночальный скрипт реэлторский и просто добавил туда несколько чекбоксов, прописал в addprod
$_POST['type'] = implode(",",$_POST['type']);
|
после
а в product, как писать чтобы проявлялось что в таблице
<td><p class=small> $type</td>
|
<td><p class=small> ".$par['currency']."</td>
|
первый или второй верен.
и самое главное когда в базе в строке type ставишь not null ругается
Warning: implode() [function.implode]: Bad arguments. in /usr/home/web/sde64314/pinocchio/admin/catalog/addprod.php on line 28
|
если ставишь ноль то добавление информации идет, а чекбоксы не добовляются
вот таблица
product CREATE TABLE 'product' (
'type' set('tomaten','zwiebeln','champingnons','paprika') NOT NULL default '',
'id_product' int(11) NOT NULL auto_increment,
'note' tinytext NOT NULL,
'district' enum('kanavinskii','nizhegorodskii','sovetskii','priokskii','moskovskii','avtozavodskii','leninskii','sormovskii') NOT NULL default 'kanavinskii',
'address' tinytext NOT NULL,
'square_o' smallint(6) NOT NULL default '0',
'square_j' smallint(6) NOT NULL default '0',
'square_k' smallint(6) NOT NULL default '0',
'rooms' tinyint(4) NOT NULL default '0',
'floor' tinyint(4) NOT NULL default '0',
'floorhouse' tinyint(4) NOT NULL default '0',
'material' enum('brick','concrete','reconcrete') NOT NULL default 'brick',
'su' enum('separate','combined') NOT NULL default 'separate',
'balcony' enum('balcony','loggia') NOT NULL default 'balcony',
'price' int(10) NOT NULL default '0',
'pricemeter' int(10) NOT NULL default '0',
'currency' enum('RUR','USD') NOT NULL default 'RUR',
'hide' enum('show','hide') NOT NULL default 'show',
'pos' int(11) NOT NULL default '0',
'id_catalog' int(8) NOT NULL default '0',
PRIMARY KEY ('id_product'),
KEY 'id_catalog' ('id_catalog')
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
и еще я прикрепил файлы посмотрите пожалуйста где ошибка, у меня уже просто голова квадратная, спасибо за терпение | |
|
|
|
|
|
|
|
для: Michail
(17.08.2005 в 17:04)
| | В файле product.php нашёл только одно вхождение переменной $type в выходной таблице.
Почему строка
$_POST['type'] = implode(",",$_POST['type']);
|
помещается до
Ведь такое расположение делает бессмыленной первую строку? | |
|
|
|
|
|
|
|
для: cheops
(17.08.2005 в 19:29)
| | извените , но у меня ничего не выходит наверное слишком туп.
Я попробывал изменить, поставил в addprod
строку
$_POST['type'] = implode(",",$_POST['type']);
|
после
но ничего не выходит либо пишет ошибку если в строке type not null, либо вообще не добавляет информации когда Null по дефолту.
вы не могли бы мне показать где ошибки и дать правильный вариант просто у меня только одна книга по пхп и кое что я вообще еще не понимаю или дайте мне ссылку на правильный пример по добавлению информации при помощи chekbox-ов:
мне ну жно что бы когда я выделел chekbox - ы, потом в каталоге они просто как список выходили:
например выделил я chekbox лимон, огурец, перец и пользователю на странице так и вышло
блюдо такое, а в составе: лимон, огурец, перец и т.д сколько я нужных мне chekbox-ов выделел такой и состав.
прикрепил еще раз свое художество
Написал и сам себя не понял, спасибо если вообще до читайте :)) | |
|
|
|
|
|
|
|
для: Michail
(18.08.2005 в 17:08)
| | Я имел ввиду, что помещение группировки ПОСЛЕ SQL-запроса ни к чему не приведёт, так как SQL-запрос уже сформирован и любые изменения $_POST['type'] бесполезны
<?php
// Формируем запрос
$query = "INSERT INTO product VALUES (
NULL,
'".$_POST['type']."',
'".$_POST['note']."',
'".$_POST['district']."',
'".$_POST['address']."',
".$_POST['square_o'].",
".$_POST['square_j'].",
".$_POST['square_k'].",
".$_POST['rooms'].",
".$_POST['floor'].",
".$_POST['floorhouse'].",
'".$_POST['material']."',
'".$_POST['su']."',
'".$_POST['balcony']."',
".$_POST['price'].",
".$_POST['pricemeter'].",
'".$_POST['currency']."',
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
$_POST['type'] = implode(",",$_POST['type']);
?>
|
нужно поместить это конструкцию ДО
<?php
$_POST['type'] = implode(",",$_POST['type']);
// Формируем запрос
$query = "INSERT INTO product VALUES (
NULL,
'".$_POST['type']."',
'".$_POST['note']."',
'".$_POST['district']."',
'".$_POST['address']."',
".$_POST['square_o'].",
".$_POST['square_j'].",
".$_POST['square_k'].",
".$_POST['rooms'].",
".$_POST['floor'].",
".$_POST['floorhouse'].",
'".$_POST['material']."',
'".$_POST['su']."',
'".$_POST['balcony']."',
".$_POST['price'].",
".$_POST['pricemeter'].",
'".$_POST['currency']."',
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
?>
|
| |
|
|
|
|