PHP и Checkbox
5 отговора
208 прегледа
PHP и Checkbox
Здравейте , имам малък проблем който не мога да реша сам !
Генерирам форма - едно textfield и няколко сheckbox-а , като сheckbox-овете се генерират от заявка към MySql > отваряме една таблица и вадим от втората колона всичките записи и генерираме толкова сheckbox-ове колкото са записите , със стойност - стойността записана в MySql-а .. примерно ако имаме в таблицата записано :
1 ред - черен
2 ред - бял
3 ред - кафяв
4 ред - син
Генерира се форма с 4 сheckbox-а - черен , бял , кафяв и син .
Та ... как да го направя това нещо , ако са отбелязани примерно следните сheckbox-ове - 2-ри бял и 3-ти кафяв , и в textfield-а има попълнено примерно - "00000000" , да запише всичко това в друга таблица в MySql-а по следният начин :
|----------------------------------------------------------------------------------------|
|---ID---|------Колкона за textfield-а-------|---Колкона за сheckbox-а---|
|---------|------------------------------------------|-----------------------------------|
|----1----|---------------00000000--------------|---------------бял---------------|
|---------|------------------------------------------|-----------------------------------|
|----2----|--------------00000000---------------|--------------кафяв-------------|
|---------|------------------------------------------|-----------------------------------|
Благодарности .. !
Генерирам форма - едно textfield и няколко сheckbox-а , като сheckbox-овете се генерират от заявка към MySql > отваряме една таблица и вадим от втората колона всичките записи и генерираме толкова сheckbox-ове колкото са записите , със стойност - стойността записана в MySql-а .. примерно ако имаме в таблицата записано :
1 ред - черен
2 ред - бял
3 ред - кафяв
4 ред - син
Генерира се форма с 4 сheckbox-а - черен , бял , кафяв и син .
Та ... как да го направя това нещо , ако са отбелязани примерно следните сheckbox-ове - 2-ри бял и 3-ти кафяв , и в textfield-а има попълнено примерно - "00000000" , да запише всичко това в друга таблица в MySql-а по следният начин :
|----------------------------------------------------------------------------------------|
|---ID---|------Колкона за textfield-а-------|---Колкона за сheckbox-а---|
|---------|------------------------------------------|-----------------------------------|
|----1----|---------------00000000--------------|---------------бял---------------|
|---------|------------------------------------------|-----------------------------------|
|----2----|--------------00000000---------------|--------------кафяв-------------|
|---------|------------------------------------------|-----------------------------------|
Благодарности .. !
Re: PHP и Checkbox
<input type=checkbox name=color[] value=$colornum>
при събмит ти връща резултата от избраните в масив с име $_POST['color']
Break The UnBreakable
при събмит ти връща резултата от избраните в масив с име $_POST['color']
Break The UnBreakable
Re: PHP и Checkbox
<?
if (isset($_POST['Submit'])){
if (count($_POST['cviat'])>0){
$query = "INSERT INTO table (textfild, color) VALUES ";
foreach ($_POST['cviat'] as $k=>$v){
$q .= "('".addslashes($_POST['tteexxtt']."', '$k'),";
}
mysql_query(substr($q,0,strlen($q)-1);
}else{
?>
<form action=test.php method=post>
<input type=text name='tteexxtt' value='00000000'>
Бял:<input type=checkbox name=cviat['bel']>
Син:<input type=checkbox name=cviat['sin']>
Зелен:<input type=checkbox name=cviat['zelen']>
Черен:<input type=checkbox name=cviat['cheren']>
<input type=submit name=Submit>
</form>
<?
}
?>
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Повтаря ги по 2 пъти ....
Благодаря Ви , оправих всичко но остана само един проблем , че сега ги повтаря избраните .. примерно избрани са син и зелен ... като пусна едно ехо да видя какво става ги повтаря в резултата - син зелен син зелен .
Ето част от код-а :
======================================================
<?php
connect to MySql ... select DB ..
$query = mysql_query("Select * FROM Tablica");
?>
<html .... <form ... method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
while ($row = @mysql_fetch_array($query))
{
$getvar=$row["row2"];
?>
<tr>
<td>
<input type="checkbox" name="check[]" value="<?php echo $getvar; ?>"> <?php echo $getvar; ?>
</td>
</tr>
<?php
}
?>
.. <input type="SUBMIT" name=add ...
exit();
}
======================================================
Следва код който по принцип е по горе в скрипта но аз реших да го разделя тук така ...
======================================================
if ($_POST['add'])
{
$check = $_POST['check'];
foreach ($check as $value)
{
echo $value;
}
}
======================================================
Лошото е , че не мога да си открия грешката защо повтаря по 2 пъти всичко както казах в началото ..
Благодарности !
Ето част от код-а :
======================================================
<?php
connect to MySql ... select DB ..
$query = mysql_query("Select * FROM Tablica");
?>
<html .... <form ... method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
while ($row = @mysql_fetch_array($query))
{
$getvar=$row["row2"];
?>
<tr>
<td>
<input type="checkbox" name="check[]" value="<?php echo $getvar; ?>"> <?php echo $getvar; ?>
</td>
</tr>
<?php
}
?>
.. <input type="SUBMIT" name=add ...
exit();
}
======================================================
Следва код който по принцип е по горе в скрипта но аз реших да го разделя тук така ...
======================================================
if ($_POST['add'])
{
$check = $_POST['check'];
foreach ($check as $value)
{
echo $value;
}
}
======================================================
Лошото е , че не мога да си открия грешката защо повтаря по 2 пъти всичко както казах в началото ..
Благодарности !
Re: Повтаря ги по 2 пъти ....
Къде ти ги повтаря ? Във формата ли ?
Или в $_POST ?
Да не ги начисляваш по два пъти ?
Я по-добре paste - ни целия сорс на формата ...
А и имам един въпрос :
Защо правиш това присвояване : $check = $_POST['check'];
Можеш да завъртиш цикъла директно
foreach ($_POST['check'] as $value)
{
echo $value;
}
}
За да си наясно какво има в $_POST - а
направи си един print_r или var_dump на масива
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Или в $_POST ?
Да не ги начисляваш по два пъти ?
Я по-добре paste - ни целия сорс на формата ...
А и имам един въпрос :
Защо правиш това присвояване : $check = $_POST['check'];
Можеш да завъртиш цикъла директно
foreach ($_POST['check'] as $value)
{
echo $value;
}
}
За да си наясно какво има в $_POST - а
направи си един print_r или var_dump на масива
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: Повтаря ги по 2 пъти ....
Накрая извиквам -> echo $value; и резултата в зависимост на това кои боксове са отбелязани е два пъти .. примерно - зелен син зелен син (при отбелязан зелен и син бокс) , при положение , че резултата би трябвало да е само - зален син :) . Ето го и целия код :
==========================================================
<?php
session_start();
if (isset($HTTP_SESSION_VARS['id']))
{
include("var.inc.php");
if ($_POST['add'])
{
$based = $_POST['base'];
$checked = $_POST['check'];
foreach ($checked as $value)
{
echo $value;
}
exit();
}
$db = mysql_pconnect($db_host, $db_user, $db_pass);
mysql_select_db($db_data);
$query = mysql_query("Select * FROM Table1");
?>
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr>
<td>
<b>Base Url : </b>
<input type="text" name="base">
</td>
</tr>
<?php
while ($row = @mysql_fetch_array($query))
{
$getvar=$row["row2"];
?>
<tr>
<td>
<input type="checkbox" name="check[]" value="<?php echo $getvar; ?>"> <?php echo $getvar; ?>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><input type="SUBMIT" name=add value="Post Info"></td>
</tr>
</table></form></body></html>
<?php
exit();
}
else
{
require ( 'login.php' );
exit;
}
?>
==========================================================
==========================================================
<?php
session_start();
if (isset($HTTP_SESSION_VARS['id']))
{
include("var.inc.php");
if ($_POST['add'])
{
$based = $_POST['base'];
$checked = $_POST['check'];
foreach ($checked as $value)
{
echo $value;
}
exit();
}
$db = mysql_pconnect($db_host, $db_user, $db_pass);
mysql_select_db($db_data);
$query = mysql_query("Select * FROM Table1");
?>
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr>
<td>
<b>Base Url : </b>
<input type="text" name="base">
</td>
</tr>
<?php
while ($row = @mysql_fetch_array($query))
{
$getvar=$row["row2"];
?>
<tr>
<td>
<input type="checkbox" name="check[]" value="<?php echo $getvar; ?>"> <?php echo $getvar; ?>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="2"><input type="SUBMIT" name=add value="Post Info"></td>
</tr>
</table></form></body></html>
<?php
exit();
}
else
{
require ( 'login.php' );
exit;
}
?>
==========================================================