ФорумПрограммированиеJavaScript → php таблицы + JavaScript

php таблицы + JavaScript

  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 11:24

    Здравствуйте уважаемые эксперты!
    Столкнулся со следующей задачей.

    Необходимо создать таблицу вида:
    [table border=1]
    [tr][td]Номер вопроса[/td] [td]Пользователи[/td] [td]Сумма[/td] [td]Вывод[/td][/tr]
    [/table]

    Перед загрузкой таблицы, идет выбор количества Пользователей. Осуществил на пхп методом передачи POST. Идет загрузка таблицы. Например выбрал 3 пользователя. Получил таблицу след вида.

    [table border=1]
    [tr][td]Номер вопроса[/td] [td]Пользователь1[/td] [td]Пользователь2[/td] [td]Пользователь3[/td] [td]Сумма[/td] [td]Вывод[/td][/tr]
    [/table]

    А теперь самое главное, сам вопрос. Нужно добавить скрипт(я думаю это должен быть javascript), по нажатию на кнопку Добавить вопрос, добавлялось бы строка к таблице, где в каждое поле Пользователей Юзер вводит оценки. Например вот так:
    [table border=1]
    [tr][td]Номер вопроса[/td] [td]Пользователь1[/td] [td]Пользователь2[/td] [td]Пользователь3[/td] [td]Сумма[/td] [td]Вывод[/td][/tr]
    [tr][td]1[/td] [td]<input type=text>[/td] [td]<input type=text>[/td] [td]<input type=text>[/td] [td]Сумма[/td] [td]Вывод[/td] [/tr]
    [/table]

    [table border=1][tr][td]Добавить вопрос[/td][td]Удалить вопрос[/td][/tr][/table]

    Сумма оценок считается в ячейке Сумма и т.д. Ну и кнопочку удалить вопрос.
    Сложность для меня в том, что к сожалению, javascript я только начал изучать. С php то проблем вроде нет.
    Буду рад любым советам, решениям, помощи, спасибо!

    P.S. В итоге получаем что то типа вот такой таблицы:
    [table border=1]
    [tr][td]Номер вопроса[/td] [td]Пользователь1[/td] [td]Пользователь2[/td] [td]Пользователь3[/td] [td]Сумма[/td] [td]Вывод[/td][/tr]
    [tr][td]1[/td] [td]1[/td] [td]2[/td] [td]3[/td] [td]6[/td] [td]Плохо[/td] [/tr]
    [tr][td]2[/td] [td]10[/td] [td]10[/td] [td]9[/td] [td]29[/td] [td]Отлично[/td] [/tr]
    [/table]

    [table border=1][tr][td]Добавить вопрос[/td][td]Удалить вопрос[/td][/tr][/table]


  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 12:27, спустя 1 час 3 минуты

    1. Ведешь счётчик полей. К примеру
    var tr_count = 1;

    2. Подключаешь желательно JQuery
    3. при нажатии на "Добавить вопрос" делаешь так
    $("#tr_"+tr_count).after( "<tr id='tr_"+tr_count+"'><td><input type=text></td><td>…………</td></tr>");

    4. Для удаления, надо заоминать какой tr выделен, а потом $("#tr_"+tr_current).remove()
    Так понятно? или готовый скрипт хотел видеть? :)
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 13:26, спустя 58 минут 11 секунд


    1. Ведешь счётчик полей. К примеру
    var tr_count = 1;

    2. Подключаешь желательно JQuery
    3. при нажатии на "Добавить вопрос" делаешь так
    $("#tr_"+tr_count).after( "<tr id='tr_"+tr_count+"'><td><input type=text></td><td>…………</td></tr>");

    4. Для удаления, надо заоминать какой tr выделен, а потом $("#tr_"+tr_current).remove()
    Так понятно? или готовый скрипт хотел видеть? :)


    Буду разбираться с javacript) Спасибо за примерный алгоритм)
    Но как быть с количеством ячеек пользователи? Данная величина меняется
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 13:41, спустя 15 минут 40 секунд



    1. Ведешь счётчик полей. К примеру
    var tr_count = 1;

    2. Подключаешь желательно JQuery
    3. при нажатии на "Добавить вопрос" делаешь так
    $("#tr_"+tr_count).after( "<tr id='tr_"+tr_count+"'><td><input type=text></td><td>…………</td></tr>");

    4. Для удаления, надо заоминать какой tr выделен, а потом $("#tr_"+tr_current).remove()
    Так понятно? или готовый скрипт хотел видеть? :)


    Буду разбираться с javacript) Спасибо за примерный алгоритм)
    Но как быть с количеством ячеек пользователи? Данная величина меняется
    Меняеться при загрузке страницы или без перезагрузки?
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 13:45, спустя 3 минуты 41 секунду

    В начале вроде писал, что есть php файл. Выбираем кол-во. Грузиться другой пхп файл, которому передается значение POST(кол-ва) и тем самым таблица меняется.

    <form method="POST">
    <label for="exp">Выберите количество вопросов:</label>
    <br>
    <input id="exp" name="exp" type="text" value=<?php echo '"'.$_POST['exp'].'"';?>  />
    <input type="submit" value="Выбрать">
    </form>
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:06, спустя 21 минуту 12 секунд

    ну и ппц в чём тут проблема?
    <table>
     <tr>
       <th>Номер вопроса</th>
       <?php $_POST['exp'] = 10;
         if(array_key_exists("exp" , $_POST)){
           $exp = $_POST['exp'];
         } else {
           $exp = 1;
         }
         if(intval($_POST['exp']) < 1){
           $exp = 1;
         }
           
         for($i=0; $i<$exp;$i++){
           ?>
           <th>Пользователь <?=($i+1); ?></th>
           <?php
         }
       ?>
     </tr>
    </table>
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:08, спустя 1 минуту 17 секунд

    вот тебе шапка
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 14:17, спустя 9 минут 21 секунду


    вот тебе шапка


    Мы друг друга не поняли. Все что на пхп, я сделал, и это тоже.
    Я имел ввиду как прописать в javascrupt'е данное решение? Ведь добавляться должно столько <td><input type=text……><td> сколько юзер задаст пользователей. Вот, теперь надеюсь, вы меня поняли)
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:18, спустя 1 минуту 31 секунду



    вот тебе шапка


    Мы друг друга не поняли. Все что на пхп, я сделал, и это тоже.
    Я имел ввиду как прописать в javascrupt'е данное решение? Ведь добавляться должно столько <td><input type=text……><td> сколько юзер задаст пользователей. Вот, теперь надеюсь, вы меня поняли)
    тоесть без перезагрузки страницы в ширину?
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 14:19, спустя 43 секунды

    Тоесть грубо говоря: Выбрал 3 пользователя. На тебе таблица с тремя пользователями. Далее нажал Добавить, на тебе строка ниже с инпутами под пользователями.
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 14:23, спустя 4 минуты 2 секунды

    По шагам, еще раз, может я не правильно объяснил, извините.

    1) Файл choose.php
    Выберите кол-во пользователей. Ниже инпут. Вводим 3.
    2) Грузиться файл table.php
    Таблица с 3-мя пользователями. (см. первое сообщение)
    3) Нажимаем добавить
    Появляется строка под заглавиями(см. первое сообщение)

    Без перезагрузки страницы или с ней, наверное без разницы.
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:23, спустя 9 секунд

    Если да то:
    1. У тебя есть параметр tr_count - это максимальный айдишник tr-a
    2. Держи такой-же и для td-щек и нумеруй скажем "td_"+tr_count+"_"+td_count
    3. Элементрарным перебором вычисляешь последний существующий id-шник tr-а(последний может быть удалён)
    4. Элементрарным перебором вычисляешь последний существующий id-шник td в вычесленом tr-е(последний может быть удалён)
    5. Циклом от 0-я до tr_count перебираешь tr-ы и если он существует делаешь к "td_"+tr_id+"_"+(значение из пп4).after("<td>some text</td>");
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:26, спустя 2 минуты 39 секунд

    Блин - ну я в шоке - зачем это?
    <table>
    <tr>
    <th>Номер вопроса</th>
    <?php $_POST['exp'] = 10;
    if(array_key_exists("exp" , $_POST)){
    $exp = $_POST['exp'];
    } else {
    $exp = 1;
    }
    if(intval($_POST['exp']) < 1){
    $exp = 1;
    }

    for($i=0; $i<$exp;$i++){
    ?>
    <th>Пользователь <?=($i+1); ?></th>
    <?php
    }
    ?>
    </tr>
    </table>

    Тут шапка. Далее - если тебя смущает как js-ом выплюнуть определённое кол-во td-шек, то опять же выплюнь пхп-ой
    var td_count = <?=$exp ?>;
    а в js-е , когда добавляешь строку, просто скалеивай то количетво td-шек, которое определено в td_count
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 20 января 2009 г. 14:28, спустя 2 минуты 13 секунд


    1. Ведешь счётчик полей. К примеру
    var tr_count = 1;

    2. Подключаешь желательно JQuery
    3. при нажатии на "Добавить вопрос" делаешь так
    $("#tr_"+tr_count).after( "<tr id='tr_"+tr_count+"'><td><input type=text></td><td>…………</td></tr>");

    4. Для удаления, надо заоминать какой tr выделен, а потом $("#tr_"+tr_current).remove()
    Так понятно? или готовый скрипт хотел видеть? :)


    3. при нажатии на "Добавить вопрос" делаешь так

    text_html = "<tr id='tr_"+tr_count+"'>";
    for(i=0;i<td_count;i++){
    text_html += "<input type=text></td>";
    }
    text_html .= "</tr>";
    $("#tr_"+tr_count).after( text_html);


  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz 20 января 2009 г. 14:30, спустя 1 минуту 56 секунд

    Ок, изучаю javascript дальше.))
    Спасибо за ответ, буду пробовать.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!