2010-03-24 5 views
0

Мой проект о школьном администраторе У меня есть страница с именем: createClass.php, где пользователь вводит оценку, профиль и т. Д. Когда он нажимает кнопку «отправить», которую вызывает createdClass.php, загружается. Внутри этой страницы у меня есть весь код, который вставляет данные в базу данных, а также структуру «if», которая гласит: «Класс уже существует», если в базе данных есть другой класс с теми же спецификациями. Также на второй странице (createdClass.php) у меня есть небольшая таблица, которая показывает место каждого ученика. В первый раз все ячейки зеленые (это означает, что место бесплатное), и если я нажму на один из них, появится всплывающее окно, которое позволит мне добавить информацию об ученике из этого места. Если место занято, ячейка будет красной (смотрите здесь: http://screencast.com/t/NzM2YzYxNjct). Большая проблема в том, что ячейка будет красной только после обновления страницы (место запрашивает данные из базы данных). Если я нажму «Обновить», появится «класс уже существует». Чтобы проверить код, я добавил в комментарий все строки, которые проверяют и добавляют соответственно класс. Я думаю, что моя проблема может быть решена с помощью ajax. Я жду ответа. С уважением StefanПолучить данные из базы данных без обновления всей страницы

+0

Ваша проблема может быть решена с помощью AJAX и длительного опроса или периодических запросов к базе данных. – Gazler

+2

Вы на самом деле не задали вопрос. –

ответ

0

Вы должны перенаправить пользователя на другую страницу после вставки данных (после запроса POST, вообще говоря).

Измените форму в createClass.php, чтобы указать на ту же страницу и переместить код вставки базы данных в этот файл.

<?php 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // insert the data here 
    header('Location: /createdClass.php'); 
    exit(); 
} 

?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
... 
</form> 

(Update) Поток будет идти, как это:

  1. Пользователь показан вид в createClass.php
  2. Когда пользователь отправляет форму, представление обрабатывается в том же createClass .php, который вставляет строку базы данных, а затем не показывает ни одной страницы, но указывает браузеру перейти к 'createdClass.php'.
  3. Теперь браузер загружает createClass.php, который показывает только таблицу учеников (но не делает никаких вставок базы данных!). Теперь вы можете обновлять createClass.php столько раз, сколько хотите, без побочных эффектов.

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

+0

Я думаю, что ваш путь хорош, но я не понял, что именно я должен делать. Мне нужна другая страница или как? Вы можете уточнить? Спасибо за потраченное время, чтобы помочь мне. // Stefan – stefanz

+0

Обновлен мой ответ. – jholster

+0

Большое спасибо. Я попытаюсь что-то сделать, но я думаю, что лучше всего использовать Ajax, я думаю. Вы можете помочь мне с Ajax, пожалуйста? – stefanz

1

Чтобы обновить исходное окно из всплывающего окна, используйте этот кусок JavaScript:

window.opener.location.refresh(); 
+0

Мне понравилось, что вы сказали мне, но проблема с «refresh()» вся страница обновляется, и это означает, что «Класс уже существует», так что это не очень хорошо. Спасибо за ответ, и если у вас есть другая идея, не стесняйтесь это говорить. С уважением, Стефан – stefanz

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