[英]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不太了解,因此我無法為您提供幫助,但是您可以搜索jQuery和JavaScript教程。
由於服務器端, 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.