簡體   English   中英

我該怎么做 <p> 標簽可點擊通過使用PHP彈出?

[英]How can i make every <p> tag clickable on a pop-up by using php?

如您所見,我的代碼正在使用sql。 每個電子郵件名稱將顯示在“彈出窗口”上。 並且所有的人都有單獨的p標簽。 我想做的是,當用戶單擊此p標簽時,他們必須訪問另一頁。 我是php新手,做錯了什么。 一些幫助將是巨大的。 謝謝。

<div id="dialog" title="Following">
  <?php
  $x=0;
  $arrayName = array();
  $sqls = "SELECT * FROM follow WHERE member_email='$email'";
  $result = mysqli_query($conn,$sqls);
  while($row = mysqli_fetch_assoc($result)) {
    $arrayName[$x]  = $row["person_email"];

    $x=$x+1;
  } ?>
  <?php for($k = 0; $k < $x; $k++) {?>
    <p id="pop" value="$arrayName[$k]" onclick="popFunc(this.value)"><?php echo  $arrayName[$k]; ?></p>

  </div>
/////////////////////////////////////////////////////////////////

function popFunc($element){

$_SESSION['visiter']=$element; 
document.location.href = 'http://localhost/example/visiter.php';

}

此行中的onclick()
<p id="pop" value="$arrayName[$k]" onclick="popFunc(this.value)"><?php echo $arrayName[$k]; ?></p>

這意味着調用javascript函數。 最好將<p>更改為<a>標記。 因此,完整的腳本是這樣的:

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script>

function popFunc(name){
alert(name);
}

</script>
<div id="dialog" title="Following">
  <?php
  $x=0;
  $arrayName = array();
  $sqls = "SELECT * FROM follow WHERE member_email='$email'";
  $result = mysqli_query($conn,$sqls);
  while($row = mysqli_fetch_assoc($result)) {
    $arrayName[$x]  = $row["person_email"];

    $x=$x+1;
  } ?>
  <?php for($k = 0; $k < $x; $k++) {?>
    <a id="pop" href="#" onclick="popFunc(<?= $arrayName[$k] ?>)"><?php echo  $arrayName[$k]; ?></a>

  </div>

希望它可以幫助您;)

您不能在函數中混合使用Javascript和PHP。 這是一個解決方案

<div id="dialog" title="Following">
  <?php
  $x=0;
  $arrayName = array();
  $sqls = "SELECT * FROM follow WHERE member_email='$email'";
  $result = mysqli_query($conn,$sqls);
  while($row = mysqli_fetch_assoc($result)) {
    $arrayName[$x]  = $row["person_email"];

    $x=$x+1;
  } ?>
  <?php for($k = 0; $k < $x; $k++) {?>
    <p id="pop" onclick="popFunc('<?php echo  $arrayName[$k]; ?>')"><?php echo  $arrayName[$k]; ?></p>

  </div>
<?php } ?> 
/////////////////////////////////////////////////////////////////
<script>
function popFunc(element){
document.location.href = 'http://localhost/example/visiter.php?visiter='+element;
}
</script>

和您的visiter.php:

$_SESSION['visiter']替換$_SESSION['visiter'] $_GET['visiter']

您所做的不正確,您正在將Javascript與PHP混合使用。

onclick="popFunc(this.value)"將嘗試運行您的代碼中未定義的JavaScript代碼。

PHP服務器端代碼,而JavaScript客戶端代碼。 我對JavaScript不太了解,因此我無法為您提供幫助,但是您可以搜索jQueryJavaScript教程。

由於服務器端, PHP將始終在HTML / JS / CSS之前運行。 因此,如果要獲取數據而不更改頁面,則必須使用AJAX 這並不難,但是您需要了解JavaScript。

是一個很好的教程來幫助您。


編輯

我錯誤地閱讀了p標簽上的代碼。 他正在混合HTML和PHP,但是我沒有看到他錯誤地調用了popUp函數。 他做了:

<p id="pop" value="$arrayName[$k]" onclick="popFunc(this.value)"><?php echo  $arrayName[$k]; ?></p>

什么是正確的

<p id="pop" onclick="<?php popFunc($arrayName[$k]); ?>"><?= $arrayName[$k]; ?><?= $arrayName[$k]; ?></p>

而他的功能:

function popFunc($element){

    echo "window.location = 'http://localhost/example/visiter.php?element=$element'";

}

value屬性僅存在於需要用戶輸入的元素上。 您應該使用data-*屬性將任意數據添加到其他類型的元素。 或者,您可以直接將值直接放入popfunc()參數列表中。 或者,由於該值也在該段落的文本中,因此您可以使用this.textContent ,這是我在回答中所做的。

您還應該在循環外定義popfunc() ,不需要為每個項目都重新定義它。

<?php for($k = 0; $k < $x; $k++) {?>
    <p id="pop" onclick="popFunc(this.textContent)"><?php echo  $arrayName[$k]; ?></p>
<?php }

但是,您的popFunc函數不能按書面形式工作。 它是在客戶端上運行的Javascript函數,無法設置$_SESSION類的PHP變量。 如果要在用戶單擊時在服務器上執行某些操作,則需要使用AJAX。 或者,您可以在重定向到新位置時將其作為參數傳遞。

function popFunc(element) {
    document.location.href = 'http://localhost/example/visiter.php?visitor=' + encodeURIComponent(element);
}

然后visitor.php可以通過以下方式分配給會話變量:

$_SESSION['visitor'] = $_GET['visitor'];

嘗試這個:

<div id="dialog" title="Following">
   <?php
       $x=0;
       $arrayName = array();
       $sqls = "SELECT * FROM follow WHERE member_email='$email'";
       $result = mysqli_query($conn,$sqls);
       while($row = mysqli_fetch_assoc($result)) {
           $arrayName[$x]  = $row["person_email"];
           $x=$x+1;
   } ?>
   <?php for($k = 0; $k < $x; $k++) {?>
       <p id="pop" onclick="javascript:window.open('<?php echo $arrayName[$k]; ?>', '_blank');">
       <?php echo  $arrayName[$k]; ?></p><?php } ?>
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM