[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простой тест на PHP
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Игорь_Vasinsky
Цитата
Нажимая на нее мы не скачиваем файл.exe а запускаем его .(ну или другое расширение типо cmd и так далее)

это плохая мысль.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maruo
Я уже понял что нельзя так делать) Начитался в гугле таких вопросов)
maruo
Цитата (Игорь_Vasinsky @ 23.11.2015 - 11:43)
Цитата
Нажимая на нее мы не скачиваем файл.exe а запускаем его .(ну или другое расширение типо cmd и так далее)

это плохая мысль.

Мысль то хорошая )
maruo
Эх закончились дела, возвращаюсь к этому проекту.
Скоро появятся новые вопросы, надеюсь так же поможете)
maruo
$query = "SELECT q.q_id, q.q_quest, a.a_id, a.a_answer
FROM answer a
RIGHT JOIN (SELECT q_id, q_quest
FROM question
WHERE q_id >
$q_id
LIMIT 1) q USING(q_id)";


Ну немного я разобрался что такой алиасы, понял что это всего лишь сокращение таблиц , столбцов.
разобрался с объединением таблиц и для чего это делают.
Но все же остановился и не вникаю что такое USING , хоть вы и скинули описание, но ничего не понял.


Эти алиасы и объединения таблиц так запутали меня, что голова закипела , и что то двинуло меня остановиться на время. Столько новой информации за короткий промежуток времени не осилил.
А сейчас решил продолжать и когда сел глянуть в код, понял что все позабыл) Конечно посидев пару часиков за кодом и почитав его вспомнил что да как)
Да и от SQL языка я такого не ожидал что он такой "большой" считал и сравнивал его с htlm или сss
Valick
Если не разобрались, что такое USING значит плохой источник информации.
USING применяется когда в соединяемых таблицах одинаковое именование полей по которым происходит связь.
Например в данном случае USING(q_id) равноценно условию ON a.q_id=q.q_id

_____________
Стимулятор ~yoomoney - 41001303250491
maruo
Цитата (Valick @ 13.12.2015 - 09:47)
Если не разобрались, что такое USING значит плохой источник информации.
USING применяется когда в соединяемых таблицах одинаковое именование полей по которым происходит связь.
Например в данном случае USING(q_id) равноценно условию ON a.q_id=q.q_id

Получается это опять в своем роде сокращение?
можно было и использовать ON a.q_id=q.q_id?
AllesKlar
Цитата
Получается это опять в своем роде сокращение?
можно было и использовать ON a.q_id=q.q_id?

Да.
Помимо прочего, USING - это примочка mysql, в чистом SQL такой инструкции нет.
Поэтому, если ты не хочешь однажды тупить в монитор с непониманием, почему твой sql код не работает на других СУБД, то не стоит увлекаться сим.
Кинут тебя однажды в MsSql или жутко повезет и нечайно попадешь под Oracle, и все...

Т.е. знать - это хорошо, но так же необходимо знать, что это персональный хак одной конкретной СУБД, и не имеет ничего общего со стандартом SQL

_____________
[продано копирайтерам]
maruo
понял, буду пробовать сам
maruo
$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){


Не додумаю никак , как проходит проверка ответа?
Как в массиве $row оказывается ответ который мы дали

или просто переведите код на русский как он читается , мб я что то не так понимаю
maruo
вопрос сверху, что такое m_id? такого поля нету в таблице ответов
Valick
Цитата (maruo @ 14.12.2015 - 18:58)
вопрос сверху, что такое m_id? такого поля нету в таблице ответов

Цитата (maruo @ 13.12.2015 - 01:11)
Ну немного я разобрался что такой алиасы, понял что это всего лишь сокращение таблиц , столбцов.

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

_____________
Стимулятор ~yoomoney - 41001303250491
maruo
Цитата (Valick @ 14.12.2015 - 20:37)
Цитата (maruo @ 14.12.2015 - 18:58)
вопрос сверху, что такое m_id? такого поля нету в таблице ответов

Цитата (maruo @ 13.12.2015 - 01:11)
Ну немного я разобрался что такой алиасы, понял что это всего лишь сокращение таблиц , столбцов.

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

вот без командной строки тут никак не обойтись походу дела.
Ибо я не могу представить в уме что у нас получилось в результате запроса.Какая таблица сформировалась.

Алиасы я еще раз перечитал, хотел бы уточнить понял ли я все правильно.

$query = "SELECT q.q_id, q.q_quest, a.a_id, a.a_answer
FROM answer a
RIGHT JOIN (SELECT q_id, q_quest
FROM question
WHERE q_id >
$q_id
LIMIT 1) q USING(q_id)";


выбираем q.q_id, q.q_quest, a.a_id, a.a_answer ИЗ таблицы answer a(a - это краткий синоним таблицы answer - называемый АЛИАС?
то есть приставка "a" перед a_id говорит о том что выбери поле a_id и таблицы answer?
И как читал это делается для быстродействия бд.

Я правильно понимаю?

даже если это так как я понял, то почему после правого объединения во втором запросе после FROM question не стоит этот алиас? q ведь в первом запросе q.q_id , q.quest стоит этот алиас q и как ему понимать из какой таблицы вытаскивать?

Поправьте если опять я все напутал, ибо сложно и запутано для меня пока что это, куда проще для меня были запросы только с SELECT FROM WHERE без объединения
Valick
Цитата (maruo @ 14.12.2015 - 19:54)
приставка "a" перед a_id говорит о том что выбери поле a_id и таблицы answer?

да
Цитата (maruo @ 14.12.2015 - 19:54)
И как читал это делается для быстродействия бд

нет
q это алиас для таблицы формируемой в результате запроса (SELECT q_id, q_quest FROM question WHERE q_id > $q_id LIMIT 1)
читайте про подзапросы, в частности подзапросы в конструкции FROM

Цитата (maruo @ 14.12.2015 - 19:54)
куда проще для меня были запросы только с SELECT FROM WHERE без объединения

ясен пень, но БД должна обрабатывать информацию, а не тупо хранить её

_____________
Стимулятор ~yoomoney - 41001303250491
maruo
даже если это так как я понял, то почему после правого объединения во втором запросе после FROM question не стоит этот алиас? q ведь в первом запросе q.q_id , q.quest стоит этот алиас q и как ему понимать из какой таблицы вытаскивать?
Быстрый ответ:

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