Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перебор массивав и передача аргумента функции, перебор массивав и передача аргумента фу 
V
    Опции темы
godvinn
Дата 31.10.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1



есть функция для обработки данных пришедших с формы 
(форма с checbox имеет вид name = "ans[]" vavue="<?php $id['id']?>.1")

         
Код

      function resulttest()
           {
        $test = @$_POST['ans'];
        for($i = 0; isset($test[$i]); $i++)
        {
            $array = explode('.', $test[$i]);
            $id_question = $array[0];
            $id_answer = $array[1];
             $this->resultTrueDB($id_question); // функция для обработки и выборки с бд правильных ответов
            @$total[$id_question] = $total[$id_question] +  $id_answer;
        }



проблемма в следующем когда выбрано больше одного checbox это все начинает некорректно работать, то есть 
если выбрано больше одного checbox то получается следующее
10 -1
10- 2
то есть два раза передает id  и потом оно смещается на проверку следующей суммы id и предыдущий  вопрос уже считается как неправильный*.
как можно решить чтобы передавало только один id который соответствует одному вопросу. 


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
destrd
Дата 31.10.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: 3
Всего: 4



Я понял, что вы формируете так
Код

name = "ans[]" value="10.1"
name = "ans[]" value="10.2"

И, что не так? Вам често формируют массив.

Это сообщение отредактировал(а) destrd - 31.10.2008, 21:15
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
godvinn
Дата 31.10.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1



да формирует именно так
проблемма в следующем когда выбрано больше одного checbox это все начинает некорректно работать, то есть 
если выбрано больше одного checbox то получается следующее
10 -1
10- 2
то есть два раза передает id  и потом оно смещается на проверку следующей суммы id и предыдущий  вопрос уже считается как неправильный*.
как можно решить чтобы передавало только один id который соответствует одному вопросу.  


если выбрано 
10 -1
10- 2
оно передает два раза в функцию с выборкой два раза одинаковый id и потом уже все некорректно работает 

а надо чтобы выбор был по единственному id  вопроса. 

Это сообщение отредактировал(а) godvinn - 31.10.2008, 21:29


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Avrely
Дата 31.10.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 239
Регистрация: 15.3.2007

Репутация: нет
Всего: 2



Не совсем все понял... но если вам надо чтобы функция не повторялась для id которые уже обрабатывались, то можно занести в массив id обработанных функций и  если в массиве не встречается этот id то выполнить функцию.

Добавлено через 27 секунд
Постарайтесь поподробнее изложить суть.
PM MAIL ICQ MSN   Вверх
godvinn
Дата 31.10.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

Репутация: 1
Всего: 1



вообщем есть 

name = "ans[]" value="10.1"
name = "ans[]" value="10.2"
name = "ans[]" value="10.3"
name = "ans[]" value="10.4"

нужно создать такую функцию которая разбивает этот массив 
то есть 10 (id) 1(значение)
Код

function resulttest()
           {
        $test = @$_POST['ans'];
        for($i = 0; isset($test[$i]); $i++)
        {
            $array = explode('.', $test[$i]);
            $id_question = $array[0];
            $id_answer = $array[1];

            $this->resultTrueDB($id_question); // функция для обработки и выборки с бд правильных ответов
            @$total[$id_question] = $total[$id_question] +  $id_answer; //сумма выбранных ответов
        }


потом нужно передать id в функцию которая будет по определённому id выбырать правильные значение которые хранятся в БД 
Код

function resultTrueDB($id)
    {
        $data = $this->resultReturn($id);//функция для создания запроса в БД
    
        foreach ($data as $a)
        {
            $i =  $a['trueanswer'] . "<br />";
        }
        $this->idDB = $i;
    }


нужно подсчитать сумму значений для каждого id тоесть если выбрано 1,2 то сумма должна быть 3 

и потом сравнить ответы с бд и суму которая получилась 
Код

$k = $this->massiv($summ);
        foreach ($k as $l)
        {
            echo $l;
            if ($l == $this->idDB)
            {
                echo 'true';
            }
            else {
                echo 'false';
            }
        }



но это все перестает нормально работать когда выбрано больше одного чекбокса 

Это сообщение отредактировал(а) godvinn - 1.11.2008, 08:23


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
destrd
Дата 1.11.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: 3
Всего: 4



Плохо я понял, не работает мозг в субботу, обработайте данные так, id вопроса и массив ответов
как-то так
Код

<?php
$testmass = array("10.1", "10.2", "10.3", "1.1", "1.2", "1.3");

$count = count($testmass);
for ($i = 0; $i < $count; ++$i)
{
    list($id, $answ) = explode('.', $testmass[$i]);
    if (!is_array($mass[$id]))
    {
        $mass[$id] = array();
    }
    array_push($mass[$id], $answ);
}

print_r($mass);
?>

На выходе будет так 
Код

Array
(
    [10] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)

--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0855 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.