PDA

View Full Version : چطوری توی echo تابع صدا بزنم



snbb000
پنج شنبه 23 آذر 1391, 15:29 عصر
سلام
میخوام کاربر که کلیک میکنه اون تابع edit اجرا بشه چیکار باید کنم؟
ممنون

کد


<?php
session_start();

if($_SESSION['setsess'] == 1)
admin();
else
exit;

function admin()
{

echo "<p onClick='edit()' style='cursor:pointer'>Edit Home Page </p>";

}

function edit()
{

echo "salam";
}
?>

Sepehr_B
پنج شنبه 23 آذر 1391, 15:34 عصر
اون تابعی که توی onClick قرار میدین باید تابعی باشه توی اسکریپت صفحه . از جاوا اسکریپت استفاده کنید.

<script type="text/javascript">
function edit()
{
document.write("salam");
}
</script>
<p onClick='edit()' style='cursor:pointer'>Edit Home Page </p>

mamali-mohammad
پنج شنبه 23 آذر 1391, 15:35 عصر
onclick که نوشتید برای js هست نه php

snbb000
پنج شنبه 23 آذر 1391, 18:39 عصر
اگر بخوام تابع php رو صدا بزنه چطوری باید بنویسم؟
اصلا میشه چنین کاری کرد؟
ممنون

siavashsay
پنج شنبه 23 آذر 1391, 19:11 عصر
دوست عزیز یک مقدار موضوع رو پیچیده کردید !
شما یا باید تابعتون رو با JS بنویسید یا PHP !
حالا اگر مد نظرتون این هست که موقع کلیک کردن عملیاتی اجرا بشه پس شما باید با JS عملیات رو انجام بدید ! طریق فراخوانی یک تابع هم که به راحتی با echo قابل اجراس !


echo "<scrpit>alert('Hellow World');<script> ";

اما اگر میخواید با PHP تابعی رو فراخوانی کنید انتظار اینکه عملیات بلافاصله بعد از کلیک کردن اجرا بشه رو نداشته باشید ! چون شما حداقل نیاز به refresh کردن صفحه دارید تا اطلاعات توسط php فراخوانی بشه !
اما اگر خواستتون رو واضح تر بگید شاید بشه کمکی کرد :)

Sepehr_B
پنج شنبه 23 آذر 1391, 20:39 عصر
به طور مستقیم نمیشه بعد از لود شدن صفحه ، HTML رو به سرور وصل کنید و با رویداد های صفحه ، کد های PHP رو اجرا کنید ؛ می تونید از Ajax استفاده کنید.

snbb000
شنبه 25 آذر 1391, 21:49 عصر
ببینید میخوام چندتا لینک بزارم هر کدوم یک کار انجام بده مثل مثلا ادیت صفحه یا همچین چیزی
میخوام با هر کلیک یک تابع خاض اجرا میشه امکانش هست؟
ممنون

siavashsay
شنبه 25 آذر 1391, 22:01 عصر
دوست عزیز ! به این کد توجه کنید ! متوجه میشید !



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function chPass(){
// Do Something
}
function upData(){
// Do Something
}
function getNews(){
//Do Something
}
</script>
<title>Untitled Document</title>
</head>

<body>
<a href="#" onclick="chPass();">Change Passowrd</a> | <a href="#" onclick="upData();">Update Data</a> | <a href="#" onclick="getNews();">Get News</a>
</body>
</html>

snbb000
سه شنبه 28 آذر 1391, 17:50 عصر
همین کارو میخوام با php کنم همه ی اینا javascript هست

siavashsay
سه شنبه 28 آذر 1391, 18:18 عصر
اصلا متوجه منظورتون نمیشم !
به هرحال شما وقتی روی یک لینک کلیک میکنید و میخواید که تابعی صدا زده شه - تنها حالتی که بعد از کلیک کرد اون تابع بدون refresh شدن مجدد صفحه اجرا شه اینه که شما با جاوا اینکارو بکنید !
نمیدونم والله دیگه منظورتون چیه !
حداقل یک نمونه کدی - یک سناریو ای - یک مثالی - یک چیزی بگید که بشه متوجه شد چی میخواید !

$ M 3 H R D A D $
سه شنبه 28 آذر 1391, 18:26 عصر
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function _post($obj){
// Do Something
}
</script>
<script language="javascript">
function post(dictionary, url, method) {
method = method || "post"; // post (set to default) or get

// Create the form object
var form = document.createElement("form");
form.setAttribute("method", method);
form.setAttribute("action", url);

// For each key-value pair
for (key in dictionary) {
//alert('key: ' + key + ', value:' + dictionary[key]); // debug
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden"); // 'hidden' is the less annoying html data control
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", dictionary[key]);
form.appendChild(hiddenField); // append the newly created control to the form
}

document.body.appendChild(form); // inject the form object into the body section
form.submit();
}
<title>Untitled Document</title>
</head>

<body>

</script>
<a href="#" onclick="chPass('password');">Change Passowrd</a> | <a href="#" onclick="chPass('uploadData');">Update Data</a> | <a href="#" onclick="chPass('getNews');">Get News</a>
</body>
</html>

دوستان روش های متفاوت گفتن
شما یک تابع داشته باش که به صورت پویا بهش مقدار بده و با شرط سوئیچ کیس انواع داده آماده ارسال کن به سرور یعنی شما قبل اینکه فرم و پست کنی میتونی اجزا فرم و تغییرات بدی

یعنی تمامی لینک هاتو بزار تو فرم
بعد نام دکمه سابمیت و با توجه به اینکه با تابع میفمی کدوم لینک کلیک شده اسم دکمه قابمیت و عوض کن و فرم و ارسال کن
ازون ورم تو php بیا :

<?php
if(isset($_POST['btnlink1']))
{
edit_function();
}
elseif(isset($_POST['btnlink2']))
{
edit2_function();
}
elsemor...


?>

MMSHFE
سه شنبه 28 آذر 1391, 21:15 عصر
دوستان چرا اینقدر مسئله رو پیچیده میکنید؟ دوست عزیز میتونید به راحتی هدفی که دارین رو با AJAX بدست بیارین (اجرای کدهای PHP با استفاده از رویدادهای سمت کلاینت). مثال:
این کد رو توی فایل functions.php قرار بدین:


<?php
if(isset($_GET['action'])) {
switch(strtolower($_GET['action'])) {
case 'test':
$value = isset($_GET['value']) ? $value : '';
test($value);
break;
case 'clock':
clock();
break;
}
}

function test($value) {
echo 'Hello ' . $value . '<br/>' . PHP_EOL;
}

function clock() {
date_default_timezone_set('Asia/Tehran');
echo date('H:i:s') . '<br/>' . PHP_EOL;
}
?>

حالا فایل فشرده jQuery رو از اینجا (http://code.jquery.com/jquery-1.8.3.min.js) دانلود کنید و با نام jqmin.js در کنار فایلتون ذخیره کنید. در مرحله آخر این کد رو توی صفحه وبتون بنویسید:


<!doctype html>
<html>
<head>
<title>AJAX Demo</title>
<meta charset="utf-8"/>
<script src="jqmin.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#clear").click(function() {
$("#test").html("&nbsp;");
});
$("#hello").click(function() {
$.ajax({
type: "get",
url: "functions.php",
data: "action=test&value="+$("#name").val(),
success: function(data) {
$("#test").html(data);
}
});
});
$("#time").click(function() {
$.ajax({
type: "get",
url: "functions.php",
data: "action=clock",
success: function(data) {
$("#clock").html(data);
}
});
});
});
</script>
</head>
<body>
<input id="name" type="text"/>
<input id="hello" type="button" value="Say Hello"/>
<input id="clear" type="button" value="Clear"/>
<div id="test">&nbsp;</div>
<input id="time" type="button" value="Display Server Time"/>
<div id="clock">&nbsp;</div>
</body>
</html>
توضیح: کد فوق با jQuery کار میکنه که باعث میشه کد جاوا اسکریپت شما تمیزتر و کوتاهتر بشه و به درستی توی همه مرورگرها کار کنه. اگه جایی از کار رو مشکل داشتین، بفرمایید تا بیشتر راهنمایی کنم.