[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Checkbox->PHP->mysql
A_M
Здравстуйте!
Не могли бы Вы дать Мне простой пример!
Мне необходимо выводить checkbox(более 10) в шаблон.tpl затем пользователь проставляет галочки где нравится, все это передается в php где обрабатывается и в таблицу mysql записывается 1 или 0, начиная с определенного столбца? Каждое значение 1 или 0 должно записываться в свой стобец таблицы?
Подскажите пожалуйста, как такое можно реализовать?




Спустя 5 минут, 58 секунд (5.03.2012 - 12:29) Kuliev написал(а):
A_M

Используй массив


<input type="checkbox" name="check[]">
<input
type="checkbox" name="check[]">
<input
type="checkbox" name="check[]">
<input
type="checkbox" name="check[]">
<!-- Сколько нужно боксов столько и ставь -->


Потом получишь массив данных, обрабатывай их и пиши все в БД.

Спустя 1 час, 2 минуты, 17 секунд (5.03.2012 - 13:31) A_M написал(а):
А как правильно написать обработчик, который будет записывать 1 или 0 в таблицу MySQL с к примеру 6 ого столбца? Для каждого элемента массива в свой столбец.

Спустя 31 минута, 55 секунд (5.03.2012 - 14:03) Kuliev написал(а):
Цитата (A_M @ 5.03.2012 - 14:31)
А как правильно написать обработчик, который будет записывать 1 или 0 в таблицу MySQL с к примеру 6 ого столбца? Для каждого элемента массива в свой столбец.

А у Вас самого есть какие нибудь наработки?

Спустя 5 минут, 50 секунд (5.03.2012 - 14:09) A_M написал(а):
Нет, Я пока вообще не уверен что можно так сделать! Как раз хотел у знающих людей узнать)

Спустя 16 минут, 20 секунд (5.03.2012 - 14:25) Kuliev написал(а):
Цитата (A_M @ 5.03.2012 - 15:09)
Нет, Я пока вообще не уверен что можно так сделать! Как раз хотел у знающих людей узнать)

Получаешь массив из формы, потом разбираешь массив и генеришь строку запроса на запись в БД, потом записываешь все в БД


//Данные из чекбоксов
$arr = array(
'0',
'1',
'0',
'1',
'0'
);

//Перебираем массив и записываем в БД
for($i = 0; $i < count($arr); $i++)
mysql_query("INSERT INTO `tbl` VALUE('','".intval($arr[$i])."')") or die(mysql_error());



Это всего лишь пример... На самом деле там еще нужно сделать кучу проверок + защита от SQL инъекций и т.д. Но это уже из области безопасности скрипта...

Спустя 1 час, 6 минут, 35 секунд (5.03.2012 - 15:32) Visman написал(а):
Цитата (Kuliev @ 5.03.2012 - 19:25)
защита от SQL инъекций

Сам же и сделал biggrin.gif
Цитата (Kuliev @ 5.03.2012 - 19:25)
intval($arr[$i])


Спустя 30 минут, 31 секунда (5.03.2012 - 16:02) Kuliev написал(а):
Цитата (Visman @ 5.03.2012 - 16:32)
Цитата (Kuliev @ 5.03.2012 - 19:25)
защита от SQL инъекций

Сам же и сделал biggrin.gif
Цитата (Kuliev @ 5.03.2012 - 19:25)
intval($arr[$i])

Привычка biggrin.gif

Спустя 1 час, 8 минут, 43 секунды (5.03.2012 - 17:11) A_M написал(а):
Откликнитесь снова, возможно Я просто через чур глублю, но не могу никак написать масив состоящий из 1 и 0 после отправки формы!

В шаблоне у Меня динамический вывод checkbox:

<div style="text-align:left" >
<form
action="" method="post">
<br />
<?php

while ($i <= $num_rows-1)
{
$ch[$i]=$i;
echo "<input type='checkbox' name='ch[$i]' value='$i' /> ch$i<br>";
$i++; }
?>
<input
name="ok" type="submit" value="ОК"><br />
<br />
</form>



а в обработчике

<?php

$host="localhost"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="chatlist"; // Database name
$tbl_name="test"; // Table name

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$num_rows = mysql_num_fields(mysql_query("SELECT * FROM $tbl_name"));

echo "Получено $num_rows рядов\n";
$i = 1;


include 'index.tpl';

if(isset($_POST["ok"])) {
$i=1;
while ($i <= $num_rows-1) {
if(isset($_POST["ch"][$i]))
echo $_POST["ch"][$i]."<br />";
mysql_query("INSERT INTO `$tbl_name` 'тут не знаю что писать'") or die(mysql_error());
$i++;
}
}


mysql_close();


Скорее всего весь while написан не верно! Подскажите, как создать масив из 1 и 0, который можно будет записать в БД=)

Спустя 1 день, 7 часов, 17 минут, 44 секунды (7.03.2012 - 00:29) A_M написал(а):
Люди, кто может, откликнитесь, помогите новечку сформировать массив из checkbox. rolleyes.gif

Спустя 9 часов, 20 минут, 40 секунд (7.03.2012 - 09:49) Kuliev написал(а):
A_M
Примерно так...

Можешь просто запустить этот скрипт без записи в БД, посмотри на с генерированный запрос.


if(isset($_POST['action']))
{
echo "<pre>\n";
print_r($_POST['checked']);
echo "</pre>\n";

$arr = array();

$j = 0;
for($i = 0; $i < 8; $i++)
{
if($_POST['checked'][++$j] == 1)
$arr[] = 1;
else
$arr[] = 0;
}

echo '<pre>';
print_r($arr);
echo '</pre>';

$sql = "INSERT INTO `table` VALUE('','".join("','",$arr)."')";
echo $sql;

//Пишим в БД
//mysql_query($sql) or die(mysql_error() .'<br>'. $sql);

}

$form = "<form method='POST'>\n";
//Рисуем чекбоксы
$j = 0;
for($i = 0; $i < 8; $i++)
$form .= ++$j . "<input type='checkbox' name='checked[". $j ."]' value='1'>\n" ."<br>\n";

$form .= "<input type='submit' name='action' value='SEND'>\n";
$form .= "</form>\n";

echo $form;

Спустя 1 час, 36 минут, 35 секунд (7.03.2012 - 11:26) Ramzil_Nixon написал(а):
Цитата (A_M @ 5.03.2012 - 09:23)
в таблицу mysql записывается 1 или 0, начиная с определенного столбца? Каждое значение 1 или 0 должно записываться в свой стобец таблицы?


Я тут ничего не понял

Спустя 7 часов, 59 минут, 50 секунд (7.03.2012 - 19:26) A_M написал(а):
Цитата
Я тут ничего не понял

Я имел ввиду то, что массив должен состоять не только из переданных checkboxов но и из не переданных. Просто а ячейке переданного должна стоять 1, а пустого 0! И запись должна осуществляться в таблицу начиная не с первого столбца, а с 5ого например и до 15 например если 10 checkbox! Ну к примеру если в первых пяти находиться проли id и все в этом роде, а начиная с 5ого будут настойки, которые подключаются checkами=)

Спустя 1 минута, 40 секунд (7.03.2012 - 19:27) A_M написал(а):
Kuliev, большое спасибо за помощь, сейчас изучу все что Вы Мне прислали и постараюсь решить Свою проблему=)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.