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

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

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



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

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




Цитата (maruo @ 14.12.2015 - 21:39)
как ему понимать из какой таблицы вытаскивать

из таблицы которая существует только в оперативной памяти и которая создана в результате подзапроса и которая называется q


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

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



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

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




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

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



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

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




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

$submit = '<input type="submit" value="Перейти к следующему вопросу">';
if($q_id >= $row['m_id']){
$q_id = '0';
$submit = '<input type="submit" value="Пройти тест ещё раз">';
}


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

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



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

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




а не могли бы скрин запроса показать, какая таблица сформировалась в результате запроса.

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

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



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

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




maruo, выполни отдельно поздапрос, а потом запрос целиком


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

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



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

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




давайте я попробую описать в словах что я понял и как работает ваш код.
А вы уже поправите где неверно.


$q_id = isset($_POST['quest'])?(int)$_POST['quest']:0;//3
$a_id = isset($_POST['answer'])?(int)$_POST['answer']:false;//14

$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";


И так у нас вопрос под идентификатором #3
На данный момент у нас выводит только 1 вариант ответа.

Мы отвечает на вопрос, и постом у нас передается два значения:
  • $q_id - это идентификатор вопроса.
  • $a_id - это идентификатор ответа который мы дали.
В 2х переменных у нас хранятся две цифры это 3 и 14.

Делаем запрос (с ним у меня проблема я его так и не могу толком понять, но на интелектуальном уровне попробую объяснить):
WHERE q_id=$q_id and a_id=$a_id - основываясь на данных которые пришли постом : где q_id равен 3 и a_id равен 14 .
Получается этим мы выбираем поле a_correct напротив ответа под 14 идентификатором.А у нас там 0

В массив $row['a_correct'] у нас попало 0.
И когда мы сравниваем a_correct ==1 у нас выдается сообщение....

и еще LEFT JOIN question USING(q_id) это будет выглядеть как:
для соединения используем поля q_id присутствующие в обеих таблицах. Без USING просто таблицы не объединяться? и выдаст ошибку или как?

К чему в SELECT q_quest?

user posted image

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

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



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

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




Цитата (maruo @ 16.12.2015 - 02:08)
Без USING просто таблицы не объединяться?

конечно выдаст ошибку условие объединения (USING или ON) это неотъемлимая часть конструкции JOIN
На самом деле что бы проверить правильность ответа достаточно всего лишь идентификатора(ов) ответа(ов) от пользователя.
SELECT a_correct FROM answer WHERE a_id=$a_id

SELECT a_id, a_correct FROM answer WHERE a_id IN(идентификаторы)

Можно оставить только правильные ответы.
SELECT a_id FROM answer WHERE a_id IN(идентификаторы) AND a_correct = 1

И в конце концов можно получить только количество правильных ответов
SELECT COUNT(a_id) FROM answer WHERE a_id IN(идентификаторы) AND a_correct = 1

Все зависит от логики подсчёта ответов.
Цитата (maruo @ 16.12.2015 - 02:08)
К чему в SELECT q_quest?

На этот вопрос вы и сами можете найти ответ. А из выше описанного намекну что и LEFT JOIN question USING(q_id) в запросе только лишь из за того что мы выбираем q_quest.


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

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



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

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




SELECT a_correct FROM answer WHERE a_id=$a_id - об этом я думал, и догадывался что можно и так.
Ну хоть прояснилась ситуация, теперь можно пробовать выводить несколько вариантов ответов

Не мне несколько правильных не пригодится .
У меня будет строго 4 варианта ответа и 1 верный.
вопросы будут делиться на несколько категорий сложности.
И нужно будет выводить рандомные ответы из таблиц и 1 верный(вот думаю с этим я воевать буду)

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

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



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

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




Цитата (maruo @ 16.12.2015 - 08:13)
У меня будет строго 4 варианта ответа и 1 верный.

это не существенно
И кстати речь не о нескольких правильных вариантах (об этом потом), а о правильных вариантах для неограниченного количества ответов
т.е корректоность ответа проверять не каждый раз, а сразу оптом.


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

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



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

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




Цитата
т.е корректоность ответа проверять не каждый раз, а сразу оптом.



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

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



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

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




Объясните Мне как так получается все из одной "точки".
$input .=
user posted image
$input 	= ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;



user posted image

$input 	.= ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;





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

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

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



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22693
Пользователь №: 20039
На форуме: 7 лет
Карма: 599




maruo
Свернутый текст
Наклоненная буква s - спойлер.



--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

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



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

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




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


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 9 дней
Карма: 77




$a = 1;
$b = 2;
echo $a.$b; // 12

$c = $a;
$c .= $b;
echo $c; // 12

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

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



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

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




Цитата (Kusss @ 19.12.2015 - 16:00)
$a = 1;
$b = 2;
echo $a.$b; // 12

$c = $a;
$c .= $b;
echo $c; // 12

точка в данном случае это присоединение.

А вы наверно не поняли что чем вопрос.
Повторю, я знаю что делает этот оператор.
Но в коде выше, valik его знает он его писал я из за нотиса решил что эта точка просто опечатка.
$input 	.= ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;

в итоге с точкой перед $input .=
Выводятся все варианты ответов.
$input 	.= ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;

а без точки
$input =
выводится только последний из вариант ответа из массива.

Поэтому и вопрос а как это так получается?
Я думал я все знаю про этот оператор, но получается что нет. Или дело не в операторе?

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

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

Опции темыСтраницы: (20) « Первая ... 7 8 [9] 10 11 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса