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

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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22693
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 29 дней
Карма: 599




Свой код почитай.
У тебя написано: "вопрос№1": $load_test = 1;

if(isset($_POST['plus'])){
$load_test =++ $_SESSION['count'];
}

А тут сказано, что номер вопроса ($load_test) станет равен счётчику только в случае нажатия на <input type="submit" name="plus">.
Если на эту кнопку не нажимать, то этот код отрабатывать и не будет, собственно.


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

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



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

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




Цитата (maruo @ 11.11.2015 - 22:12)
Я не могу забросить это дело, пока не узнаю в чем сейчас проблема.

Иногда лучше сжечь и построить заново.
Это как раз твой случай.

Итак, строим заново:
1. Забыть про смешивание обработки данных и вывод данных. Именно по этой причине у тебя такая неразбериха. Ты сначала написал простенькое, потом добавляешь логики, но теперь придется и переписывать вывод, т.к. он уже не соответствует новой логике.

2. Инициализируй переменные дефолтными значениями.
Кто-то скажет, что тру-программисты так не делают, но это из разряда "Тормаза придумали трусы, настоящие пацаны тормозят движком, ручником и юзом".

3. Пока ты учишься, не ленись писать больше кода, который будет тебе более понятен.
Писать в одну строку, использовать плейсхолдеры и т.д. это все круто, но глупо и больно при дебаге.
Станешь старше, будешь исполнять трюки, а пока не ленись написать:
echo '<input type="submit", name="a2", value="' .  $myrow["answer2"] . ''">';


Осталное тебе Valick расскажет, когда у него голова перестанет болеть.
Не сомневайся, он расскажет, он теперь не сможет не рассказать :)

А завтра я тут анекдот зопостю, очень в тему будет :)


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

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



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

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




Цитата (AllesKlar @ 12.11.2015 - 02:09)
echo '<input type="submit", name="a2", value="' .  $myrow["answer2"] . ''">';

Не понимаю зачем мне писать больше, если я могу написать короче и лучше буду это понимать , чем такой расширенный. Для меня это сложнее , мне проще подставить маркеры.
Я не знаю как вывести след вопрос.
Я могу в ручную поменять в запросе id , поставить вывод рандомного id.
А как вывести по кнопке не получается. Если я использую в запросе выборки $id вы пишете что такого делать нельзя. ТОгда у меня ступор и тут же вопрос. А КАК ЖЕ ЕЩЕ?

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

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



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

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




Давайте не будем заострять внимание на то что все должно быть отдельно в разных файлах
То что обработка в одном месте, запросы в отдельном.
Меня интересует другое.

В ручную я меняю id все меняется и подставляется правильно.
Отвечаю на вопросы все проверяется ответы сходятся.

Могу вывести любой вопрос из бд со всеми все нормально.
Но это все в ручную переписывать запрос WHERE id...

Как мне это сделать через кнопку след 'вопрос'
Если мне нельзя использовать в запросе $id.

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

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

bd.php
$db = mysql_connect("localhost","testuser","12345");
mysql_select_db('gameshop');
$result = mysql_query("SELECT * FROM game WHERE id='5'",$db) or die(mysql_error());//выбираем 5й вопрос.
$myrow = mysql_fetch_array($result);

check.php
<?
//error_reporting(E_ALL);
header('content-type: text/html; charset=utf-8');
include ("bd.php");
/***************** То что ответит блок проверки вопроса *******************/
$var1 = "Ответ верный";
$var2 = "Ответ неверный";
$v_ans = false;

$myrow['id'];//текущий id вопросаs
$myrow['valid_answer'];//правильный ответ
/***************** Проверяем какая кнопка была нажата, и помещаем результат в $v_ans *******************/
if(isset($_POST['a1'])){
$v_ans = $_POST['a1'];}
elseif(isset($_POST['a2'])){
$v_ans = $_POST['a2'];}
elseif(isset($_POST['a3'])){
$v_ans = $_POST['a3'];}
elseif(isset($_POST['a4'])){
$v_ans = $_POST['a4'];}
/***************** Проверка на правильность ответа *******************/
if(isset($_POST['a1'])){
if($myrow['valid_answer'] == $v_ans) $myrow['result_test'] = $var1;
else $myrow['result_test'] = $var2;}
if(isset($_POST['a2'])){
if($myrow['valid_answer'] == $v_ans) $myrow['result_test'] = $var1;
else $myrow['result_test'] = $var2;}
if(isset($_POST['a3'])){
if($myrow['valid_answer'] == $v_ans) $myrow['result_test'] = $var1;
else $myrow['result_test'] = $var2;}
if(isset($_POST['a4'])){
if($myrow['valid_answer'] == $v_ans) $myrow['result_test'] = $var1;
else $myrow['result_test'] = $var2;};
/***************** Создано для отслежки работы *******************/
echo "<br>ID вопроса \n". $myrow['id'];
echo "<br>Верный ответ: \n". $myrow['valid_answer'];
echo "<br>Текущий ответ: \n". $v_ans;
echo "<br>Результат:\n". $myrow['result_test'];
/***************** Форма вывода вопросов/ответов *******************/
printf ('<p style="text-align:center">%s</p>
<form action="check.php" style="text-align:center" method="post">
<input type="submit", name="a1", value="%s">
<input type="submit", name="a2", value="%s">
<input type="submit", name="a3", value="%s">
<input type="submit", name="a4", value="%s"><br></form>'
,
$myrow["question"],
$myrow["answer1"],
$myrow["answer2"],
$myrow["answer3"],
$myrow["answer4"]);

?>
<form action="index.php" style="text-align:center"><button><? echo "Назад" ?></button></form>


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

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



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

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




ок, не хотите по нормальному как хотите
изначально ваш id = 0 (если методом GET не передан или не сохранен в сессии текущий id)
следовательно надо составить запрос таким образом, что бы при текущем id = 0 был выведен следующий id по возрастанию 1 или 10 или 57 или 10987 это не имеет значения
поэтому в запросе надо указать не =, а >
$id = ($_REQUEST('id'))? intval($_REQUEST('id')) : 0;
$result = mysql_query("SELECT * FROM game WHERE id>'".$id."' LIMIT 1'",$db) or die(mysql_error());

это один из вариантов реализации, и по логике самый грамотный, так как пока вы отвечаете на текущий вопрос в БД могут быть внесены изменения
дальше сами как-нить, вы мне более не интересны, раз не хотите следовать моим указаниям и выполнять мои задания.


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

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



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

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




ок, не хотите по нормальному как хотите
изначально ваш id = 0 (если методом GET не передан или не сохранен в сессии текущий id)
следовательно надо составить запрос таким образом, что бы при текущем id = 0 был выведен следующий id по возрастанию 1 или 10 или 57 или 10987 это не имеет значения
поэтому в запросе надо указать не =, а >
$id = ($_REQUEST('id'))? intval($_REQUEST('id')) : 0;
$result = mysql_query("SELECT * FROM game WHERE id>'".$id."' LIMIT 1'",$db) or die(mysql_error());

это один из вариантов реализации, и по логике самый грамотный, так как пока вы отвечаете на текущий вопрос в БД могут быть внесены изменения
дальше сами как-нить, вы мне более не интересны, раз не хотите следовать моим указаниям и выполнять мои задания.

А вот слышал, а конкретно от Борисова Игоря Андреевича, Преподователя "Специалист" по php Что использование $_REQUEST не безопасно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maruo  
 ۩  Дата
Цитировать сообщение

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



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

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




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

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

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



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

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




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

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



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

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




maruo, я понятия не имею кто такой Игорь Андреевич Борисов. Во всяком случае REQUEST придумал не он, а разработчики РНР.
Опять же здесь он написан для примера, передаете через адресную строку используйте $_GET, храните в сессии используйте $_SESSION.


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

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



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

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




Цитата (maruo @ 15.11.2015 - 17:34)
С чего вы взяли что я не следовал вашим задачам

я вас просил организовать БД по конкретному ТЗ


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

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



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

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




Цитата (Valick @ 15.11.2015 - 18:38)
Цитата (maruo @ 15.11.2015 - 17:34)
С чего вы взяли что я не следовал вашим задачам

я вас просил организовать БД по конкретному ТЗ

К сожалению я не понимаю аббревиатуры Т3
3 таблицы чтоле?
А нормализацию я начал изучать, не по книгам но по урокам "СПециалист" ибо их хвалят.
Я лучше воспринимаю информацию на живых примерах ежели чисто текстом.

if(isset($_POST['a1'])){
if($myrow['valid_answer'] == $v_ans) $myrow['result_test'] = $var1;
else $myrow['result_test'] = $var2;}


Вы намекали на то что так не нужно использовать, я бы хотел услышать почему нельзя так проверить на верность ответа?
С киберфорума мне намекнули на такую конструкцию
$var1,2 тут временно что бы мне видеть результат. если вы на нее намекали.

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

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



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

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




Цитата (maruo @ 15.11.2015 - 17:40)
А нормализацию я начал изучать, не по книгам но по урокам "СПециалист" ибо их хвалят.
Я лучше воспринимаю информацию на живых примерах ежели чисто текстом.

ок, в чём заключается небезопасность $_REQUEST ?


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

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



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

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




Цитата (Valick @ 15.11.2015 - 18:45)
Цитата (maruo @ 15.11.2015 - 17:40)
А нормализацию я начал изучать, не по книгам но по урокам "СПециалист" ибо их хвалят.
Я лучше воспринимаю информацию на живых примерах ежели чисто текстом.

ок, в чём заключается небезопасность $_REQUEST ?

На данный момент я не припоминаю точно что он говорил, помню что заикался о небезопасности, т.к туда приходят все данные $_GET, $_POST и $_COOKIE.
Может по неопытности я могу что то и путать, но суть разговора не в том.

Хорошо я продолжу изучение 3х нормальных форм.
Может это проявит свет на мою ситуацию.
Было б не плохо тогда если бы вы предложили ЛУЧШУЮ литературу где бы я точно бы понял о этих нормальных формах.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

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



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

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




вот здесь неплохо описана нормализация http://club.shelek.ru/viewart.php?id=311
завтра если будет время посмотрю книги для рекомендации


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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22693
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 29 дней
Карма: 599




maruo
Цитата
Как мне это сделать через кнопку след 'вопрос'

Тебе надо подружить голову с руками (не обижайся, я не грублю). Допустим, у тебя в $_SESSION['count'] содержится номер вопроса, на который идёт ответ. Ты это понимаешь? Вроде да, а в коде написано:

$load_test = 1;

Почему работаешь с ТЕСТОМ 1 постоянно? Потому что руки написали это, хотя голова тебе в 100 раз намекает, что твой номер вопроса содержится в $_SESSION['count'];

Вот же:
$result = mysql_query("SELECT * FROM game WHERE id='$load_test'",$db) or die(mysql_error());

Ты выбираешь $load_test = 1;, то есть единицу постоянно...


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

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

Опции темыСтраницы: (20) 1 [2] 3 4 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса