[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Меню на сайте дублируется
Islam Islamgulov
Не знаю в чем проблема, меню на сайте дублируется.
Помогите пожалуйста!) Сам студент пока не разобрался
[IMG][URL=http://vfl.ru/fotos/7e1ed13924744169.html]
http://images.vfl.ru/ii/1545893877/7e1ed139/24744169_m.jpg[/IMG][/URL]
index.php
<?php
ini_set("display_errors", 1);
error_reporting(-1);
require_once 'config.php';
require_once 'function.php';

if( isset($_POST['test']) ){
$test = (int)$_POST['test'];
unset($_POST['test']);
$result = get_correct_answers($test);
if( !is_array($result) ) exit('Ошибка!');
// данные теста
$test_all_data = get_test_data($test);
// 1 - массив вопросы/ответы, 2 - правильные ответы
$test_all_data_result = get_test_data_result($test_all_data, $result, $_POST);
//print_r($_POST);
//print_r($result);
//print_r ($test_all_data_result);

echo print_result($test_all_data_result);
die;
}

// Список тестиров

$tests = get_tests();

if (isset ($_GET['test']) ){
$id_test = (int)$_GET['test'];
$test_data = get_test_data($id_test);
if (is_array($test_data)){
$count_questions = count($test_data);
$pagination = pagination($count_questions, $test_data);
}
}


?>

<!DOCTYPE html>
<
html lang="en">
<
head>
<
title>Cайт для тестирования студентов СПК</title>
<
meta charset="UTF-8">
<
meta name="viewport" content-type="width=device-width initial-scale=1">
<
link rel="icon" href="img/test.ico" type="images/x-icon">
<
link rel="shortcut icon" href="img/test.ico" type="images/x-icon">
<
link rel="stylesheet" href="style.css">
</
head>

<
body>
<
div class="wrap">
<?php if ($tests): ?>

<?php
foreach($tests as $tests): ?>

<!--Меню сайта-->
<
header>
<
a href="#" style="float:left; margin-top: 0; margin-right: 0;"><img src="img/logo2.png"></a>
<
nav class="menu">
<
ul>
<
li><a href="#"><i class="fa fa-home"></i>Главная</a></li>
<
li><a href="" target="_self"><i class="fa fa-shopping-cart"></i>Тесты</a>
<
ul>
<
li>
<
a href="?test=<?=$tests['id']?>"><?=$tests['name_test']?></a>
</
li>
</
ul>
</
li>
<
li><a href="#"><i class="fa fa-cogs"></i>Преподаватели</a>
<
ul>
<
li><a href="#">Гумерова Венера Хурматулловна</a></li>
</
ul>
</
li>
<
li>
<
a href="#"><i class="fa fa-envelope-open"></i>Дисциплины</a>
</
li>
</
ul>
</
nav>
</
header>

<?php endforeach; ?>

<div class="content">
<?php if(isset($test_data) ): ?>

<?php
if (is_array($test_data) ): ?>

<div id="border">
<
p>Всего вопросов: <?=$count_questions?></p>
</
div>

<!--
Пагинация-->
<?=$pagination?>
<span class="none" id="id-test"><?=$id_test?></span>
<
div class="test-data">

<?php foreach($test_data as $id_question => $item): // Получаем каждый конкретный вопрос + ответы?>

<div class="question" data-id="<?=$id_question?>" id="question-<?=$id_question?>">

<?php foreach($item as $id_answer => $answer): // Проходимсся по массиву вопрос/ответ?>

<?php if(!$id_answer): //Выводим вопрос ?>
<p class="q"><?=$answer?></p>

<?php else: // Выводим варианты ответов ?>

<p class ="a">
<
input type="radio" id="answer-<?=$id_answer?>" name="question-<?=$id_question?>" value="<?=$id_answer?>">
<
label for="answeer-<?=$id_answer?>"><?=$answer?></label>
</
p>

<?php endif; // $id_answer ?>

<?php endforeach; //$item ?>

</div> <!-- .question-->

<?php endforeach; //$test_data ?>

</div> <!-- .test_data-->

<!--
Кнопка завершения теста-->
<
div class="buttons">
<
button class="center btn" id="btn">Закончить тест</button>
</
div>

<?php else: //is_array($test_data)?>
Тест в разработке
<?php endif; //is_array($test_data)?>

<?php endif; // isset ($test_data) ?>
</div> <!--content-->

<?php else: //$test?>
<h3>Нет тестов</h3>
<?php endif; //$test?>

</div> <!--wrap-->

<
script src="http://code.jquery.com/jquery-latest.js"></script>
<
script src="script.js"></script>
<
script type="text/javascript" src="/templates/dd_highschool_43/js/jquery.nivo.slider.pack.js"></script>

</
body>
</
html>

function.php
<?php
function
print_arr($arr){
echo '<pre>' . print_r($arr, true) . '</pre>';
}

/**
* Получение списка тестов
**/

function get_tests(){
global $db;
$query = 'SELECT * FROM `tests`';
$res = mysqli_query($db, $query);
if(!$res) return false;
$data = array();
while($row = mysqli_fetch_assoc($res)){
$data[] = $row;
}
return $data;
}

/**
* Получение данных из теста
**/

function get_test_data($id_test){
if(!$id_test) return;
global $db;
$query= "SELECT q.question, q.parent_test, a.id, a.answer, a.parent_question
FROM questions q
LEFT JOIN answers a
ON q.id = a.parent_question
WHERE q.parent_test =
$id_test";

$res = mysqli_query ($db, $query);
$data = null;
while ($row = mysqli_fetch_assoc($res)){
if (!$row['parent_question'] ) return false;
$data [$row['parent_question']] [0] = $row['question'];
$data [$row['parent_question']] [$row ['id']] = $row ['answer'];

}
return $data;
}

/**
* Получение id вопрос/ответ
**/

function get_correct_answers($test){
if (!$test) return false;
global $db;
$query = "SELECT q.id AS question_id, a.id AS answer_id
FROM questions q
LEFT JOIN answers a
ON q.id = a.parent_question
LEFT JOIN tests
ON tests.id = q.parent_test
WHERE q.parent_test =
$test AND a.correct_answers = '1' AND tests.enable = '1'";
$res = mysqli_query($db, $query);
$data = null;
while($row = mysqli_fetch_assoc($res)){
$data[$row['question_id']] = $row['answer_id'];
}
return $data;
}

/**
* Строим пагинацию
**/

function pagination($count_questions, $test_data){
$keys = array_keys($test_data);
$pagination = '<div class="pagination">';
for($i = 1; $i <= $count_questions; $i++){
$key = array_shift($keys);
if($i ==1){
$pagination .= '<a class="nav-active" href="#question-'. $key . '">' . $i . '</a>';
} else{
$pagination .= '<a href="#question-'. $key . '">' . $i . '</a>';
}
}

$pagination .= '</div>';
return $pagination;
}

/**
* Итоги
* 1 - массив вопросы/ответы
* 2 - правильные ответы
* 3 - ответы пользователя
**/

function get_test_data_result($test_all_data, $result){
// Заполнение массива $test_all_data правильными ответами и данными о неотвеченных вопросах
foreach($result as $q => $a){
$test_all_data[$q]['correct_answers'] = $a;
// Добавление в массив данные о неотвеченных вопросах
if( !isset($_POST[$q]) ){
$test_all_data[$q] ['incorrect_answer'] = 0;
}
}


// Добавим неверный ответ, если таковов был
foreach($_POST as $q=> $a){
// Удалим из POST "левые" значения вопросов
if( !isset($test_all_data[$q]) ){
unset($_POST[$q]);
continue;
}

// Если есть "левые" значения ответов
if(!isset($test_all_data[$q][$a]) ){
$test_all_data[$q] ['incorrect_answer'] = 0;
continue;
}

// Добавим неверный ответ
if($test_all_data[$q] ['correct_answers'] !=$a) {
$test_all_data[$q] ['incorrect_answer'] =$a;
}
}

return $test_all_data;
}
/**
* Печать результатов
**/

function print_result($test_all_data_result){
// Переменная результатов
$all_count = count($test_all_data_result); // Количество вопросов
$correct_answers_count = 0; // Количество верных ответов
$incorrect_answers_count = 0; // Количество неверных ответов
$percent = 0; // Процент верных ответов

// Подсчет результатов

foreach($test_all_data_result as $item) {
if( isset($item['incorrect_answer']) ) $incorrect_answers_count++;
}
$correct_answers_count = $all_count - $incorrect_answers_count;
$percent = ceil($correct_answers_count / $all_count * 100);

if( $percent < 10 )return 'Вы набрали менее 10%, попробуйте пройти тест заново';

// Вывод результатов
$print_res = '<div class="test-data">';
$print_res .= '<div class="count-res">';
$print_res .= "<p>Всего вопросов: <b>$all_count</b></p>";
$print_res .= "<p>Из них верно: <b>$correct_answers_count</b></p>";
$print_res .= "<p>Из них неверно: <b>$incorrect_answers_count</b></p>";
$print_res .= "<p>Процент верных ответов: <b>$percent%</b></p>";
$print_res .= '</div'; // .count-res

// Вывод теста...

foreach($test_all_data_result as $id_question =>$item){ // Получаем вопрос+ответы
$correct_answers = $item['correct_answers'];
$incorrect_answer = null;
if( isset($item['incorrect_answer']) ){
$incorrect_answer = $item['incorrect_answer'];
$class = 'question-res error';
}else{
$class = 'question-res ok';
}
$print_res .= "<div class='$class'>";
foreach($item as $id_answer => $answer){ // Проходимся по массиву ответов
if( $id_answer === 0 ){
// Вопрос
$print_res .= "<p class='q'>$answer</p>";
}elseif(is_numeric($id_answer) ){
// Ответ
if( $id_answer == $correct_answers ){
// Если это верный ответ
$class = 'a ok2';
}elseif( $id_answer == $incorrect_answer ){
// Если это неверный ответ
$class = 'a error2';
}else{
$class = 'a';
}
$print_res .= "<p class='$class'>$answer</p>";
}
}

$print_res .= '</div>'; // .question-res
}

$print_res .= '</div'; // .test-data

return $print_res;
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.