2017-01-28 5 views
0

Я пытаюсь связать две php-страницы с вопросами. После отправки формы он проверяет базу данных на сохранение значения и затем перенаправляется на следующую страницу. Но я застрял здесь в функции header(). Это не перенаправление на следующую страницу. Где я делаю это неправильно?Переадресация после отправки на следующую страницу

$q1= "SELECT * FROM user_lang WHERE lang='$lang' AND q_id='1'"; 
$r1=mysqli_query($connection, $q1) or die(mysqli_error($connection)); 
$row1=mysqli_fetch_assoc($r1); 

$q2="SELECT * FROM user_test WHERE mid='$username'"; 
$r2=mysqli_query($connection, $q2) or die(mysqli_error($connection)); 
$row2=mysqli_fetch_row($r2); 
echo '<div class="wrapper" style="padding-top:5%;">'; 
echo '<div class="login-page"> 
<h2 align="center">'.$lang.' Module 1</h2>'; 
if(isset($_POST['answer'])) 
{ 
    $answer=$_POST['answer']; 
    if(mysqli_num_rows($r2)>0) 
    { 
$loadquery2="UPDATE user_test SET q1='$answer' WHERE mid='$username'"; 
$loadres2=mysqli_query($connection,$loadquery2) or die(mysqli_error($connection)); 
     header('Location: "/vtest/q2.php"'); 
    } 
    else 
    { 
     $loadquery2="INSERT INTO user_test(mid,q1) VALUES ('$username','$answer')"; 
     $loadres2=mysqli_query($connection,$loadquery2) or die(mysqli_error($connection)); 
     header('Location: "/vtest/q2.php"'); 
    } 
} 
else 
{ 
echo "<form method='POST'>"; 
echo $row1['quest']; 
echo '<br><input type="radio" name="answer" value="a" checked>'.$row1['o1'].'<br>'; 
echo '<input type="radio" name="answer" value="b" >'.$row1['o2'].'<br>'; 
echo '<input type="radio" name="answer" value="c" >'.$row1['o3'].'<br>'; 
echo '<input type="submit" value="Submit">'; 
echo"</form>"; 
} 
echo '</div></div></body></html>'; 
?> 

BTW этот файл называется q1.php &, когда я отправить форму URL-адрес не меняется. Я думаю, это означает, что это не ошибка на странице q2.php, а сама q1.php.

+3

Код заголовка не запускается после эха или любого тега html. вам нужно переместить ваше состояние наверху – Bhavik

+0

Так что нет ли способа, кроме закрытия php? –

+0

вы можете использовать метод переадресации javascript. 'Echo '';' – Bhavik

ответ

-1

Заменить

header('Location: "/vtest/q2.php"'); 

с

header("Location: /vtest/q2.php"); 
exit; 

UPDATE

1) не должно быть никаких выходных данных (то есть эхо .. или HTML коды) перед заголовком (.. .....); команда.

2) не должно быть пробелов (или новой строки) до <?php and after ?> тегов.

3) ПРАВИЛО ЗОЛОТА! - файл (а также, если вы включаете другие файлы), имеет UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале вывода файла) !!!!!!!!!!!

4) Включить отчет об ошибках. И сообщите об ошибке.

5) Если перенаправление, то после заголовка (...); вы должны использовать exit;

6) всегда используют 301 или 302 в ссылке:

header("location: http://example.com", true, 301); exit; 

7) Если ни один из вышеперечисленного не помогает, используйте JAVSCRIPT перенаправление (не рекомендуется By Google), но это может быть последний шанс ...:

echo "<script type='text/javascript'>window.top.location='http://example.com/';</script>"; exit; 
+0

Nope not working –

+0

У вас есть это проверить или обновить запрос на ввод? – shubham715

+0

Да, они отлично работают! –

Смежные вопросы