2014-01-30 5 views
0

У меня есть цикл, который извлекает строки из базы данных и выплевывает их в таблице.PHP - Javascript - перенос динамических переменных между страницами, находящимися в цикле

Для каждой строки у меня есть кнопка, которая сгенерирована. Поэтому, если у меня 5 строк, появляется 5 кнопок. В настоящее время, когда я нажимаю любую из кнопок, JavaScript скроет кнопку, заменит ее на «Button Pressed», а затем откройте окно.

Я бы хотел, чтобы пользователь, нажав кнопку, изменил переменную #StartDate и переменную $StartTime переносится в новое окно, где пользователь может выполнять другие функции с этой конкретной строкой. Я пытался использовать формы внутри эха, но не возвращал никаких значений. Я также попробовал функцию $_SESSION без везения. Как можно перенести каждую строку в окно, когда нажата кнопка этой строки?

function buttonpressed(button) { 
    button.style.visibility = "hidden"; 
    document.getElementById("ChangeButton1").innerHTML="Button Pressed"; 
    window.open ('test2.html','newWin', 'width=400,height=400'); 
} 


while($row = odbc_fetch_array($rs)) 
{ 
$StartDate=odbc_result($rs,"StartDate"); 
$StartTime=odbc_result($rs,"StartTime"); 
echo ' 
<tr> 
<td class="td" valign="top"><p id="ChangeButton"><input type="submit" name="buttonpressed" value="buttonpressed" onclick="SendEmail(this); return false;"></p></td>'; 
echo ' 
<td class="td" valign="top">' . $StartDate . '</td> 
<td class="td" valign="top">' . $StartTime . '</td> 
</tr> '; 

} 
+1

я не знаю много о JavaScript, но вы можете передать ваши переменные test2.html uing $ _GET? ... как test2.html? StartDate = xxxx & StartTime = xxx – kraysak

+0

@kraysak Я пробовал это, но поскольку переменные являются переменными PHO, мне нужно будет идти, как test2.PHP? StartDate = - но проблема в том, что это в эхо. Итак, когда я закрываю тег?>, Вызывающий код freak – Yusof

+0

try 'sessionStorage.setItem (« startdate », );' <== хранить значение в сеансе .. 'sessionStorage. getItem ("startdate") '<== получить значение из сеанса – rynhe

ответ

1

Вместо того, чтобы пытаться перенести данные строки в новом окне, вы можете рассмотреть вопрос просто проходя первичный ключ Роу в новом окне, например, как параметр GET, и выборка строки в новом окне.

Есть несколько причин, почему я рекомендовал бы это:

  1. Это позволит сделать его легче изменить положение вещей в будущем, если информация, которую вы хотите использовать из ряда в новых изменениях окна. Вам нужно только изменить код в новом окне, а не код, который открывает окно.
  2. Если новое окно выполняет некоторые действия с данными (например, отправляет электронное письмо, как следует из названия функции), это гарантирует, что пользователи выполняют это действие только с использованием данных, которые находятся в строке в базе данных. Если вы передаете данные явно вместо первичного ключа, пользователи могут изменить ваш код, чтобы передать все параметры, которые они хотят.
  3. Если новое окно выполняет некоторую операцию с базой данных в строке, тогда было бы хорошо иметь первичный ключ в любом случае.

Например:

// JavaScript 
function SendEmail(button, id) { 
    // ... 
    window.open('test2.php?id=' + id, 'newWin', 'width=400,height=400'); 
} 

// PHP 
while($row = odbc_fetch_array($rs)) 
{ 
    // ... 
    $id = odbc_result($rs, "id"); // or whatever your primary key is 
    echo '... <input type="submit" ... onclick="SendEmail(this, ' . $id . '); return false;"> ...'; 
    // ... 
} 

Тогда в test2.php:

$id = $_GET['id']; // make sure to sanitize before inserting into a query 
// SELECT ... FROM ... WHERE id = $id; 
+0

Это по какой-то причине сломало кнопку. – Yusof

+0

Можете ли вы опубликовать обновленный код? например через [Pastebin] (http://pastebin.com/). Я не уверен, как кнопка работала в вашем исходном коде, поскольку она вызывала функцию с именем SendEmail(), которая не была в вашем коде (я предполагал, что buttonpressed() должен был быть этим). – Avalanche

+0

http://pastebin.com/EvtD0dH3 – Yusof

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