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

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

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



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

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




Цитата (Игорь_Vasinsky @ 17.11.2015 - 11:22)
Цитата
дайте поучительную литературу

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

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



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

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

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


maruo
старался.


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

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

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

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



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

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




Цитата (maruo @ 17.11.2015 - 00:52)
А все решил вопрос.
if($result_ans){
if(mysql_num_rows($result_ans)>0){
$data=array();
while($myrow_ans = mysql_fetch_assoc($result_ans)) {
$data[]=$myrow_ans;
}
echo '<pre>'; print_r($data); echo '</pre>';
}
}



echo $data['1']['answers'];

Почти все верно кроме ....
1) $data=array();
лучше вынести за пределы проверок. Иначе при отсутствии данных будет нотис (ошибка), что переменная не определена.
2) $data[]=$myrow_ans;
логичнее не давать ключи по порядку, а использовать уже имеющиеся. допустим
$data[ $myrow_ans['id'] ]=$myrow_ans;
3) Имена переменных не айс. Но это сугубо личное, если один работаешь.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
[x] Дата
Цитировать сообщение

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



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

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




maruo, вот вам еще некоторая информация к размышлению.

base.sql
--
-- Структура таблицы `question`
--

CREATE TABLE IF NOT EXISTS `question` (
`q_id` int(11) NOT NULL AUTO_INCREMENT,
`q_quest` varchar(255) NOT NULL,
PRIMARY KEY (`q_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `question`
--

INSERT INTO `question` (`q_id`, `q_quest`) VALUES
(1, 'сколько будет 2 + 2'),
(2, 'сколько будет 2 + 3');

--
-- Структура таблицы `answer`
--

CREATE TABLE IF NOT EXISTS `answer` (
`a_id` int(12) NOT NULL AUTO_INCREMENT,
`q_id` int(11) NOT NULL,
`a_answer` varchar(255) NOT NULL,
`a_correct` int(1) NOT NULL,
PRIMARY KEY (`a_id`),
KEY `q_id` (`q_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- Дамп данных таблицы `answer`
--

INSERT INTO `answer` (`a_id`, `q_id`, `a_answer`, `a_correct`) VALUES
(1, 1, '2', 0),
(2, 1, '4', 1),
(3, 1, '6', 0),
(4, 1, '8', 0),
(5, 2, '1', 0),
(6, 2, '3', 0),
(7, 2, '5', 1),
(8, 2, '7', 0),
(9, 2, '9', 0);

quest.php
<?php
include_once('connect.php');

$end_line = "\n";
$q_id = isset($_POST['quest'])?(int)$_POST['quest']:0;

$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)";
$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 .= ' <p><input type="radio" name="answer" value ="'.$row['a_id'].'"> '.$row['a_answer'].'</p>'.$end_line;
}
}
}

?>
<!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8" />
<
title>Простой тест на PHP+MySQL</title>
</
head>
<
body>
<
h1>Простой тест на PHP+MySQL</h1>
<
h2><?php echo $quest;?></h2>
<
form action = "answer.php" method = "POST">
<?php echo $hidden.$input;?>
<p><input type="submit" value="Отправить ответ"></p>
</
form>
</
body>
</
html>

answer.php
<?php
include_once('connect.php');

$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){
$message = 'На вопррос: "'.$row['q_quest'].'" Вы ответили правильно';
}else{
$message = 'На вопррос: "'.$row['q_quest'].'" Вы ответили неправильно';
}

$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" />
<
title>Простой тест на PHP+MySQL</title>
</
head>
<
body>
<
h1>Простой тест на PHP+MySQL</h1>
<
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
}
}

?>


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

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



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

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




Дааа разбираться придется долго, впервые вижу, LEFT JOIN
Не понимаю почему Include_once
?(int)$_POST['quest']:0;


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

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



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

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




Цитата (maruo @ 18.11.2015 - 13:52)
Как это в мануале найти.

тернарный оператор


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

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



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

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




$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, "." точка здесь выступает как строковый оператор? даже если так не пойму зачем.(или это как приставка?)
RIght join, на сколько я понял, данные из левой таблицы попадут в правую? одинаковые заменят а остальные поля добавит .
не пойму что за q USING вообще не нашел об этом ничего.
вообще ужас)

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

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



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

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

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


Выбрать q.q_id, q.q_quest, a.a_id, a.a_answer из таблицы answer алияс таблицы a, при это не брать ничего лишнего от выбрки (SELECT q_id, q_quest
FROM question
WHERE q_id > $q_id
LIMIT 1) с алиясом q ориентируясь, сравнивая q_id

Цитата
q.q_id, "." точка здесь выступает


алияс (краткий синоним таблицы) . поле этой таблицы


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

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

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

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



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

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




Цитата (maruo @ 19.11.2015 - 13:25)
точка здесь выступает как строковый оператор?

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

про USING


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

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



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

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




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

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



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

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




maruo
Valick правильно пишет, только для новичков сложновато для восприятия. Предположу что для него это "очень просто". Вот и считает что это все знают.

По поводу запроса:
Когда используется несколько таблиц, для удобства их переименовывают.
вот пример: Ответы и вопрос. Без сокращения и с ним ( AS можно опускать, но с ним видно где сокращали ).
SELECT 
question.q_id, question.q_quest,
answer.id, answer.answer
FROM
answer
INNER JOIN
question
WHERE
answer.q_id = question.q_id

SELECT 
q.q_id, q.q_quest,
a.id, a.answer
FROM
answer AS a
INNER JOIN
question AS q ON a.q_id = q.q_id

Алиас:
Цитата
Служит для того, чтобы к таблице в пределах данного SQL-запроса можно было обращаться по другому имени.
Обычно применяется:
а) в целях повышения читаемости запросов
б) в целях многократного использования одной и той же таблицы в одном запросе.
в) для именования подзапросов (в MySQL это обязательно, в отличие от других СУБД).
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Razzwan  
Дата
Цитировать сообщение

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



Землянин
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 622
Пользователь №: 40774
На форуме: 1 год, 10 месяцев, 22 дня
Карма: 10




Цитата (Valick @ 16.11.2015 - 20:28)
если я начну комментировать чушь, то мне прийдётся писать в том же духе, а писать чушь мне тупо банально лень ))
смотрите поменьше видимоуроков, и читайте больше книг, сами заметите как поубавиться белых пятен, и не надо будет делать умозаключений по поводу теории.

Обижаете, я не смотрю видеоуроки - я их записываю! tongue.gif

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

Да, это провокация. Опровергайте.


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

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



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

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




всем спасибо, за ответы временно занят другим делом , не хватает времени на php тест.

У меня другой вопрос если поможете буду благодарен.Не буду создавать новую тему.

Сообственно так должно выглядеть.
Имеем кнопку какую то типо скачать.
Нажимая на нее мы не скачиваем файл.exe а запускаем его .(ну или другое расширение типо cmd и так далее)
Можно так реализовать?

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

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



Землянин
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 622
Пользователь №: 40774
На форуме: 1 год, 10 месяцев, 22 дня
Карма: 10




Мне тоже интересно, но, боюсь, это хакерский запрещенный приём.


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

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



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

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




Цитата (maruo @ 22.11.2015 - 16:04)
всем спасибо, за ответы временно занят другим делом , не хватает времени на php тест.

У меня другой вопрос если поможете буду благодарен.Не буду создавать новую тему.

Сообственно так должно выглядеть.
Имеем кнопку какую то типо скачать.
Нажимая на нее мы не скачиваем файл.exe а запускаем его .(ну или другое расширение типо cmd и так далее)
Можно так реализовать?

О, юный кулц-хакер подрос. biggrin.gif
Форумы перепутал.
Цитата
Можно так реализовать?

Нельзя.
Можно по-другому, но судя по постановке вопроса, тебе еще года 3 минимум курить маны.


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

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

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