2012-04-20 15 views
0

Итак, на моем веб-сайте у меня есть система новостей, которая имеет возможность редактировать и удалять новости, которые желает администратор.Javascript и PHP (window.open)

Ну, я получил часть право редактирования с помощью:

href="noticiaEditarForm.php?id_noticia=<?php echo $id ?>">Editar</a>

, а затем $_GET на другой странице.

Однако это не то, как я хочу окно редактирования. Поэтому я изучаю способ отправки переменной PHP, содержащей первичный ключ для таблицы новостей (MySQL) во всплывающее окно с использованием JavaScript. Но это только то, что оно вернет только одно значение, полученное из запроса ... (т. Е. Если я нажму, чтобы отредактировать третью статью, он редактирует мой первый. Всегда.)

Вот мой текущий код :

<div class="noticias"> 
<?php 
    include('conn/conn.php'); 
    mysql_select_db($bd, $conn); 

    $resultado = mysql_query("SELECT * FROM noticia INNER JOIN user ON noticia.id_user=user.id_user ORDER BY id_noticia DESC"); 

    while ($linha = mysql_fetch_array($resultado)) { 
     echo "<h1>" . $linha['titulo'] . "</h1>"; 
     echo "<i>Posted by " .$linha['username']. " on " . "<y>" . $linha['data'] . "</y>" . "</i>"; 
     echo "<p>"; 
     echo $linha['texto']; 

     $id = $linha['id_noticia']; 

     if (isset($_SESSION['admin'])) { 
?> 
      <div class="noticiasOpcao"> 
       <a href="" onClick="open_win_editar()">Editar</a> 
       &nbsp;&nbsp;&nbsp;&nbsp; 
       <a onclick="return confirm('Are you sure?')" href="noticiaApagar.php?id_noticia=<?php echo $id ?>">Apagar</a> 
      </div> 
<?php 
     } 
    } 
?> 

<script language="javascript"> 
    function open_win_editar() { 
     window.open (
      "noticiaEditarForm.php?id_noticia=<?php echo $id; ?>", 
      "Editar notícia", 
      "location=1, status=1, scrollbars=1, width=800, height=455" 
     ); 
    } 
</script> 

<?php mysql_close($conn); ?> 

</div> 

Моя точка является то использовать другой запрос, чтобы получить заголовок и текст статьи, чтобы отобразить на редактора WYSIWYG.

Может ли кто-нибудь указать на мой недостаток?

+0

Какова фактическая воспроизведенная выходная? Является ли '$ id' одинаковым на каждой итерации цикла? – David

+0

Кроме того, JavaScript-вызов 'window.open' всегда будет содержать последний' $ id' из цикла PHP, так как это происходит после цикла. Таким образом, функция всегда будет открывать последнюю. – David

+0

Вы пытались загрузить «окно редактирования» напрямую с правильным идентификатором? Где ваш запрос, который загружает запись по id? – Alex

ответ

3

Этот код:

<script language="javascript"> 
    function open_win_editar() { 
     window.open ("noticiaEditarForm.php?id_noticia=<?php echo $id; ?>", "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455"); 
    } 
</script> 

происходит вне цикла PHP while, поэтому значение $id будет последнее значение, которое было установлено в $id в петле. Таким образом, код JavaScript всегда будет открывать одну и ту же ссылку.

Если вам нужен код в цикле PHP, чтобы указать значение $id для JavaScript, вы можете передать его как аргумент функции JavaScript. Что-то вроде этого:

<script language="javascript"> 
    function open_win_editar(targetID) { 
     window.open ("noticiaEditarForm.php?id_noticia=" + targetID, "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455"); 
    } 
</script> 

Таким образом, код визуализации метки анкерные в цикле будет проходить аргумент так:

<a href="" onClick="open_win_editar(<?php echo $id; ?>)">Editar</a> 

Визуализированное результат будет тогда содержать $id значение записи конкретных по каждому a тег, который будет использоваться кодом JavaScript на клиенте.

+0

Большое вам спасибо! Не могу поверить, что все было так просто! Приветствия, приятель! : D –

0
<script language="javascript"> 
      function open_win_editar() { 
       window.open ("noticiaEditarForm.php?id_noticia=<?php echo $id; ?>", "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455"); 
      } 
     </script> 

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

0

Идентификатор произведения редактируется только в цикле while и никогда не находится за его пределами.

Чтобы использовать его, как вы хотите, вы должны использовать параметр для функции open_with_editar:

<script language="javascript"> 
      function open_win_editar(id) { 
       window.open ("noticiaEditarForm.php?id_noticia="+id, "Editar notícia", "location=1, status=1, scrollbars=1, width=800, height=455"); 
      } 
     </script> 

Теперь вы только должны обновить событие OnClick и передать дэ соответствующий идентификатор:

<div class="noticiasOpcao"> 
     <a href="" onClick="open_win_editar(<?php echo $id; ?>)">Editar</a> 

Это должно сработать.

С уважением STEFAN