За последние 24 часа нас посетили 22035 программистов и 988 роботов. Сейчас ищет 641 программист ...

как форма типа checkbox передает обработчику переменные

Тема в разделе "Прочие вопросы по PHP", создана пользователем Сорока, 1 мар 2006.

  1. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    Не могу понять каким образом форма типа checkbox передает обработчику переменные. Допустим пользователь отметил несколько галочек...Имя переменной одно, а значения разные. Мне , чтобы написать код необходимо разобраться каким же это образом.
    Если кому важно знать для чего мне это напишу: у меня выведено несколько форм типа text с введенными в них значениями, полученными из таблицы. мне необходимо удалить несколько записей (по выбору пользователя - свой выбор он помечает галочками). А потом при нажатии определнной кнопки эти записи должны удалиться.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    имя можно задавать как $ch[] тогда передастся массив
     
  3. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    и тогда обработчику передастся что-то типа передастся $ch[1] $ch[2] поп порядку я правильно поняла?
     
  4. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    и тогда обработчику передастся что-то типа передастся $ch[1]=значнение1 $ch[2]=значение 2 ...по порядку.... я правильно поняла?
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Сорока
    а как же женское любопытство? попробуй? 8)))
     
  6. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    это уже походит на флирт)))
    так я права или нет?и как определить сколько элементов в массиве этом всего получилось?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Сорока
    1. ну ты же Питерская ... может встретимся как нить на проф. основе ...

    2. права.

    PHP:
    1. <?
    2. $cnt = count($ch); // кол-во элементов
    3. if($cnt) {
    4.      foreach($ch as $chk => $chv) {
    5.           print("[$chk][$chv]<br />");
    6.      }
    7. }
    8. ?>
     
  8. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    что-то у меня не работает....
    может потому что я переменную mas не объявила глобыльной...
    Может посмотришь?Пожалуйста :roll: ...
    function func_2($x, $r)
    {
    *************
    for($i=0;$i<$num;$i++)
    {
    $row=mysql_fetch_assoc($r);
    $mas[$i]=$row['number'];
    echo '<div style="position:absolute;top:'.$t.';left:87">
    <input type=text size=20 value=" '.$row['number'].' " name=fnumber>
    <input type=checkbox name=ch[] value=mas[$i]></div>';
    $t=$t+25;
    }
    ***********
    }
    if($button=="del_number")
    {
    $cnt=count($ch);
    for($k=0;$k<$cnt;$k++)
    {
    $r=mysql_query("select * from phone where number=' ".$ch[k]." ' ");
    $r2=mysql_fetch_assoc($r);
    echo $r2['number'];
    }
    }
    я использовала echo чтобы проверить работоспособность, а так на самом деле эти записи надо удалить
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    name="ch[]"

    и скорей всего надо использоать $_POST['del_number'] ну и так же на счет ch если форма передается POST или $_GET
     
  10. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
  11. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    <input type=checkbox name=ch[] value=mas[$i]></div>';
    Это строка ведь означает, что ch[k-му] присваивается значение хранящееся в в элементе массива row? Так ведь?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    можно написать и так:

    <input type=checkbox name=ch[$i] value=$mas[$i]>

    тогда в ch[$i] будет значение mas[$i]
     
  13. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    $button=$HTTP_POST_VARS['button']; Это не отсебятина - у меня версия довольно старая и твоего синтаксиса она не понимает. И с этой строкой все работает. т.е. работает другая часть программы( то что показала тебе я лишь ее часть).


    между
    <input type=checkbox name=ch[$i] value=$mas[$i]>
    и
    <input type=checkbox name=ch[] value=$mas[$i]>
    нет совсем никакой разницы? Если да , то я тогда была не права в своих действиях.
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Сорока
    $ch[] нумеруется с 0 прибавляя 1 к каждому новому эл-ту
    $ch[$i] задает точный индекс
     
  15. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    Ну в моем случае разницы нет никакой , я думаю. Ты же видел мой код.
    У меня проблема в том как извлечь помеченные элементы. Пыталась их для пробы просто вывести на экран, но ничего не вывелось во втором варианте, а в первом выдало ошибку parse error(кстати не подскажешь как конкретно это переводится?). Первй и второй вариант я отметила комментариями.
    Я решила использовать все-таки $ch[$i]:
    for($i=0;$i<$num;$i++)
    {
    $row=mysql_fetch_assoc($r);
    $mas[$i]=$row['number'];
    echo '<div style="position:absolute;top:'.$t.';left:87">
    <input type=text size=20 value=" '.$row['number'].' " name=fnumber>
    <input type=checkbox name=ch[$i] value=mas[$i]></div>';
    $t=$t+25;
    }

    if($button=="del_number")
    {
    $cnt=count($ch);
    for($i=0;$i<$cnt;$i++)
    { /*if(ch[$i]) echo ch[$i];*/
    /*$r=mysql_query("select * from phone where number=' ".$ch[$k]." ' ");
    $r2=mysql_fetch_assoc($r);
    echo $r2['number'];*/
    }
     
  16. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    посмотри phpinfo() и покажи как у тебя установлены register_globals? сдавется мне, что мы все вокруг этого танцуем
     
  17. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    Directive Local Value Master Value
    register_globals On On
     
  18. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну хорошо ...
    отметь несколько элементов chckbox, выдай после POST
    print_r($ch);
     
  19. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
  20. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    if($button=="del_number")
    {
    print_r($ch);
    }
    получила следующее:

    Array ( [$i] => mas[$i] )
     
  21. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Сорока
    меняем
    <input type=checkbox name=ch[$i] value=mas[$i]></div>';
    на
    <input type=checkbox name=ch['.$i.'] value='.$row['number'].'></div>';

    и опять print_r($ch) сюда
     
  22. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    Array ( [0] => 1234567 )
    тот номер, который и был помечен))))))
     
  23. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Сорока
    ужин с тебя ... 8))) а может завтрак?
     
  24. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    погоди)))))Появилась другая проблема))))
    Чтобы проверить а будет ли удалятся посредством запроса, я для теста вывела другим способом(попыталась вывести на экран), но пусто, просто чистый экран.
    if($button=="del_number")
    {
    $r=mysql_query("select * from phone where number=' ".$ch." ' ");
    $r2=mysql_fetch_assoc($r);
    echo $r2['number'];

    }
    Ты меня извини, что я такая навязчивая, но я еще всех тонокостей не понимаю((((Мне до спеца еще ох сколько....
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1. <?
    2. if($button=="del_number" AND !empty($ch)) {
    3.     foreach($ch as $key) {
    4.         $row=mysql_query("select * from phone where number='$key'");
    5.         $obj=mysql_fetch_object($row);
    6.         echo $obj->number.'<br />';
    7.     }
    8. } else {
    9.      echo 'удалять нечего';
    10. }
    11. ?>