все checkbox в одной переменной

Статус
В этой теме нельзя размещать новые ответы.
Оба варианта тестишь в браузере? Есть мнение перед join добавить
$tags = array();
и/или проверка на сабмит. зачем выполнять код, когда ничего не передано? надо запихнуть код в if и подкорректировать его
if($_GET['action']=='add')
 
noiz не массив. Но в простом случае работает (мой первый пример в прошлом сообщении).

А в другом (даже если вообще tags2 убираю) не работает =(

Ошибка на $tagsall = join(',', $tags);

добавлено:

ximix, вставил $tags = array(); перед $tagsall = join(',', $tags); и ошибка пропала. Но теперь просто ничего не выводит (т.е. как будто переменная пустая.) Сделал условие повыше, но толку нет...

вроде переменная tags больше нигде не встречается, всё правильно, как в первом примере, но не работает =(

ещё у меня

header.php
PHP:
<?
session_start();
Error_Reporting(E_ALL & ~E_NOTICE);
      $alogin=$_SESSION['alogin'];
	  $apassword=$_SESSION['apassword'];
	  $astatus=$_SESSION['astatus'];
if($_GET["logout"]=="1"){
	// ИНТЕГРИРОВАННЫЙ ВЫХОД ИЗ ФОРУМА ЧЕРЕЗ ФОРМУ ПАНЕЛИ
	print
	"<form action=\"logout.php\" method=\"post\" id=\"form\">
		<input type='hidden' name='login' id='login'>
		<input type='hidden' name='password' id='password'>
	</form>
	<div class='SB' id='result' style='border:0;'>Передача данных...</div>
	<script>
		document.getElementById('login').value = '".$alogin."';
		document.getElementById('pass').value = '".$apassword."';
		document.getElementById('form').submit();
	</script>";
	unset($_SESSION, $alogin, $apassword, $astatus);
	session_unset();
	session_destroy();
	exit;
}
	  
//    if(!$_SESSION["alogin"] || $_SESSION["alogin"]==''){header( 'Location: auth.php' ) ;die();}	  

	include('include/config.php');
	include('include/functions.php');	
	mysql_query("SET SQL_BIG_SELECTS=1");
	
	//Проверка на бан (если забанен во время логина - выбиваем сессию)
	$bancheck=mysql_fetch_assoc(mysql_query("SELECT status FROM ba_users WHERE login='$alogin'"));
	$bancheck=$bancheck["status"];
	if($bancheck=="6"){
		unset($_SESSION, $alogin, $apassword, $astatus);
		session_unset();
		session_destroy();
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Business Arts</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <meta name="author" content="Dark Wizard"> 
<LINK href="default.css" type=text/css rel=stylesheet> 
</head>
<body bgcolor="#EFEFEF" topmargin="0" leftmargin="0" onLoad="clock()">
<center><table cellspacing="0" cellpadding="0" width=1000px bgcolor="#FFFFFF" height=100% border="0">
<tr><td valign=top height=95px align=center>
<!-- первая полоса -->
<table width=967px height=90px cellspacing="0" cellpadding="0" border="0">
<tr><td width=400px align=center valign=middle>
<a href="index.php"><img src="images/logo.jpg" width="326" height="89" alt="Business Arts" border="0" title="На Главную"></a>
</td><td align=right><a href="advert.php"><img src="images/nobanner.jpg" width="545" height="83" alt="" border="0"></a>
</td></tr></table>
<!-- конец первой полосы -->
</td></tr>
<tr><td align=center valign=top height=193px>
<!-- верхняя панель -->
<table background="images/panel1.jpg" width="967" height="151" border="0">
<tr><td class=tltext width=320px>
<b>С вопросами обращайтесь<br>по телефону:<br><br>
<font color="white">+ 7 </font> (<font color="white"> 916 </font>)<font color="white"> 283 - 62 - 82</b></font>
</td><td></td>
<td width=270px class=toptext>
<!-- форма авторизации -->
<?
    if(!$_SESSION["alogin"] || $_SESSION["alogin"]==''){
?>	
            <form method="post" action="auth.php">
<h3><font color="#60A6C8">Личный кабинет</font></h3>
<font color=red><?
$mes=$_GET['mes'];
if($mes=="wrongdata"){echo "Неправильные&nbsp;логин/пароль.<br><br>";}
if($mes=="wrongsymbol"){echo "Неправильные&nbsp;символы&nbsp;в&nbsp;логине&nbsp;и/или&nbsp;пароле.<br><br>";}
?>
</font>
<input type="text" name="login" maxlength="25" class="auth"><br>
<input type="password" name="password" maxlength="16" class="auth"><br>
<a href="#">Забыли пароль?</a>&nbsp;<input type="submit"  value="Войти" class="SBL"><br>
<a href="register.php">Регистрация</a>
            </form> <form name="clockForm"><input type="hidden" name="clockBox" size="1"></form>
<? }else{ 
echo "Вы авторизованы как <b>".$alogin."</b>.<br>";
echo "Ваш статус: <b>";
showuserstatus($astatus);
?></b>.<br><br>
<table class=toptext>
<tr><td>Сегодня:</td><td><?=date(d.'.'.m.'.'.Y);?></td></tr>
<tr><td>Сейчас:</td><td><form name="clockForm" class=clock><input type="text" name="clockBox" size="8" class=clock></form></td></tr>
</table>
<?
}
?>			
<!-- конец формы авторизации -->
</td>
</tr>
</table>
<!-- конец верхней панели -->
<!-- верхнее меню -->
<table cellspacing=0 cellpadding=0 border=0>
<tr><td valign=top><img src="images/lmenu.jpg" width="8" height="50" alt="" border="0"></td>
<td align=center><?
include('menu.php');
?></td>
<td valign=top><img src="images/rmenu.jpg" width="8" height="50" alt="" border="0"></td></tr>
</table>
<!-- конец верхнего меню -->
</td></tr>
<tr><td align=left valign=top>
<!-- основной текст -->
<table class=text width=100% border=0 cellspacing=20px style="margin-top:-25px;"><tr>
<td valign=top>

sidebar.php
PHP:
</td><td width=200px valign=top>
<h2>Тест меню</h2>

<? if($alogin){
echo "Вы авторизованы как <b>".$alogin."</b>.<br>";
}else{
echo "Вы не авторизованы.<br>";
}
?><br>
<a href="register.php">регистрация</a><br><br>
<a href="users.php">пользователи</a><br>
<a href="team.php">сотрудники</a><br>
<a href="catalog.php">каталог</a><br>
<a href="portfolio.php">портфолио</a><br>
<br>
<a href="logout.php">выход</a><br><br>



<h2>Каталог</h2>
<img src="images/sidet.jpg" width="197" height="5" alt="" border="0"><ul class="side">
<li><a href="catalog.php?type=">WEB 2.0</a></li>
<li><a href="catalog.php?type=">Flash сайты</a></li>
<li><a href="catalog.php?type=">Автомобили</a></li>
<li><a href="catalog.php?type=">Без графики</a></li>
<li><a href="catalog.php?type=">Бизнес</a></li>
<li><a href="catalog.php?type=">Гильдии и Кланы</a></li>
<li><a href="catalog.php?type=">Городские и учебные</a></li>
<li><a href="catalog.php?type=">Другие</a></li>
<li><a href="catalog.php?type=">Знакомства</a></li>
<li><a href="catalog.php?type=">Искусство и Фотография</a></li>
<li><a href="catalog.php?type=">Кафе и Рестораны</a></li>
<li><a href="catalog.php?type=">Книги</a></li>
<li><a href="catalog.php?type=">Мебель</a></li>
<li><a href="catalog.php?type=">Медицина</a></li>
<li><a href="catalog.php?type=">Минимализм</a></li>
<li><a href="catalog.php?type=">Наука</a></li>
<li><a href="catalog.php?type=">Персональные</a></li>
<li><a href="catalog.php?type=">Порталы</a></li>
<li><a href="catalog.php?type=">Премиум</a></li>
<li><a href="catalog.php?type=">Природа</a></li>
<li><a href="catalog.php?type=">Путешествия</a></li>
<li><a href="catalog.php?type=">Развлечения и досуг</a></li>
<li><a href="catalog.php?type=">Религия</a></li>
<li><a href="catalog.php?type=">Свадьба</a></li>
<li><a href="catalog.php?type=">Связь и Компьютеры</a></li>
<li><a href="catalog.php?type=">Софт</a></li>
<li><a href="catalog.php?type=">Спорт</a></li>
<li><a href="catalog.php?type=">Строительство</a></li>
<li><a href="catalog.php?type=">Хостинг</a></li>
<li><a href="catalog.php?type=">Ювелирка</a></li>
</ul><img src="images/sideb.jpg" width="197" height="5" alt="" border="0" style="margin-top:-5px;">
<h2>Поиск</h2>
<table cellspacing=0 cellpadding=0 border=0 background="images/searchbg.jpg" width="199" height="67">
<tr><td align=right valign=middle>
<form action=search.php method=POST>
<input type=text value="Найти"></td><td>&nbsp;&nbsp;<img src="images/ok.jpg" alt="" border="0">&nbsp;
</form>
</tr>
</table>
</td>

и footer.php
PHP:
</tr></table>

</td></tr>
</table>
<table width=1000px border=0 bgcolor="#000000" cellspacing=5 cellpadding=0><tr>
<td class=copy align=left>© Business Arts 2004 - <?=date(Y);?></td>
<td></td>
<td align=right></td>
</tr></table>
</center>
</body>
</html>
 
Ничего не понимаю...
не работает. Выдаёт:
Warning: join() [function.join]: Bad arguments. in Z:\home\test1.ru\www\ba\add_project.php on line 16
Данная ошибка возникает если $_POST['tags'] не определено (не выбран ни один чек)
Если выбран хоть один чек - то ошибки не возникает, поэтому добавь:
PHP:
$tagsall = "";
if (!empty($tags)) $tagsall = join(',', $tags); 
$tagsall .= $tags2;
 
pslava, не помогло.

print_r($_POST); выдаёт:

PHP:
Array ( [project] => Первая работа [price] => 100 [type] => sport [MAX_PLACE_SIZE] => 30000 [code] => 1 [about] => это неплохой сайт посмотрим, как тут с переносами строк [tags] => синие [tags2] => раз, два, три [upload] => Послать проект на модерацию ) 
Warning: join() [function.join]: Bad arguments. in Z:\home\test1.ru\www\ba\add_project.php on line 21

т.е. [tags] => синие
берётся последний элемент, напротив которого стоит галочка. И хотя он берётся, он почему-то
1) не обрабатывается как массив
2) куда-то пропадают все выделенные элементы до него.

(не выбран ни один чек)
для этого я на один чек поставил checked...
 
может сделать имена с постфиксом.
Например tags_1, tags_2, tags_3 и т.д.
А объединять
PHP:
for ($i=1; $i<=MAX_CHOICE_COUNT; $i++)
{
$tagsall .= $_POST['tags_'.$i]; 
}
 
Чтоб не было проблем перед обработкой массивов можно проверять массив ли это:
PHP:
if(is_array($tags){
//обрабатываем
$tagsall = join(',', $tags);
}else{
//чекбоксы не отмечены
$tagsall = "";
}
 
pslava, не помогло.
print_r($_POST); выдаёт:
PHP:
Array ( [project] => Первая работа [price] => 100 [type] => sport [MAX_PLACE_SIZE] => 30000 [code] => 1 [about] => это неплохой сайт посмотрим, как тут с переносами строк [tags] => синие [tags2] => раз, два, три [upload] => Послать проект на модерацию ) 
Warning: join() [function.join]: Bad arguments. in Z:\home\test1.ru\www\ba\add_project.php on line 21
т.е. [tags] => синие
берётся последний элемент, напротив которого стоит галочка. И хотя он берётся, он почему-то
1) не обрабатывается как массив
2) куда-то пропадают все выделенные элементы до него.
для этого я на один чек поставил checked...
Не понимаю как ты вызываешь print_r($_POST['tags']);
должно вывести Array ( [0] => белые ) а у тебя выводит просто строку, у тебя получается передаешь функции не массив, а строку - поэтому и ошибка
У меня твой неработающий пример работает!
 
у тебя идет хтмл, без пхп. так у тебя и нет заполнения массива
где начинаются
else
{
?>
<input type="checkbox" name="tags[]"
...
</form>
<?
}
?>
меняй на
else
{
echo '
<input type="checkbox" name="'.tags[].'"
...
</form>
';
}
главное условие, обозначение, что массив и джоин. в таком порядке


Добавлено через 16 минут
у тебя идет хтмл, без пхп. так у тебя и нет заполнения массива
где начинаются
else
{
?>
<input type="checkbox" name="tags[]"
...
</form>
<?
}
?>
меняй на
else
{
$ch_names=array('
бежевые','розовые','серые','...');
foreach ($ch_names as $key => $value) {
echo '<input type="checkbox" name="tags['.$key.']" value="'.$value.'">&nbsp;'.$value.'<br>';
}

</form>
';
}
главное условие, обозначение, что массив и джоин. в таком порядке

прошлый раз фигню написал, этот раз может быть уже лучше :)
 
этот кусок поставь после if($action=='add')
$project=$_POST['project'];
$type=$_POST['type'];
$price=$_POST['price'];
$about=$_POST['about'];
$code=$_POST['code'];
$tags=$_POST['tags'];
$tags2=$_POST['tags2'];

$tagsall = join(',', $tags);
$tagsall .= $tags2;

$id=mysql_num_rows(mysql_query("select * from ba_catalog"));

и еще... когда отмечен только один чекбокс переменная не будет масивом. в таком случаи лучше написать так
$tagsall = join(',', (array)$tags);
 
Сейчас посмотрел твой код add_project.
На вскидку, пара ошибок :

PHP:
$action=$_GET['action'];

и тут же :

HTML:
<form action="add_project.php?action=add" method=post enctype=multipart/form-data>

Ты уж определись - гет или пост. :)

Да и вообще - это неверно.
Если ПОСТ, то нужно :

HTML:
<form action="add_project.php" method=post enctype=multipart/form-data>
<input type="hidden" name="action" value="add" />

PHP:
$action=$_POST['action'];

или

PHP:
$action=$_REQUEST['action'];
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху