За последние 24 часа нас посетили 25026 программистов и 1737 роботов. Сейчас ищут 846 программистов ...

checkbox и while

Тема в разделе "PHP для новичков", создана пользователем q0b3rMAN, 24 май 2012.

  1. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    доброго времени суток.
    короче....

    такая трабла, в коде должно быть несколько значений чекбосов...(в моей ситуации это категории)...так вот, названия категорий берутся через while...собственно вот код:

    Код (Text):
    1.  $result = mysql_query("SELECT id,namecat    FROM cat ORDER BY id ASC");
    2.             $myrow = mysql_fetch_array($result);
    3.             do
    4.             {
    5.             printf("<input type='checkbox' name='%d' value='0' />%s<br>",$myrow['id'],$myrow['namecat']);
    6.             }
    7.            
    8.             while($myrow = mysql_fetch_array($result));
    в общем видно что имя чекбокса это ID категории, так вот, как мне возможно ложить в переменную выбранный чекбокс?
    имеется ввиду что мне нужно знать айди выбранной категории
     
  2. FalkoN

    FalkoN Активный пользователь

    С нами с:
    1 апр 2011
    Сообщения:
    184
    Симпатии:
    0
    Адрес:
    Екатеринбург
    printf("<input type='checkbox' name='%d' value='$myrow['id']' />%s<br>",$myrow['id'],$myrow['namecat']);
    тогда обработчику можно передавать переменную с именем, указанном в name, которая будет иметь значение value.
    Или я че-то не так понял...?
     
  3. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Он передает значение только одной категории а нужно несколько, категорий более 200..
    или как брать значение из value?
     
  4. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    нужно:
    1) атрибут name сделать как category[]
    2) атрибут value приравнять id ктегории
    Код (Text):
    1.  
    2. $result = mysql_query("SELECT id,namecat    FROM cat ORDER BY id ASC");
    3. $myrow = mysql_fetch_array($result);
    4. do
    5. {
    6.         printf("<input type='checkbox' name='category[]' value='%d' />%s<br>",$myrow['id'],$myrow['namecat']);
    7. }while($myrow = mysql_fetch_array($result));      
    Тогда при обработке формы в массиве $_POST['category'] будут значения выбранных категорий.
    Если же ничего не выбрано, тогда $_POST['category'] не будет установлен
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вы бы человеческий код писали бы человеку а не эту поповщину
     
  6. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    получается что $_POST['category'], выводит просто слово "Array".
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    При таком названии
    Код (Text):
    1. name='category[]'
    там массив. И работать с ним надо как с массивом, а не как со строкой.
     
  8. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Можно подробней?
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
  10. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Мне мало что там говорит..мне бы готовый код?....заранее спасибо.
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну... А что не понятно-то? И что нужно..?
    Просто после того, как чекбокс(-ы) отмечен(-ы), значения приходят в переменную $_POST['categories'] в виде нумерованного массива данных.
    Например, если выбрано 3 чекбокса, то у тебя будет массив из трёх элементов, начинающихся с нуля. Обратиться к ним можно, указав в квадратных скобках индекс элемента (в данном случае - это его номер, хотя индексы могут быть и произвольными числами и строками текста):
    Код (PHP):
    1. <?php
    2. // Первый элемент
    3. echo('Первый: ' . $_POST['category'][0]);
    4. // Второй элемент
    5. echo(', Второй: ' . $_POST['category'][1]);
    6. // ...
    7. ?>
    Узнать кол-во элементов в массиве можно с помощью функции count():
    Код (PHP):
    1. <?php
    2. // Определям кол-во элементов
    3. $cnt = count($_POST['category']);
    4. ?>
    Объединить массив в строку, используя указанный разделитель можно с помощью функции implode():
    Код (PHP):
    1. <?php
    2. // Объединяем в строку через запятую:
    3. $str = implode(',', $_POST['category']);
    4. ?>
     
  12. q0b3rMAN

    q0b3rMAN Активный пользователь

    С нами с:
    11 июн 2011
    Сообщения:
    142
    Симпатии:
    0
    Отлично! Большое Вам спасибо, всё работает на ура!
    Дай Бог Вам хорошую работу в области веба.

    Код (Text):
    1.  printf("<input type='checkbox' name='category[]' value='%d' />%s<br>",$myrow['id'],$myrow['namecat']);
    Код (Text):
    1. $massiv = $_POST['category'][0];
    2. $cnt = count($_POST['category']);
    3. $str = implode(',', $_POST['category']);
    4.  
    5. echo "$massiv";
     
  13. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Нда... :)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    грубого йорика растрогала искренняя благодарность?
     
  15. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    " " лучше так пишите в html, а в php ' ' когда нет табуляций...
    И если есть табуляция " ", дело в том, что php язык не строго типизированный объекты без вынесения их за комментарий могут даже писаться в " ", а также тип нужно приводить самим, php не знает за ранее какое будет выражения или тип данных.

    Вообще использование кавычек и скобочек желательно не писать всеми подрят =)
    Почему, не знаю но говорили даже, что еще понижает скорость...

    Конечно не значительный не будет заметно, если это конечно не постоянно, вот взять все не значения и увидеть значения =)))

    Идеально конечно, тоже доработать не реально... Это можно делать бесконечно, подделывать постоянно для удобства =)))