PHP и Checkbox

5 отговора 208 прегледа
#1

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---------------|--------------кафяв-------------|
|---------|------------------------------------------|-----------------------------------|


Благодарности .. !

Отговор
в отговор на PHPDevil #2

Re: PHP и Checkbox

<input type=checkbox name=color[] value=$colornum>
при събмит ти връща резултата от избраните в масив с име $_POST['color']

Break The UnBreakable
Отговор
в отговор на PHPDevil #3

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
Отговор
в отговор на ro6avia #4

Повтаря ги по 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 пъти всичко както казах в началото ..

Благодарности !

Отговор
в отговор на PHPDevil #5

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
Отговор
в отговор на ro6avia #6

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;
}


?>
==========================================================

Отговор