Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (20) « Первая ... 14 15 [16] 17 18 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Простой тест на PHP
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 3 месяца, 24 дня
Карма: 27




Цитата (Loki @ 25.12.2015 - 09:22)
Цитата (Valick @ 25.12.2015 - 00:37)
Кстати любой желающий утереть мне мой сопливый нос может выложить сюда решение.

Не обольщайтесь, ваш сопливый нос не интересен настолько, чтоб его утирать.

О как новички дерзко себя ведут, щас нос откушу biggrin.gif


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




Тему возможно закрыть?
Если есть возможность Администраторы закройте тему, я больше не нуждаюсь в помощи этого вопроса, он решен.
А продолжать срачь и разборки у кого нос больше не лучшая идея!
/close
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




Вопрос образовался, усложняю потихоньку все дело, добавил в таблицу вопросов поле difficulty(сложность)

Как только набивается определенное число очков правильных ответов, повышается уровень сложности. И вопросы выводятся более сложнее. В поле сложности просто цифры 1,2,3

Как собственно ПРАВИЛЬНО сделать. Для каждой сложности делать свою таблицу с вопросами?

Или все делать все в одной?

Дело в том когда все в одной таблице , то когда переходит на след уровень сложности то перестает работать запрос. Т.к
$difficulty = 1;
$rand = rand(1,5);
случайный вопрос я выбираю при помощи rand.
И вы догадываетесь что у меня за ошибка получается.
Выбираю то я вопросы со сложностью 2. а id генерируются с 1м уровнем сложности.
$query = "(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=$rand AND difficulty=$difficulty LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=$rand AND difficulty=$difficulty ORDER BY RAND() LIMIT 3)
ORDER BY RAND()
"
;


Вот как правильно сделать? с новой таблицей? для каждой сложности, или же запрос менять?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 15 дней
Карма: 167




нет смысла вам давать советы, вы их игнорируете

Цитата (Valick @ 11.11.2015 - 00:12)
Цитата (maruo @ 11.11.2015 - 00:07)
$load_test =++ $_SESSION['count'];

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


$rand = rand(1,5);
это из той же оперы


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




Цитата
$rand = rand(1,5);
это из той же оперы


Ну уж извините но, ORDER BY RAND я не могу испльзовать перед UNION , и кстати никто не ответил почему
Поэтому я генерирую id на уровне php, а убрать его у меня не получится. Вы же отказались подкинуть запрос с RIGHT JOIN

Это сообщение отредактировал maruo - 31.12.2015 - 13:32
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




в чем ошибка или так нельзя делать?
$query2 = "(SELECT q_id FROM question ORDER BY RAND() LIMIT 1)";
$qrand = mysql_query($query2) or die(mysql_error());


$query = "(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=$qrand LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=$qrand ORDER BY RAND() LIMIT 3)
ORDER BY RAND()
"
;


Это сообщение отредактировал maruo - 31.12.2015 - 15:08
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 15 дней
Карма: 167




Цитата (maruo @ 31.12.2015 - 14:08)
в чем ошибка

а что говорит echo $qrand; ?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id #5 LIMIT 1) UNION (SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, ' at line 3

Вообще такая ошибка, я думал вытащить id и использовать вместо rand

Это сообщение отредактировал maruo - 31.12.2015 - 15:25
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1





$query = mysql_query("SELECT q_id FROM question ORDER BY RAND() LIMIT 1",$db);
$qrand = mysql_fetch_row($query);
$qrand = int($qrand[q_id]);

Но с нотисом

Это сообщение отредактировал maruo - 31.12.2015 - 16:34
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25982
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 21 день
Карма: 725

Не курю:
1 год, 2 месяца, 7 дней


Цитата
$qrand = int($qrand[q_id]);

за ногу и в овраг.

есть (int) есть intval()


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




foreach ($qrand1 as $qrand) {
$qrand = (int)$qrand;

Сделал так

Это сообщение отредактировал maruo - 31.12.2015 - 16:54
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




Каким образом можно сделать так:
Если ответ не был дан а просто обновилась страница, то сессию прикрыли или редирект на стартовую, что угодно но что бы не делал заново запрос на вопрос.

Пробовал делать проверку существует ли POST , не сработало

А так же у меня $difficulty = 1 отвечает за сложность вопроса .

У меня сейчас что получается как я набираю 5 верных ответов подряд, $difficulty++
Но нигде не сохраняется то что он увеличился. Выведится 1 раз вопрос где $difficulty = 2, а потом снова сброситься на 1.
Как мне правильно решить эту проблему, как реализовать правильно это.
То есть как набираем определенное число верных ответов то у нас будет выводится более сложные?

И давайте без этого, что бесполезно вам советовать вы не слушаете что вам говорят, на тот момент я не мог реализовать как вы сказали, потом додумался

quest.php
Свернутый текст

<?
error_reporting(E_ALL);
header('content-type: text/html; charset=utf-8');
include_once("bd.php");
include("answer.php");


$end_line = "\n";
$difficulty = 1;

if($_SESSION['count'] == 5){
$_SESSION['count'] = 0;
$difficulty++ and $_SESSION['count'] = 0;
}

$query = mysql_query("SELECT q_id FROM question WHERE difficulty=$difficulty ORDER BY RAND() LIMIT 1",$db);

$qrand1 = mysql_fetch_assoc($query);
foreach ($qrand1 as $qrand) {
$qrand = (int)$qrand;
}


$query = "(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=1 AND q_id=
$qrand LIMIT 1)
UNION
(SELECT q.q_id, q.q_quest, a.a_id, a.a_answer, a.a_correct
FROM answer a
INNER JOIN question q USING(q_id) WHERE a.a_correct=0 AND q_id=
$qrand ORDER BY RAND() LIMIT 3)
ORDER BY RAND()
"
;

$input = null;
$res = mysql_query($query) or die(mysql_error());
if($res){
if(mysql_num_rows($res) > 0){
while($row=mysql_fetch_assoc($res)){

$quest = $row['q_quest'];
$hidden = ' <input type="hidden" name="quest" value="'.$row['q_id'].'">'.$end_line;
$input .= '<button name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].' </button>'.$end_line;

}

}
}



?>
<!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8" />
</
head>
<
body>
<
h4><?php echo 'score'.$end_line.$_SESSION['count'];?></h4>
<
h2><?php echo $quest;?></h2>
<
form action = "answer.php" method = "POST">
<?php echo $hidden.$input;?>
</form>
</
body>
</
html>


answer.php
Свернутый текст

<?
include_once('bd.php');
error_reporting(E_ALL);
session_start();

$q_id = isset($_POST['quest'])?(int)$_POST['quest']:0;
$a_id = isset($_POST['answer'])?(int)$_POST['answer']:false;
if($q_id && $a_id){
$query = "SELECT a_correct, q_quest, (SELECT MAX(q_id) FROM question) m_id
FROM answer
LEFT JOIN question USING(q_id)
WHERE q_id=
$q_id
AND a_id=$a_id";

$res = mysql_query($query) or die(mysql_error());
if($res){
$row = mysql_fetch_assoc($res);

if($row['a_correct']==1 and isset($_POST['answer'])){
$_SESSION['count'] ++;
header("Location: quest.php");
}else{
$_SESSION['count'] = 0;
$difficulty = 1;
header("Location: index.php");
}


$submit = '<input type="submit" value="Еще раз">';
if($q_id >= $row['m_id']){
$q_id = '0';
$submit = '<input type="submit" value="Пройти тест ещё раз">';
}
?>
<!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8" />

</
head>
<
body>

<
h2><?php echo $message;?></h2>
<
form action="quest.php" method="POST">
<
input type="hidden" name="quest" value="<?php echo $q_id;?>">
<
p><?php echo $submit;?></p>
</
form>
</
body>
</
html>
<?php
}
}

?>


Это сообщение отредактировал maruo - 2.01.2016 - 02:30
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 15 дней
Карма: 167




Цитата (maruo @ 2.01.2016 - 01:20)
И давайте без этого, что бесполезно вам советовать вы не слушаете что вам говорят

ок


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 324
Пользователь №: 37433
На форуме: 3 года, 6 месяцев, 21 день
Карма: 1




Каким образом можно сделать так:
Если ответ не был дан а просто обновилась страница, то сессию прикрыли или редирект на стартовую, что угодно но что бы не делал заново запрос на вопрос.

Пробовал делать проверку существует ли POST , не сработало

UP
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 8 дней
Карма: 170




Цитата (maruo @ 2.01.2016 - 22:02)
Пробовал делать проверку существует ли POST , не сработало

Тема стара, как мир.
После получения POST нужен редирект, т.к. обновление страницы в браузере шлет данный POST повторно.
Вариантов 2:
1.
- приняли POST
- записали POST в сессию
- редирект на обработчик данных в сессии
- работаем с данными из сесси
- по окночании обработчика убили данные в сессии, которые писали из POST

2.
- приняли POST
- обработали POST
- записали результат об ошибках в сессию
- редирект на вывод / отсутсвии ошибки


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (20) « Первая ... 14 15 [16] 17 18 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса