PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: session_start();
Поиск в теме | Версия для печати
feniksdv
Отправлено: 12 Октября, 2015 - 16:48:51
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Я все продолжаю изучать пхп
Решил создать тест и у меня уже проблема на выводе форм, первая и вторая форма выводится (но ответ сохраняет только одна переменная), а третье не хочет выводится т.к. условие проверки не позволяет.
Так вот вопрос: почему только одна переменная хранит данные, а остальные затираются?
PHP:
скопировать код в буфер обмена
<?PHP
$_SESSION [ 'vopros1' ] = $_GET [ "vopros1" ] ;
$_SESSION [ 'vopros2' ] = $_GET [ "vopros2" ] ;
$_SESSION [ 'vopros3' ] = $_GET [ "vopros3" ] ;
if ( ! isset ( $_SESSION [ 'vopros1' ] ) ) {
echo <<<END
<form method="GET">
<h2>Вопрос номер 1</h2>
<label>
<input type="radio" name="vopros1" value="Вариант ответа №2">
Вариант ответа №2
</label><br>
<label>
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
END ;
}
elseif ( isset ( $_SESSION [ 'vopros1' ] ) ) {
echo <<<END
<form method="GET">
<h2>Вопрос номер 2</h2>
<label>
<input type="radio" name="vopros2" value="Вариант ответа №2">
Вариант ответа №2
</label><br>
<label>
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
END ;
}
elseif ( ! isset ( $_SESSION [ 'vopros2' ] ) ) {
echo <<<END
<form method="GET">
<h2>Вопрос номер 2</h2>
<label>
<input type="radio" name="vopros2" value="Вариант ответа №2">
Вариант ответа №2
</label><br>
<label>
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
END ;
}
elseif ( isset ( $_SESSION [ 'vopros2' ] ) ) {
echo <<<END
<form method="GET">
<h2>Вопрос номер 3</h2>
<label>
<input type="radio" name="vopros3" value="Вариант ответа №2">
Вариант ответа №2
</label><br>
<label>
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
END ;
}
elseif ( ! isset ( $_SESSION [ 'vopros3' ] ) ) {
echo <<<ENDD
<form method="GET">
<h2>Вопрос номер 3</h2>
<label>
<input type="radio" name="vopros3" value="Вариант ответа №2">
Вариант ответа №2
</label><br>
<label>
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
ENDD ;
echo 'ok' ;
}
?>
feniksdv
Отправлено: 12 Октября, 2015 - 19:32:00
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
andrewkard пишет: feniksdv
Вы с name ничего не напутали? Не уверен, что нужен, но нет блока:
elseif (isset ($_SESSION['vopros3']))
Нет это не нужно - проверка это:
<Логика>
PHP:
скопировать код в буфер обмена
( если
) ! isset ( не определена переменная
) ( для вопроса
1 ) то вывод "вопрос 1"
( если
) isset ( определена переменная
) ( для вопрос
1 ) то вывод "вопрос 2"
( если
) ! isset ( не определена переменная
) ( для вопрос
2 ) то вывод "вопрос 2"
( если
) isset ( определена переменная
) ( для вопрос
2 ) то вывод "вопрос 3"
А тут получается нужно понять, почему он не сохраняет переменные, если создать другой файлик:
PHP:
скопировать код в буфер обмена
<?PHP
echo 'вопрос 1' , $_SESSION [ 'vopros1' ] , '<br>вопрос 2' , $_SESSION [ 'vopros2' ] , '<br>вопрос 3' , $_SESSION [ 'vopros3' ] ;
?>
то при ответе он каждый раз показывает разный результат, а прежний не сохраняет, отсюда и вывод, что почему-то переменные не сохраняются.(Отредактировано автором: 12 Октября, 2015 - 19:43:37)
andrewkard
Отправлено: 13 Октября, 2015 - 11:43:32
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
Переменные затирались, потому что Вы их сами перезаписывали:
PHP:
скопировать код в буфер обмена
$_SESSION [ 'vopros1' ] = $_GET [ "vopros1" ] ;
$_SESSION [ 'vopros2' ] = $_GET [ "vopros2" ] ;
$_SESSION [ 'vopros3' ] = $_GET [ "vopros3" ] ;
Попробуйте так:
PHP:
скопировать код в буфер обмена
<?PHP
1 => 'Вариант ответа №1' ,
2 => 'Вариант ответа №2' ,
3 => 'Вариант ответа №3' ,
) ;
if ( isset ( $_GET [ "vopros1" ] ) ) $_SESSION [ 'vopros1' ] = $_GET [ "vopros1" ] ; if ( isset ( $_GET [ "vopros2" ] ) ) $_SESSION [ 'vopros2' ] = $_GET [ "vopros2" ] ; if ( isset ( $_GET [ "vopros3" ] ) ) $_SESSION [ 'vopros3' ] = $_GET [ "vopros3" ] ; $_SESSION [ 'order' ] = isset ( $_GET [ 'order' ] ) ?
$_SESSION [ 'order' ] += 1
: 1 ; if ( empty ( $arr_settings [ $_SESSION [ 'order' ] ] ) ) { }
?>
<form method="GET">
<h2>Вопрос номер <?= $_SESSION [ 'order' ] ?> </h2>
<label><input type="radio" name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ $_SESSION [ 'order' ] ] ?> </label><br>
<input type="hidden" name="order" value="<?= $_SESSION [ 'order' ] ?> ">
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
<?PHP
?>
feniksdv
Отправлено: 14 Октября, 2015 - 18:55:48
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
andrewkard пишет: Переменные затирались, потому что Вы их сами перезаписывали:
PHP:
скопировать код в буфер обмена
$_SESSION [ 'vopros1' ] = $_GET [ "vopros1" ] ;
$_SESSION [ 'vopros2' ] = $_GET [ "vopros2" ] ;
$_SESSION [ 'vopros3' ] = $_GET [ "vopros3" ] ;
Попробуйте так:
PHP:
скопировать код в буфер обмена
<?PHP
1 => 'Вариант ответа №1' ,
2 => 'Вариант ответа №2' ,
3 => 'Вариант ответа №3' ,
) ;
if ( isset ( $_GET [ "vopros1" ] ) ) $_SESSION [ 'vopros1' ] = $_GET [ "vopros1" ] ; if ( isset ( $_GET [ "vopros2" ] ) ) $_SESSION [ 'vopros2' ] = $_GET [ "vopros2" ] ; if ( isset ( $_GET [ "vopros3" ] ) ) $_SESSION [ 'vopros3' ] = $_GET [ "vopros3" ] ; $_SESSION [ 'order' ] = isset ( $_GET [ 'order' ] ) ?
$_SESSION [ 'order' ] += 1
: 1 ; if ( empty ( $arr_settings [ $_SESSION [ 'order' ] ] ) ) { }
?>
<form method="GET">
<h2>Вопрос номер <?= $_SESSION [ 'order' ] ?> </h2>
<label><input type="radio" name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ $_SESSION [ 'order' ] ] ?> </label><br>
<input type="hidden" name="order" value="<?= $_SESSION [ 'order' ] ?> ">
<p><input name="submit" type='submit' value='Отправить'></p>
</form>
<?PHP
?>
Спасибо помогло.
feniksdv
Отправлено: 17 Октября, 2015 - 11:51:12
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Да бы не плодить темы, напишу тут.
Решил я прикрутить AJAX для формы, т.к. сейчас перезагружается полностью сайт, что по мне так очень не удобно.
Делаю так:
CODE (
html ):
скопировать код в буфер обмена
<form method = "POST" action = "" id = "test_form" >
<h2 > Вопрос номер <?= $_SESSION[ 'order' ] ?></ h2 >
<h3 ><?= $vop?></ h3 >
<label ><input type = "radio" required name = "vopros<?=$_SESSION['order']?> " value="<?= $arr_settings[ 0 ] [ $_SESSION[ 'order' ] ] ?> "><?= $arr_settings[ 0 ] [ $_SESSION[ 'order' ] ] ?></ label ><br >
<label ><input type = "radio" required name = "vopros<?=$_SESSION['order']?> " value="<?= $arr_settings[ 1 ] [ $_SESSION[ 'order' ] ] ?> "><?= $arr_settings[ 1 ] [ $_SESSION[ 'order' ] ] ?></ label ><br >
<label ><input type = "radio" required name = "vopros<?=$_SESSION['order']?> " value="<?= $arr_settings[ 2 ] [ $_SESSION[ 'order' ] ] ?> "><?= $arr_settings[ 2 ] [ $_SESSION[ 'order' ] ] ?></ label ><br >
<label ><input type = "radio" required name = "vopros<?=$_SESSION['order']?> " value="<?= $arr_settings[ 3 ] [ $_SESSION[ 'order' ] ] ?> "><?= $arr_settings[ 3 ] [ $_SESSION[ 'order' ] ] ?></ label ><br >
<input type = "hidden" name = "order" value = "<?=$_SESSION['order']?> ">
<p ><input name = "submit" type = 'submit' value = 'Отправить' ></ p >
</ form >
<script >
$(function(){
$('#test_form').submit(function(eventObject){
//отменяем стандартное действие при отправке формы
eventObject.preventDefault();
//берем из формы метод передачи данных
var m_method=$(this).attr('method');
//получаем адрес скрипта на сервере, куда нужно отправить форму
var m_action=$(this).attr('action');
//получаем данные, введенные пользователем в формате input1=value1&input2=value2...,
//то есть в стандартном формате передачи данных формы
var m_data=$(this).serialize();
$.ajax({
type: m_method,
url: m_action,
data: m_data,
success: function(result){
$('#test_form').html(result);
}
});
});
});
</ script >
Работает но криво, первый раз жму, страница перезагружается, второй раз сайт не перезагружается. Третий раз снова перезагружается. Курю три дня мануалы, в пхп более менее понятно, что да как, там же черт ногу сломит не могу понять как написать с нуля, поэтому дергаю готовые куски.(Отредактировано автором: 17 Октября, 2015 - 12:01:17)
Tyoma5891
Отправлено: 17 Октября, 2015 - 12:20:48
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
feniksdv это все бред)
все что Вам нужно в этой строчке:
читать тут:
http://jquery-docs[dot]ru/Ajax/jQuery[dot]post/ (Отредактировано автором: 17 Октября, 2015 - 12:30:50)
feniksdv
Отправлено: 19 Октября, 2015 - 10:26:21
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Не получается делаю так:
xxx.php
PHP:
скопировать код в буфер обмена
<?PHP
1 => '1' ,
2 => '2' ,
3 => '3' ,
4 => '4' ,
5 => '5' ,
6 => '6' ,
7 => '7'
)
) ;
if ( isset ( $_POST [ "vopros1" ] ) ) { $_SESSION [ 'vopros1' ] = $_POST [ "vopros1" ] ;
}
if ( isset ( $_POST [ "vopros2" ] ) ) { $_SESSION [ 'vopros2' ] = $_POST [ "vopros2" ] ;
}
if ( isset ( $_POST [ "vopros3" ] ) ) { $_SESSION [ 'vopros3' ] = $_POST [ "vopros3" ] ;
}
if ( isset ( $_POST [ "vopros4" ] ) ) { $_SESSION [ 'vopros4' ] = $_POST [ "vopros4" ] ;
}
if ( isset ( $_POST [ "vopros5" ] ) ) { $_SESSION [ 'vopros5' ] = $_POST [ "vopros5" ] ;
}
if ( isset ( $_POST [ "vopros6" ] ) ) { $_SESSION [ 'vopros6' ] = $_POST [ "vopros6" ] ;
}
if ( isset ( $_POST [ "vopros7" ] ) ) { $_SESSION [ 'vopros7' ] = $_POST [ "vopros7" ] ;
}
$_SESSION [ 'order' ] = isset ( $_POST [ 'order' ] ) ?
$_SESSION [ 'order' ] += 1
: 1 ;
if ( $_SESSION [ 'order' ] == 1)
$vop = '11' ;
if ( $_SESSION [ 'order' ] == 2)
$vop = '22' ;
if ( $_SESSION [ 'order' ] == 3)
$vop = '33' ;
if ( $_SESSION [ 'order' ] == 4)
$vop = '44' ;
if ( $_SESSION [ 'order' ] == 5)
$vop = '55' ;
if ( $_SESSION [ 'order' ] == 6)
$vop = '66' ;
if ( $_SESSION [ 'order' ] == 7)
$vop = '77' ;
##############---------IMG
if ( $_SESSION [ 'order' ] == 1)
$vop_img = '<img src="/wp-content/uploads/test/vop1.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 2)
$vop_img = '<img src="/wp-content/uploads/test/vop2.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 3)
$vop_img = '<img src="/wp-content/uploads/test/vop3.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 4)
$vop_img = '<img src="/wp-content/uploads/test/vop4.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 5)
$vop_img = '<img src="/wp-content/uploads/test/vop5.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 6)
$vop_img = '<img src="/wp-content/uploads/test/vop6.jpg" width="100%"/>' ;
if ( $_SESSION [ 'order' ] == 7)
$vop_img = '<img src="/wp-content/uploads/test/vop7.jpg" width="100%"/>' ;
##############---------IMG end
##############---------text for test
if ( $_SESSION [ 'order' ] == 1)
$vop_text_for_test = '<p>Ля-ля</p>' ;
##############---------text for test end
if ( $_SESSION [ 'voprosХ' ] == $arr_settings [ 0 ] [ 'Х' ] ) { $a [ х] = 1 ; }
if ( $_SESSION [ 'voprosХ' ] == $arr_settings [ 1 ] [ 'Х' ] ) { $a [ х] = 2 ; }
if ( $_SESSION [ 'voprosХ' ] == $arr_settings [ 2 ] [ 'Х' ] ) { $a [ х] = 3 ; }
$a [ $b ] = 1 ;
$sum = 0 ;
foreach ( $a as $key => $value ) {
$sum = $sum + $value ;
}
if ( empty ( $arr_settings [ 0
] [ $_SESSION [ 'order' ] ] ) ) { echo '<form method="post" >' ;
echo '<input name="submit" type="submit" value="Пройти снова" style="margin: 20px auto 0px; background: #747FC2; border: 0; color: #fff; padding: 10px 40px; font-size: 16px; font-family: "Roboto Bold Condensed"; text-transform: uppercase;"/>' ;
echo '</form>' ;
if ( $rez_test <= 7) { echo "Ответ1" ; }
if ( $rez_test >= 8 && $rez_test <= 14) { echo "Ответ2" ; }
if ( $rez_test >= 15 && $rez_test <= 21) { echo "Ответ3" ; }
if ( $rez_test >= 22 && $rez_test <= 35) { echo "Ответ4" ; }
echo '<br>' ;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
<body>
<?= $vop_text_for_test ?>
<div id="save_result">
<form method="POST" id="test_form">
<h2>Вопрос номер <?= $_SESSION [ 'order' ] ?> </h2>
<p><?= $vop_img ?> </p>
<h3><?= $vop ?> </h3>
<label style="font-size: 20px;"><input type="radio" required name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ 0] [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ 0] [ $_SESSION [ 'order' ] ] ?> </label><br>
<label style="font-size: 20px;"><input type="radio" required name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ 1] [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ 1] [ $_SESSION [ 'order' ] ] ?> </label><br>
<label style="font-size: 20px;"><input type="radio" required name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ 2] [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ 2] [ $_SESSION [ 'order' ] ] ?> </label><br>
<label style="font-size: 20px;"><input type="radio" required name="vopros<?= $_SESSION [ 'order' ] ?> " value="<?= $arr_settings [ 3] [ $_SESSION [ 'order' ] ] ?> "><?= $arr_settings [ 3] [ $_SESSION [ 'order' ] ] ?> </label><br>
<input type="hidden" name="order" value="<?= $_SESSION [ 'order' ] ?> ">
<p><input style="margin: 20px auto 0px; background: #747FC2; border: 0; color: #fff; padding: 10px 40px; font-size: 16px; font-family: 'Roboto Bold Condensed'; text-transform: uppercase;" name="submit" type='submit' value='Отправить'></p>
</form>
</div>
<script>
$.post('xxx.php',$('#test_form').serialize(),function(data){
$('#save_result').html(data);
});
</script>
(Отредактировано автором: 19 Октября, 2015 - 13:40:06)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB