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

Форум MySQL

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

 

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

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

тема: chekbox-ы и MySQL
 
 автор: Michail   (14.08.2005 в 19:25)   письмо автору
 
 

Привет всем

Сейчас изучаю PHP с помощью книги практика создания веб-сайтов, и изменяю скрипт с диска под свои нужды в связи с чем вопрос я не знаю как мне передать переменную с помощью chekbox в MySql, мне нужно что бы я мог выбирать сразу несколько chekbox - ов одновременно, которые передавали бы свои значения в строку MySql.

мне это нужно для создания каталога

я думаю строка таблицы должна быть SET, чтобы можно было отмечать сразу несколько значений.

и еще хотел узнать как мне сделать чтобы потом на странице которую будет видеть пользователь все значения из строки Set появлялись с пробелом, или запятой


проще говоря чтобы я выбирал состав позиции а потом пользователю мог видеть этот состав как один текс, не охота всегда писать если проще один раз помучиться, а потом просто выбирать из chekbox - ов.


ВСЕМ БОЛЬШОЕ СПАСИБО.

   
 
 автор: Киналь   (14.08.2005 в 20:47)   письмо автору
 
   для: Michail   (14.08.2005 в 19:25)
 

Хм... Тут RTFM не принято, но, думаю, что ознакомиться с http://www.softtime.ru/bookphp/gl1_1.php вам стоит. Просто слишком объемный вопрос:-)

   
 
 автор: Boss   (14.08.2005 в 22:32)   письмо автору
 
   для: Киналь   (14.08.2005 в 20:47)
 

>>Хм... Тут RTFM не принято, но, думаю, что ознакомиться с
RTFM уже своего рода традиция :))

   
 
 автор: cheops   (14.08.2005 в 22:50)   письмо автору
 
   для: 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

   
 
 автор: Michail   (16.08.2005 в 19:25)   письмо автору
 
   для: 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&#228;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>&nbsp;$type</td>

В базе я создал строку под названием Type стрка тип SET перечислел все название chekbox-ов как например 'tomaten','gurken' ну и т.д. по дефолту она у меня 0

Плиз если можете покажите где я дурень ошибку сделал времени катострофически нехватает, Заранее Спасибо

   
 
 автор: cheops   (16.08.2005 в 20:19)   письмо автору
 
   для: Michail   (16.08.2005 в 19:25)
 

А нет $_POST['type'] - это массив, в этом вы сможете убедится распечатав его дамп
<?php
  print_r
($_POST['type']);
?>

Поэтому его перед испльзованием в SQL-запросе следует превратить в строку
<?php
  $_POST
['type'] = implode(",",$_POST['type']);
?>

   
 
 автор: Michail   (17.08.2005 в 10:46)   письмо автору
 
   для: cheops   (16.08.2005 в 20:19)
 

а куды втыкатбь эту строчку в какой скрипт

<?php
$_POST['type'] = implode(",",$_POST['type']);
?>

   
 
 автор: Michail   (17.08.2005 в 11:29)   письмо автору
 
   для: Michail   (17.08.2005 в 10:46)
 

объясните мне пожалуйста как полному дереву куда и что, Спасибо

   
 
 автор: cheops   (17.08.2005 в 13:08)   письмо автору
 
   для: 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'].")";
?>

   
 
 автор: Michail   (17.08.2005 в 17:04)   письмо автору
 
   для: cheops   (17.08.2005 в 13:08)
 

ну это я уже вроде сам додумал, но теперь другая проблема, меня уже все достало я откатил все на ночальный скрипт реэлторский и просто добавил туда несколько чекбоксов, прописал в addprod


$_POST['type'] = implode(",",$_POST['type']);

после
'".$_POST['type']."', 


а в product, как писать чтобы проявлялось что в таблице


<td><p class=small>&nbsp;$type</td>



<td><p class=small>&nbsp;".$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                                                                                                                           



и еще я прикрепил файлы посмотрите пожалуйста где ошибка, у меня уже просто голова квадратная, спасибо за терпение

   
 
 автор: cheops   (17.08.2005 в 19:29)   письмо автору
 
   для: Michail   (17.08.2005 в 17:04)
 

В файле product.php нашёл только одно вхождение переменной $type в выходной таблице.
Почему строка
$_POST['type'] = implode(",",$_POST['type']);

помещается до
'".$_POST['type']."'

Ведь такое расположение делает бессмыленной первую строку?

   
 
 автор: Michail   (18.08.2005 в 17:08)   письмо автору
 
   для: cheops   (17.08.2005 в 19:29)
 

извените , но у меня ничего не выходит наверное слишком туп.

Я попробывал изменить, поставил в addprod
строку

$_POST['type'] = implode(",",$_POST['type']); 


после


'".$_POST['type']."' 


но ничего не выходит либо пишет ошибку если в строке type not null, либо вообще не добавляет информации когда Null по дефолту.

вы не могли бы мне показать где ошибки и дать правильный вариант просто у меня только одна книга по пхп и кое что я вообще еще не понимаю или дайте мне ссылку на правильный пример по добавлению информации при помощи chekbox-ов:

мне ну жно что бы когда я выделел chekbox - ы, потом в каталоге они просто как список выходили:

например выделил я chekbox лимон, огурец, перец и пользователю на странице так и вышло

блюдо такое, а в составе: лимон, огурец, перец и т.д сколько я нужных мне chekbox-ов выделел такой и состав.

прикрепил еще раз свое художество

Написал и сам себя не понял, спасибо если вообще до читайте :))

   
 
 автор: cheops   (18.08.2005 в 22:58)   письмо автору
 
   для: 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'].")";
?>

   
Rambler's Top100
вверх

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