Joomla 1.0 Как отправить картинку на сервер в качестве поля ввода

Тема в разделе "Модернизация расширений", создана пользователем BAdBoY, 15.02.2010.

  1. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    компонент системы тестирования. Вообщем он полностью устраивает. только столкнулся с одной проблемой. При занесении в БД значений ответа даные заносятся через форму(type = "text") т..е туда можно занести только текстовые значения. но некоторые варианты ответов можно занести только с помощью IMG. возможно ли сделать так чтобы можно было как вариант ответа отправлять IMG.

    и как это лучше организовать?? через
    Код (html):
    1. editorArea(...)
    ? или через добавление файла прям с компьютера(
    Код (html):
    1. <input type="file" >
    ). т.е. как проще будет это сделать т.к. я слаб в php.
    Код (CODE):
    1. function show_form_add_one_question($option,$act)
    2. {
    3.     global $database, $mosConfig_list_limit,$mosConfig_absolute_path,$mosConfig_live_site;
    4.    
    5.    
    6.     show_link_com($option);
    7.    
    8.     $id_test = intval(mosGetParam( $_REQUEST, 'id_test', 0 ));
    9.     $level_question = intval(mosGetParam( $_REQUEST, 'level_question', 0 ));
    10.     $question = mosGetParam( $_REQUEST, 'question', '' ,_MOS_ALLOWHTML);
    11.     $answer_0 = mosGetParam( $_REQUEST, 'answer_0', '' );
    12.     $answer_1 = mosGetParam( $_REQUEST, 'answer_1', '' );
    13.     $answer_2 = mosGetParam( $_REQUEST, 'answer_2', '' );
    14.     $answer_3 = mosGetParam( $_REQUEST, 'answer_3', '' );
    15.     $answer_4 = mosGetParam( $_REQUEST, 'answer_4', '' );
    16.     $r_answer = intval(mosGetParam( $_REQUEST, 'r_answer', -1 ));
    17.    
    18.     $limit = intval( mosGetParam( $_REQUEST, 'limit', $mosConfig_list_limit ) );
    19.     $limitstart = intval( mosGetParam( $_REQUEST, 'limitstart', 0 ) );
    20.    
    21.     ?>
    22.     <script language="javascript" type="text/javascript">
    23.         function submitbutton(pressbutton) {
    24.             var form = document.adminForm;
    25.             // do field validation
    26.             <?php getEditorContents( 'editor1', 'question' ) ; ?>
    27.             submitform( pressbutton );
    28.         }
    29.     </script>
    30.     <form name="adminForm" method="POST" action="index2.php" enctype="multipart/form-data">
    31.         <input type="hidden" name="option" value="<?php echo $option; ?>"> 
    32.         <input type="hidden" name="act" value="<?php echo $act; ?>">
    33.         <input type="hidden" name="task" value="">
    34.        
    35.         <table class="adminheading">
    36.             <tr>
    37.                 <th>
    38.                     Управление вопросами первого типа
    39.                 </th>      
    40.             </tr>
    41.         </table>
    42.  
    43.  
    44.         <table style="text-align: left;">
    45.             <tr>
    46.                 <td width="30%">
    47.                     Тест
    48.                 </td>
    49.                 <td>
    50.                     <?php
    51.                         $test_list = null;
    52.                         $test_list[] = mosHTML::makeOption( '0', 'Выберите тест');
    53.  
    54.                         $query = "SELECT id_test as value, (name_test) as text FROM ta_test";
    55.                         $database->setQuery( $query );
    56.                         $test_list = array_merge( $test_list, $database->loadObjectList());
    57.                        
    58.                         $lists['test']  = mosHTML::selectList( $test_list, 'id_test', 'class="inputbox" size="1" id="select_test"', 'value', 'text', "$id_test");
    59.                         echo $lists['test'];
    60.                     ?>
    61.                 </td>
    62.             </tr>
    63.             <tr>
    64.                 <td>
    65.                     Вопрос
    66.                 </td>
    67.                 <td>
    68.                     <?php
    69.                         editorArea( 'editor1',  $question , 'question', '100%;', '200', '75', '10' ) ; 
    70.                     ?>
    71.                 </td>
    72.             </tr>
    73.             <tr>
    74.                 <td>
    75.                     Первый ответ
    76.                 </td>
    77.                 <td>
    78.                     <input class="text_area" type="text" name="answer_0" size="50" value="<?php echo $answer_0; ?>">
    79.                     <input type="radio" class="inputbox" name="r_answer" value="0">
    80.                 </td>
    81.             </tr>
    82.             <tr>
    83.                 <td>
    84.                     Второй ответ
    85.                 </td>
    86.                 <td>
    87.                     <input class="text_area" type="text" name="answer_1" size="50" value="<?php echo $answer_1; ?>">
    88.                     <input type="radio" class="inputbox" name="r_answer" value="1">
    89.                 </td>
    90.             </tr>
    91.             <tr>
    92.                 <td>
    93.                     Третий ответ
    94.                 </td>
    95.                 <td>
    96.                     <input class="text_area" type="text" name="answer_2" size="50" value="<?php echo $answer_2; ?>">
    97.                     <input type="radio" class="inputbox" name="r_answer" value="2">
    98.                 </td>
    99.             </tr>
    100.             <tr>
    101.                 <td>
    102.                     Четвертый ответ
    103.                 </td>
    104.                 <td>
    105.                     <input class="text_area" type="text" name="answer_3" size="50" value="<?php echo $answer_3; ?>">
    106.                     <input type="radio" class="inputbox" name="r_answer" value="3">
    107.                 </td>
    108.             </tr>
    109.             <tr>
    110.                 <td>
    111.                     Пятый ответ
    112.                 </td>
    113.                 <td>
    114.                     <input class="text_area" type="text" name="answer_4" size="50" value="<?php echo $answer_4; ?>">
    115.                     <input type="radio" class="inputbox" name="r_answer" value="4">
    116.                 </td>
    117.             </tr>
    118.             <tr>
    119.                 <td>
    120.                     Уровень вопроса
    121.                 </td>
    122.                 <td>
    123.                     <?php
    124.                         $level_list[] = mosHTML::makeOption( '0', 'Выберите уровень вопроса');
    125.                         $level_list[] = mosHTML::makeOption( '1', '1');
    126.                         $level_list[] = mosHTML::makeOption( '2', '2');
    127.                         $level_list[] = mosHTML::makeOption( '3', '3');
    128.                         $level_list[] = mosHTML::makeOption( '4', '4');
    129.                         $level_list[] = mosHTML::makeOption( '5', '5');
    130.                         $level_list[] = mosHTML::makeOption( '6', '6');
    131.                         $level_list[] = mosHTML::makeOption( '7', '7');
    132.                         $level_list[] = mosHTML::makeOption( '8', '8');
    133.                         $level_list[] = mosHTML::makeOption( '9', '9');
    134.                         $level_list[] = mosHTML::makeOption( '10', '10');
    135.                         $level_list[] = mosHTML::makeOption( '11', '11');
    136.                         $level_list[] = mosHTML::makeOption( '12', '12');
    137.                        
    138.                         $lists['level_question']    = mosHTML::selectList( $level_list, 'level_question', 'class="inputbox" size="1"', 'value', 'text', "$level_question");
    139.                         echo $lists['level_question'];
    140.                        
    141.                     ?>
    142.                 </td>
    143.             </tr>
    144.             <tr>
    145.                 <td>
    146.                     Картинка к вопросу
    147.                 </td>
    148.                 <td>
    149.                     <input type="file" name="pic_question" size="68" class="text_area">
    150.                 </td>
    151.             </tr>
    152.             <tr><td><br></td><td></td></tr>
    153.         </table>
    154.        
    155.  
    156.         <?php
    157.             $query = "SELECT COUNT(*)"
    158.                     ."\n FROM ta_question"
    159.                     ."\n WHERE id_test=".$id_test;
    160.             $database->setQuery( $query );
    161.             $total = $database->loadResult();
    162.                        
    163.             require_once($GLOBALS['mosConfig_absolute_path'].
    164.             '/administrator/includes/pageNavigation.php' );
    165.             $pageNav = new mosPageNav( $total, $limitstart, $limit );
    166.            
    167.             $query = "SELECT q.id_question, q.question, q.type_question, q.level_question"
    168.                     ."\n FROM ta_question AS q"
    169.                     ."\n WHERE q.id_test=".$id_test
    170.                     ."\n LIMIT ".$pageNav->limitstart.",".$pageNav->limit;
    171.             $database->setQuery($query);
    172.             $rows = $database->loadObjectList();
    173.         ?>
    174.        
    175.         <table class="adminlist">
    176.             <tr>
    177.                 <th width="20">
    178.                     #
    179.                 </th>
    180.                 <th width="10">
    181.                     <input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count( $rows ); ?>);" />
    182.                 </th>
    183.                 <th width="30%" nowrap="nowrap">
    184.                     Вопрос
    185.                 </th>
    186.                 <th width="15%" nowrap="nowrap">
    187.                     Вариант 1
    188.                 </th>
    189.                 <th width="15%" nowrap="nowrap">
    190.                     Вариант 2
    191.                 </th>
    192.                 <th width="15%" nowrap="nowrap">
    193.                     Вариант 3
    194.                 </th>
    195.                 <th width="15%" nowrap="nowrap">
    196.                     Вариант 4
    197.                 </th>
    198.                 <th width="15%" nowrap="nowrap">
    199.                     Вариант 5
    200.                 </th>
    201.                 <th width="20%" nowrap="nowrap">
    202.                     Уровень
    203.                 </th>
    204.                 <th nowrap="nowrap">
    205.                     Картинка
    206.                 </th>
    207.             </tr>
    208.            
    209.             <?php
    210.             $k = 0;
    211.             $counter_question = 0;
    212.             for ($i=0, $n=count($rows);$i<$n;$i++)
    213.             {
    214.                 $row = $rows[$i];
    215.                 //mosMakeHtmlSafe($row);
    216.                
    217.                 if ($row->type_question==0)
    218.                 {
    219.                     $checked = mosHTML::idBox( $counter_question, $row->id_question );
    220.                     $counter_question++;
    221.                 }
    222.                 else
    223.                 {
    224.                     $checked = '';
    225.                 }
    226.                
    227.                 $query = "SELECT a.answer, a.correct"
    228.                     ."\n FROM ta_answer AS a WHERE a.id_question=".$row->id_question;
    229.                 $database->setQuery( $query );
    230.                 $data_answer = $database->loadObjectList();
    231.                
    232.                 $answer=null;
    233.                 for ($l=0;$l<5;$l++){$answer[$l]='';}
    234.                
    235.                 for ($l=0;$l<count($data_answer);$l++)
    236.                 {
    237.                     if (($data_answer[$l]->correct==1)&&($row->type_question==0))
    238.                     {
    239.                         $answer[$l]="<b>".$data_answer[$l]->answer."</b>";
    240.                     }
    241.                     elseif (($data_answer[$l]->correct==1)&&($row->type_question==1))
    242.                     {
    243.                         $answer[$l]="<b>".$data_answer[$l]->answer."</b>";
    244.                     }
    245.                     elseif ($row->type_question==2)
    246.                     {
    247.                         $answer[$l]=$data_answer[$l]->answer." <b>(".$data_answer[$l]->correct.")</b>";
    248.                     }
    249.                     else
    250.                     {
    251.                         $answer[$l]=$data_answer[$l]->answer;
    252.                     }
    253.                 }
    254.    
    255.             ?>
    256.                 <tr class="<?php echo "row$k"; ?>">
    257.                     <td align="center">
    258.                         <?php echo $pageNav->rowNumber( $i ); ?>
    259.                     </td>
    260.                     <td align="center">
    261.                         <?php echo $checked; ?>
    262.                     </td>
    263.                     <td>
    264.                         <?php echo $row->question; ?>
    265.                     </td>
    266.                     <td align="center">
    267.                         <?php echo $answer[0]; ?>
    268.                     </td>
    269.                     <td align="center">
    270.                         <?php echo $answer[1]; ?>
    271.                     </td>
    272.                     <td align="center">
    273.                         <?php echo $answer[2]; ?>
    274.                     </td>
    275.                     <td align="center">
    276.                         <?php echo $answer[3]; ?>
    277.                     </td>
    278.                     <td align="center">
    279.                         <?php echo $answer[4]; ?>
    280.                     </td>
    281.                     <td align="center">
    282.                         <?php echo $row->level_question; ?>
    283.                     </td>
    284.                     <td>
    285.                         <?php
    286.                             $pic_abs = $mosConfig_absolute_path."/components/com_testajax/question_images/"."tq_".$row->id_question.".jpg";
    287.                             $pic = $mosConfig_live_site."/components/com_testajax/question_images/"."tq_".$row->id_question.".jpg";
    288.                             if (file_exists($pic_abs)) 
    289.                             {
    290.                                 ?>
    291.                                     <img src="<?php echo $pic;?>" width="100px" class="view_img">
    292.                                 <?php
    293.                             }
    294.                         ?>
    295.                     </td>
    296.                 </tr>  
    297.             <?php  
    298.                 $k = 1 - $k;
    299.             }
    300.             ?>
    301.         </table>
    302.         <?php   echo $pageNav->getListFooter(); ?>
    303.         <input type="hidden" name="boxchecked" value="0" />    
    304.     </form>
    305.     <?php
    306. }
     
    Последнее редактирование: 15.02.2010
  2.  
  3. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Re: Компонент системы тестирования. Нужна ваша помощ.

    Хранить картинки в БД не очень тру... предлагаю Вам альтернативный вариант, он сложный, но более функциональный и гибкий - создаете отдельную таблицу в БД, в ней вы будете хранить информацию о загруженном файле(имя, путь, возможно ид-ученика или еще что то нужное), сам файл будете загружать через форму, после загрузки инфу будеде добавлять в новую таблицу, а ид добавленного файла добавляете в основную таблицу.
     
  4. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    Ну вот примерный алгоритм. (примерно то что ты сказал но попроще:))

    у нас имеется 2 функции:


    1)
    Код (PHP):
    1. function add_one_question()...

    Добавляет знач в БД и загружает в опред. папку на сервере картинку и приписывает ей(IMG) имя " TG_'id_вопроса' " . т.е. нам уже не надо записывать путь до картинки в БД. а просто загрузить картинку с ID вопроса.

    2)
    Код (PHP):
    1. function show_form_add_one_question($option,$act)...

    Непосредствено показывает нам форму куда заносятся данные.


    1) добавляем на форму поля добавления файлов.
    2) проверяем
    Если: Ответ(answer_*) добавили а картинку нет. то $typeimg=0
    Если: картинку добавили а текстовый ответ(answer_*) нет то $typeimg=1
    Если: добавили картинку и текстовый ответ(answer_*) то $typeimg=2
    3)Копируем картинку каждого "answer_*" в папку и меняем имя картинки как (id ответа + .jpg)
    4)Добавляем в новую табл. БД $typeimg и id ответа.

    как выполнить проверку по 2му пункту. пробовал через if (empty($pic_answer_0)). но неполучается. есть ли функция которая проверяет ПРИСВОЕНО ЛИ ЗНАЧЕНИЕ а не РАВНО ЛИ ЗНАЧЕНИЕ НУЛЮ ИЛИ ПУСТОЕ ОНО ЛИ.


    P.S. Создавать новую таблицу нет смысла если я смогу добавить новую колонку. Но как это сделать. т.к. удалять и заново создавать с нужной колонкой невозможно т.к. там уже есть записи.
     
  5. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    Вот оригиналы функций
     

    Вложения:

    • fun.txt
      Размер файла:
      10.8 КБ
      Просмотров:
      0
  6. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    ага.... только на какую нагрузку вы рассчитываете с таким алгоритмом ? )))
     
  7. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    ну поидее мне всеравно. главное чтоб все работало. просто хотелось чтоб все картинки лежали в одной папке (awsner). и мели имя id_awsner.jpg.
     
  8. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    ребят че делать???? хотя бы алгоритм напишите. а на php я с сам переведу.
     
  9. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    возник вопрос. как добавить кнопку при нажатии на которую выполняется самописная функция(работает с БД) php.


    и посмотрите почему она не пашет функция:? т.е. в БД появляются просто пустые значения вместо сгенерированых.


    Код (PHP):
    1. function random_pass_user()
    2. {
    3.     global $database;
    4.  
    5.     $cid = mosGetParam( $_REQUEST, 'cid', null);;
    6.    
    7.     for ($i=0;$i<count($cid);$i++)
    8.     {
    9.     $rpu = generate_password(5);
    10.  
    11.  Echo $rpu; /проверяем генерируется ли пароль
    12.  
    13.    
    14.     /* Перезаписываем уже имеющиеся данные*/
    15.    
    16.         $query = "UPDATE ta_user SET user_name='".$pru."', password='".$pru."' WHERE id=".$cid[$i];
    17.         $database->setQuery($query);
    18.         $database->query();
    19.        
    20.         $query = "UPDATE #__users SET username='".$pru."', password=md5('".$pru."') WHERE id=".$cid[$i];
    21.         $database->setQuery($query);
    22.         $database->query();
    23.        
    24.        
    25.     }
    26.     if (count($cid)>1)
    27.     {
    28.         echo '<br><font color=#FF9E31><center><b>Пароли успешно Сгенерированы.</b></center></font>';
    29.     }
    30.     else
    31.     {
    32.         echo '<br><font color=#FF9E31><center><b>Пароль успешно Сгенерирован.</b></center></font>';
    33.     }
    34. }
     
    Последнее редактирование: 20.02.2010
  10. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    ыыыы .... трудности перевода ? $pru / $rpu ? ))))
     
  11. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    ахахахах. во я ппц. спс))))) прям стыдно... блин))))

    а таким образом возможно выполнить эту функцию??т.е. как добавить кнопку которая ее вызывает????
     
  12. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    эммм... а как вы до этого ее выполняли ? )))
     
  13. Offline

    BAdBoY Недавно здесь

    Регистрация:
    14.10.2007
    Сообщения:
    70
    Симпатии:
    1
    Пол:
    Мужской
    до этого никак. этой функции небыло.

    также актуален вопрос по поводу изображений. как ответов.
     

Поделиться этой страницей

Загрузка...