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

Тема в разделе "PHP", создана пользователем Dark Wizard, 3 июн 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Проблема

    есть форма с метками:

    HTML:
    <input type="checkbox" name="tags" value="бежевые">&nbsp;бежевые<br>
    <input type="checkbox" name="tags" value="белые">&nbsp;белые<br>
    <input type="checkbox" name="tags" value="голубые">&nbsp;голубые<br>
    <input type="checkbox" name="tags" value="желтые">&nbsp;желтые<br>
    мне нужно все метки засунуть в одну переменную, через запятую.

    PHP:
    $tags=$_POST['tags'];
    if(!empty(
    $tags))
    {
    foreach(
    $tags as $val$tagsall.= $val.",";
    }
    не работает =(

    да и print_r($_POST); почему-то выдаёт только первый тег.

    Помогите, пожалуйста...
     
  2. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    <input type="checkbox" name="tags[]"

    ....

    foreach ( $_REQUEST['tags'] as $value )
    {
    $tags .= $value.",";
    }

    $tags = substr($tags, 0, -1);
     
    Dark Wizard нравится это.
  3. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    tarantas, на
    PHP:
    foreach ($_REQUEST['tags'] as $value)
    выдаёт ошибку:

    Warning: Invalid argument supplied for foreach() in Z:\home\test1.ru\www\ba\add_project.php on line 66
     
  4. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    Значит форма не передает tags в php.
    Смотри html, скорее всего ошибка гдето там.
     
  5. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    полный листинг:

    HTML:
    
    <form action="add_project.php?action=add" method=post enctype=multipart/form-data>
    
    <input type="checkbox" name="tags[]" value="бежевые">&nbsp;бежевые<br>
    <input type="checkbox" name="tags[]" value="белые">&nbsp;белые<br>
    <input type="checkbox" name="tags[]" value="голубые">&nbsp;голубые<br>
    <input type="checkbox" name="tags[]" value="желтые">&nbsp;желтые<br>
    <input type="checkbox" name="tags[]" value="зеленые">&nbsp;зеленые<br>
    <input type="checkbox" name="tags[]" value="коричневые">&nbsp;коричневые<br>
    <input type="checkbox" name="tags[]" value="красные">&nbsp;красные
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="оранжевые">&nbsp;оранжевые<br>
    <input type="checkbox" name="tags[]" value="розовые">&nbsp;розовые<br>
    <input type="checkbox" name="tags[]" value="серые">&nbsp;серые<br>
    <input type="checkbox" name="tags[]" value="синие">&nbsp;синие<br>
    <input type="checkbox" name="tags[]" value="сиреневые">&nbsp;сиреневые<br> 
    <input type="checkbox" name="tags[]" value="черные">&nbsp;черные
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="баннеры">&nbsp;баннеры<br>
    <input type="checkbox" name="tags[]" value="виджеты">&nbsp;виджеты<br>
    <input type="checkbox" name="tags[]" value="закругленные">&nbsp;закругленные<br>
    <input type="checkbox" name="tags[]" value="календарь">&nbsp;календарь<br>
    <input type="checkbox" name="tags[]" value="левое меню">&nbsp;левое меню<br>
    <input type="checkbox" name="tags[]" value="меню внизу">&nbsp;меню внизу<br>
    <input type="checkbox" name="tags[]" value="меню 2 стороны">&nbsp;меню 2 стороны<br>
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="настраиваемые">&nbsp;настраиваемые<br>
    <input type="checkbox" name="tags[]" value="правое меню">&nbsp;правое меню<br>
    <input type="checkbox" name="tags[]" value="резиновые">&nbsp;резиновые<br>
    <input type="checkbox" name="tags[]" value="1 колонка">&nbsp;1 колонка<br>
    <input type="checkbox" name="tags[]" value="2 колонки">&nbsp;2 колонки<br>
    <input type="checkbox" name="tags[]" value="3 колонки">&nbsp;3 колонки<br>
    <input type="checkbox" name="tags[]" value="4 колонки">&nbsp;4 колонки<br>
    <input type="checkbox" name="tags[]" value="java&tabs">&nbsp;java&tabs
    <input type=submit name=upload value="Послать проект на модерацию">
    
    вот...
     
  6. tarantas

    tarantas Постоялец

    Регистр.:
    22 мар 2008
    Сообщения:
    75
    Симпатии:
    14
    Попробуй :
    1. убрать enctype=multipart/form-data
    2. Закрыть форму ( </form> )
    3. Сделать print_r($_REQUEST);
     
  7. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    1. не могу, т.к. ещё файл загружаю через <input type=file>.
    2. закрыта, забыл дописать
    3. выдаёт в одном месте
    PHP:
    [tags] => серые 
    и всё...

    P.S. 1. убрал, не помогло...

    P.P.S. Такой вариант
    PHP:
    <?
    print_r($_REQUEST);
    ?>
    <form action="test.php" method=post enctype=multipart/form-data>
    <br><br>
    <input type="checkbox" name="tags[]" value="бежевые">&nbsp;бежевые<br>
    <input type="checkbox" name="tags[]" value="белые">&nbsp;белые<br>
    <input type="checkbox" name="tags[]" value="голубые">&nbsp;голубые<br>
    <input type="checkbox" name="tags[]" value="желтые">&nbsp;желтые<br>
    <input type="checkbox" name="tags[]" value="зеленые">&nbsp;зеленые<br>
    <input type="checkbox" name="tags[]" value="коричневые">&nbsp;коричневые<br>
    <input type="checkbox" name="tags[]" value="красные 1">&nbsp;красные<br><br>
    <input type=submit value="отправить">
    </form>
    вроде работает... буду думать
     
  8. noiz

    noiz Создатель

    Регистр.:
    9 апр 2009
    Сообщения:
    16
    Симпатии:
    1
    Советую кодить с E_ALL и читать мануал php.net

    Код:
    $tagsall = join(',', $tags);
     
    Dark Wizard нравится это.
  9. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Ничего не понимаю...

    PHP:
    <?
    $tags=$_POST['tags'];
    $tags2=$_POST['tags2'];
    $tagsall join(', '$tags);
    $tagsall .= $tags2;
    echo 
    $tagsall;
    ?>
    <form action="test.php" method=post enctype=multipart/form-data>
    <br><br>
    <input type="checkbox" name="tags[]" value="бежевые">&nbsp;бежевые<br>
    <input type="checkbox" name="tags[]" value="белые">&nbsp;белые<br>
    <input type="checkbox" name="tags[]" value="голубые">&nbsp;голубые<br>
    <input type="checkbox" name="tags[]" value="желтые">&nbsp;желтые<br>
    <input type="checkbox" name="tags[]" value="зеленые">&nbsp;зеленые<br>
    <input type="checkbox" name="tags[]" value="коричневые">&nbsp;коричневые<br>
    <input type="checkbox" name="tags[]" value="красные&1">&nbsp;красные<br><br>
    <input type=text name=tags2><br><br>
    <input type=submit name=upload value="отправить">
    </form>
    отлично работает.

    а

    PHP:
    <?
        include(
    'header.php');
    ?>
    <h2>Добавление нового проекта</h2>
    <?
    $action=$_GET['action'];

    $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"));



    if($action=='add')
    {

    //проверка данных
    $max_image_width    = 130;
    $max_image_width_big    = 700;
    $max_image_height    = 130;
    $max_image_height_big    = 1200;
    $max_image_size        = 40 * 1024;
    $max_image_size_big        = 1 * 1024 * 1024;
    $valid_types_pic         =  array("jpg");
    $valid_types_place         =  array("rar", "zip");
    $ext_place = substr($_FILES['place']['name'], 1 + strrpos($_FILES['place']['name'], "."));
    $ext_prepic = substr($_FILES['prepic']['name'], 1 + strrpos($_FILES['prepic']['name'], "."));
    $ext_pic1 = substr($_FILES['pic1']['name'], 1 + strrpos($_FILES['pic1']['name'], "."));
    $ext_pic2 = substr($_FILES['pic2']['name'], 1 + strrpos($_FILES['pic2']['name'], "."));
    $sizeprepic = GetImageSize($prepic);
    $sizepic1 = GetImageSize($pic1);
    $sizepic2 = GetImageSize($pic2);

    if($project==''){echo "Вы забыли указать название проекта!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";
    }elseif($price<0){echo "Вы неправильно указали цену!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";
    }elseif(($price>0)and($code=='')){echo "Вы забыли указать пароль!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($about==''){echo "Вы не заполнили описание проекта!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($_FILES["place"]["size"] <1){echo "Вы не выбрали архив!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($_FILES["prepic"]["size"] <1){echo "Вы не мини картинку!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($_FILES["pic1"]["size"] <1){echo "Вы не выбрали изображение 1!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif(!in_array($ext_place, $valid_types_place)){echo 'Файл не являеся архивом. Нужно выбрать rar или zip архив!';}
    elseif(!in_array($ext_prepic, $valid_types_pic)){echo 'Мини картинка должна быть в формате JPG!';}
    elseif(!in_array($ext_pic1, $valid_types_pic)){echo 'Изображение 1 должно быть в формате JPG!';}
    elseif((!in_array($ext_pic2, $valid_types_pic))and($_FILES["pic2"]["size"] >1)){echo 'Изображение 2 быть в формате JPG!';}
    elseif(($sizeprepic) && ($sizeprepic[0] <> $max_image_width) && ($sizeprepic[1] <> $max_image_height)) {echo 'Мини картинка должна быть 130 на 130 пикселей и не больше 40 килобайт!';}
    elseif(($sizepic1) && ($sizepic1[0] > $max_image_width_big) && ($sizepic1[1] > $max_image_height_big)) {echo 'Максимальные размеры изображения 1 - ширина 700px, высота 1200px';}
    elseif((($sizepic2) && ($sizepic2[0] > $max_image_width_big) && ($sizepic2[1] > $max_image_height_big))and($_FILES["pic2"]["size"] >1)) {echo 'Максимальные размеры изображения 2 - ширина 700px, высота 1200px';}
    elseif($_FILES["prepic"]["size"] > $max_image_size){echo "Мини картинка не должна весить больше 40 килобайт!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($_FILES["pic1"]["size"] > $max_image_size_big){echo "Изображение 1 не должно весить больше 1 мегабайта!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    elseif($_FILES["pic2"]["size"] > $max_image_size_big){echo "Изображение 2 не должно весить больше 1 мегабайта!<br><br><a href=\"javascript:history.back();\">Вернуться</a>.";}
    else
        {
    //если всё верно
    echo "<b>".$project."</b><br><br>";

    echo "Категория: ";
    showprojecttype($type);
    echo "<br>Метки: ";

    echo "<br>".$tagsall.".<br><br>";

    echo "Загружаем файлы...<br><br>";

    if(!is_dir("catalog/".$id)and(!mkdir("catalog/".$id, 0777)))
    {
    echo "Ошибка при создании директории";
    exit;
    }
    chmod ("catalog/".$id, 0777);

       if($_FILES["place"]["size"] > 1024*10*1024)
       {
         echo ("Размер архива превышает 10 мегабайт");
         exit;
       }
       if(copy($_FILES["place"]["tmp_name"], "catalog/".$id."/".$_FILES["place"]["name"]))
       {
    copy($_FILES["prepic"]["tmp_name"], "catalog/".$id."/".$_FILES["prepic"]["name"]);
    rename("catalog/".$id."/".$_FILES["prepic"]["name"], "catalog/".$id."/prepic.jpg");

    copy($_FILES["pic1"]["tmp_name"], "catalog/".$id."/".$_FILES["pic1"]["name"]);
    rename("catalog/".$id."/".$_FILES["pic1"]["name"], "catalog/".$id."/pic1.jpg");

    if($_FILES["pic2"]["size"] > 0){
    copy($_FILES["pic2"]["tmp_name"], "catalog/".$id."/".$_FILES["pic2"]["name"]);
    rename("catalog/".$id."/".$_FILES["pic2"]["name"], "catalog/".$id."/pic2.jpg");
    }

    echo "<img src=\"catalog/".$id."/prepic.jpg\" width=130 height=130 border=1 align=left style=\"margin-right:20px;\">";
    echo showbr($about);
    echo "<br><br><br>";
       
         echo("Архив успешно загружен!<br><br>");
         echo("<b>Характеристики архива:</b> <br>");
         echo("Имя архива: ");
         echo($_FILES["place"]["name"]);
         echo("<br>Размер архива: ");
         echo(intval($_FILES["place"]["size"]/1000));
         echo " килобайт";
       } else {
          echo("Ошибка загрузки архива<br><br>");
       }

    echo "<br><br>Проект № ".$id." отправлен на модерацию. Спасибо за добавление!<br><br><br><br>";
    echo "<a href=\"index.php\">На Главную</a> или <a href=\"add_project.php\">добавить ещё один проект</a>.";
        }
    }
    else
    {
    ?>
    <form action="add_project.php?action=add" method=post enctype=multipart/form-data>
    <table class=text border=0 cellspacing=10>
    <tr><td colspan=2>Название:&nbsp;&nbsp;<input type=text name=project></td>
    <td colspan=2>Цена:&nbsp;&nbsp;<input type=text name=price value="0">&nbsp;руб.</td></tr>
    <tr><td colspan=4>
    <b>Категория:</b><br>
    <table class=text cellspacing=4 width=100%>
    <tr><td>
    <input type="radio" name="type" value="web20">&nbsp;WEB 2.0<br>
    <input type="radio" name="type" value="flash">&nbsp;Flash сайты<br>
    <input type="radio" name="type" value="auto">&nbsp;Автомобили<br>
    <input type="radio" name="type" value="nograth">&nbsp;Без графики<br>
    <input type="radio" name="type" value="business">&nbsp;Бизнес<br>
    <input type="radio" name="type" value="guild">&nbsp;Гильдии и Кланы<br>
    </td><td>
    <input type="radio" name="type" value="city">&nbsp;Городские и учебные<br>
    <input type="radio" name="type" value="other" checked>&nbsp;<b>Другие</b><br>
    <input type="radio" name="type" value="dating">&nbsp;Знакомства<br>
    <input type="radio" name="type" value="art">&nbsp;Искусство и Фото<br>
    <input type="radio" name="type" value="food">&nbsp;Кафе и Рестораны<br>
    <input type="radio" name="type" value="books">&nbsp;Книги<br>
    </td><td>
    <input type="radio" name="type" value="furniture">&nbsp;Мебель<br>
    <input type="radio" name="type" value="medcine">&nbsp;Медицина<br>
    <input type="radio" name="type" value="mini">&nbsp;Минимализм<br>
    <input type="radio" name="type" value="science">&nbsp;Наука<br>
    <input type="radio" name="type" value="personal">&nbsp;Персональные<br>
    <input type="radio" name="type" value="portal">&nbsp;Порталы<br>
    </td><td>
    <input type="radio" name="type" value="premium">&nbsp;Премиум<br>
    <input type="radio" name="type" value="nature">&nbsp;Природа<br>
    <input type="radio" name="type" value="travel">&nbsp;Путешествия<br>
    <input type="radio" name="type" value="games">&nbsp;Развлечения<br>
    <input type="radio" name="type" value="religion">&nbsp;Религия<br>
    <input type="radio" name="type" value="married">&nbsp;Свадьба<br>
    </td><td>
    <input type="radio" name="type" value="computer">&nbsp;Связь и Компьютеры<br>
    <input type="radio" name="type" value="soft">&nbsp;Софт<br>
    <input type="radio" name="type" value="sport">&nbsp;Спорт<br>
    <input type="radio" name="type" value="building">&nbsp;Строительство<br>
    <input type="radio" name="type" value="hosting">&nbsp;Хостинг<br>
    <input type="radio" name="type" value="jewel">&nbsp;Ювелирка<br>
    </td></tr>
    </table>

    </td></tr>
    <tr><td>Архив*:</td>
    <input type="hidden" name="MAX_PLACE_SIZE" value="10000000">
    <td><input type=file name=place></td>
    <td>Картинка (130х130)</td>
    <td><input type=file name=prepic></td>
    </tr>
    <tr><td>Пароль на архив:</td>
    <td><input type=text name="code"></td>
    <td>Изображение 1:</td>
    <td><input type=file name=pic1></td>
    </tr>
    <tr><td colspan=2><i>*до 10mb в формате zip; в архиве PSD дизайна</i></td><td>Изображение 2:</td><td><input type=file name=pic2></td></tr>

    <tr><td colspan=2><b>Подробное описание:</b></td>
    <td colspan=2 align=center><i>Все картинки должны быть в формате JPG.</i></td>
    </tr>
    <tr><td colspan=4><textarea name="about" style="width:100%" rows=10></textarea></td></tr>

    <tr><td colspan=4>
    <b>Метки:</b></tr>
    <tr><td colspan=4>

    <table class=text cellspacing=2 width=100%>
    <tr>
    <td><b>по цвету:</b></td>
    <td></td>
    <td><b>по структуре:</b></td>
    <td></td>
    </tr>
    <tr>
    <td valign=top>
    <input type="checkbox" name="tags[]" value="бежевые">&nbsp;бежевые<br>
    <input type="checkbox" name="tags[]" value="белые">&nbsp;белые<br>
    <input type="checkbox" name="tags[]" value="голубые">&nbsp;голубые<br>
    <input type="checkbox" name="tags[]" value="желтые">&nbsp;желтые<br>
    <input type="checkbox" name="tags[]" value="зеленые">&nbsp;зеленые<br>
    <input type="checkbox" name="tags[]" value="коричневые">&nbsp;коричневые<br>
    <input type="checkbox" name="tags[]" value="красные">&nbsp;красные
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="оранжевые">&nbsp;оранжевые<br>
    <input type="checkbox" name="tags[]" value="розовые">&nbsp;розовые<br>
    <input type="checkbox" name="tags[]" value="серые">&nbsp;серые<br>
    <input type="checkbox" name="tags[]" value="синие">&nbsp;синие<br>
    <input type="checkbox" name="tags[]" value="сиреневые">&nbsp;сиреневые<br> 
    <input type="checkbox" name="tags[]" value="черные">&nbsp;черные
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="баннеры">&nbsp;баннеры<br>
    <input type="checkbox" name="tags[]" value="виджеты">&nbsp;виджеты<br>
    <input type="checkbox" name="tags[]" value="закругленные">&nbsp;закругленные<br>
    <input type="checkbox" name="tags[]" value="календарь">&nbsp;календарь<br>
    <input type="checkbox" name="tags[]" value="левое меню">&nbsp;левое меню<br>
    <input type="checkbox" name="tags[]" value="меню внизу">&nbsp;меню внизу<br>
    <input type="checkbox" name="tags[]" value="меню 2 стороны">&nbsp;меню 2 стороны<br>
    </td><td valign=top>
    <input type="checkbox" name="tags[]" value="настраиваемые">&nbsp;настраиваемые<br>
    <input type="checkbox" name="tags[]" value="правое меню">&nbsp;правое меню<br>
    <input type="checkbox" name="tags[]" value="резиновые">&nbsp;резиновые<br>
    <input type="checkbox" name="tags[]" value="1 колонка">&nbsp;1 колонка<br>
    <input type="checkbox" name="tags[]" value="2 колонки">&nbsp;2 колонки<br>
    <input type="checkbox" name="tags[]" value="3 колонки">&nbsp;3 колонки<br>
    <input type="checkbox" name="tags[]" value="4 колонки">&nbsp;4 колонки<br>
    <input type="checkbox" name="tags[]" value="java tabs">&nbsp;java&tabs</td>
    </tr>
    </table>
    </td></tr>
    <tr><td colspan=4>Свои&nbsp;метки&nbsp;(через&nbsp;запятую):&nbsp;&nbsp;<input type=text name=tags2 style="width:70%"></td></tr>
    </table>
    <center><input type=submit name=upload value="Послать проект на модерацию"></center>
    </form>
    <?
    }
    ?>

    <?
    include('sidebar.php');
    include('footer.php');
    ?>
    не работает. Выдаёт:

    Warning: join() [function.join]: Bad arguments. in Z:\home\test1.ru\www\ba\add_project.php on line 16
     
  10. noiz

    noiz Создатель

    Регистр.:
    9 апр 2009
    Сообщения:
    16
    Симпатии:
    1
    tags2 - это не массив, понятно почему:
    Код:
    <input type=text name=tags2 style="width:70%">
     
Статус темы:
Закрыта.