2012-04-20 10 views
0

私のウェブサイトには、管理者が望むニュースを編集して削除するオプションのあるニュースシステムがあります。JavascriptとPHP(window.open)

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

し、他のページで$_GETを:

はまあ、私が使用して編集部分の権利を得ました。

しかし、これは私の編集ウィンドウを望んでいない方法です。 したがって、JavaScriptを使用して、ニューステーブル(MySQL)の主キーを含むPHP変数をポップアップウィンドウに送信する方法を検討しています。しかし、それは単なるものです。それは、それがクエリから得られる最初の値を返すだけです...(つまり、3番目の記事を編集するためにクリックすると、最初の記事を編集します)。

私の現在のコードです:

<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

また、 'window.open' JavaScript呼び出しは、ループの後に起こるので、PHPループからの最後の' $ id'を常に持ちます。その機能は常に最後のものを開きます。 – David

+0

「編集ウィンドウ」を正しいIDで直接読み込もうとしましたか?レコードをIDでロードするクエリはどこにありますか? – Alex

答えて

3

このコード:$idの値がループに$idに設定された最後の値になるよう

<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ループの外で起こっています。したがって、JavaScriptコードは常に同じリンクを開きます。

JavaScriptのコードに$idの値を指定するコードが必要な場合は、それを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> 

レンダリングされた出力は、各aに、レコード特有の$id値が含まれますタグをクライアント上の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> 

これは、おそらく最後のIDでレンダリングされます。構造を把握して、編集するためにクリックした記事に基づいて異なるIDを渡す必要があります。

0

編集するピースのIDは、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イベントを更新し、tehのそれぞれのIDを引き渡すする必要があります。

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

それはうまくいくはずです。

よろしく STEFAN