অনক্লিক দিয়ে পিএইচপি ফাংশন সম্পাদন করুন


92

আমি যখন কোনও ট্যাগ ক্লিক করা হয় কেবল তখনই পিএইচপি ফাংশনটিতে কল করার জন্য একটি সহজ সমাধান অনুসন্ধান করছি ।

পিএইচপি:

function removeday() { ... }

এইচটিএমএল:

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

আপডেট: এইচটিএমএল এবং পিএইচপি কোড একই পিএইচপি ফাইলে রয়েছে


4
এইচটিএমএল জাভাস্ক্রিপ্ট ফাংশন পরিচালনা করে যা ক্লায়েন্টের উপর চলে। পিএইচপি সার্ভারে চলে। আপনাকে এজেএক্স সম্পর্কে শিখতে হবে।
বার্মার

তবে কেন এজেএক্স? পুরো কোডটি একই পিএইচপি ফাইলে।
মাইক

4
কেন এজেএক্স? ঠিক আছে, এটি সন্ধানের জন্য, আপনি কেবল যে কোনও পিএইচপি স্ক্রিপ্ট চালাতে পারেন এবং এর সম্পাদনের কোড দেখতে পারেন। আবার - আপনি এটি করতে পারেন এমন একমাত্র উপায় অ্যাজাক্স
ইয়াং

4
পরীক্ষিত উত্তরটি বোতামটির মতো দেখতে সক্রিয় হবে যদি আপনি ব্যবহার করেন <a role="button" href="?action=removeday" class="debatebtn">Delete</a>যেখানে অ্যাকশনটি ধরা পড়ে এবং অনুরূপভাবে সরানোর দিন () ফাংশনটি চালায় if($action == 'removeday'){ removeday(); }। আমি জানি এটি দেরি হয়ে গেছে তবে আমি বুঝতে পারি যে এটি এখনও এই সমস্যাটির সাথে কাউকে সহায়তা করতে পারে। সি
সিএসএস

উত্তর:


142

প্রথমে বুঝতে পারুন যে আপনার সাথে তিনটি ভাষা এক সাথে কাজ করছে:

  • পিএইচপি: এটি কেবল সার্ভার দ্বারা চালিত হয় এবং কোনও লিঙ্কে ক্লিক করা (জিইটি) বা ফর্ম (পোষ্ট) জমা দেওয়ার মতো অনুরোধগুলির প্রতিক্রিয়া জানায়।

  • এইচটিএমএল এবং জাভাস্ক্রিপ্ট: এটি কেবল কারও ব্রাউজারে চলবে (নোডজেএস বাদে)।

আমি ধরে নিচ্ছি আপনার ফাইলটি এমন দেখাচ্ছে:

<!DOCTYPE HTML>
<html>
<?php
  function runMyFunction() {
    echo 'I just ran a php function';
  }

  if (isset($_GET['hello'])) {
    runMyFunction();
  }
?>

Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>

পিএইচপি কেবলমাত্র অনুরোধগুলিতে সাড়া দেয় (জিইটি, পোষ্ট, পুট, প্যাচ, এবং ডিলেট ডিএলটিইটি দিয়ে $ _REQUEST), আপনাকে পিএইচপি ফাংশনটি একই ফাইলে থাকা সত্ত্বেও আপনাকে এইভাবে চালাতে হবে। এটি আপনাকে একটি স্তরের সুরক্ষা দেয়, "এই ব্যবহারকারীর জন্য আমার এই স্ক্রিপ্টটি চালানো উচিত কিনা?" "

আপনি যদি পৃষ্ঠাটি রিফ্রেশ করতে না চান, আপনি অ্যাসিঙ্ক্রোনাস জাভাস্ক্রিপ্ট এবং এক্সএমএল (এজেএক্স) নামক কোনও পদ্ধতির মাধ্যমে রিফ্রেশ না করে পিএইচপি-র কাছে একটি অনুরোধ করতে পারেন।

যদিও এটি আপনি YouTube এ সন্ধান করতে পারেন। শুধু "jquery আজাক্স" অনুসন্ধান করুন

আমি লারাভেলকে নতুন কাউকে ডান থেকে শুরু করার পরামর্শ দিচ্ছি: http://laravel.com/


4
কেবল উল্লেখ করার জন্য, আমি ধরে নিচ্ছি যে আপনি পিএইচপিতে মোটামুটি নতুন আমি আমি ফ্রেমওয়ার্ক হিসাবে laravel.com সুপারিশ করতে চাই । ব্যক্তিগতভাবে আমি পুরো 'জেনারিক পিএইচপি শেখার' বাদ দিয়ে সরাসরি শক্তিশালী কাঠামোয় যেতে পছন্দ করতাম। এটি এখন আমিও ব্যবহার করি।
মাইকেল জে। ক্যালকিনস

4
মানুষ, আপনাকে অনেক ধন্যবাদ, আপনার উত্তর আমাকে এই সন্দেহের সাথে কেবল সহায়তা করে না, তবে এটি আমাকে পিএইচপি আরও অনেক ভাল বুঝতে সাহায্য করেছে! আবার আপনাকে ধন্যবাদ!
শোরগোল অনুভব করুন

ধন্যবাদ আমি এটি খুঁজছি আমি কীভাবে ওয়ার্ডপ্রেস দিয়ে এটি প্রয়োগ করতে পারি
ফায়ারফগ

4
ধন্যবাদ আপনাকে উল্লেখ করার কারণে আমি ল্যারাভেলে মনোনিবেশ করতে শুরু করব।
মোহাম্মদ আবুলনাসর

4
If you don't want to refresh the page, you can make a request to PHP without refreshing via a method called Asynchronous JavaScript and XML (AJAX).ঠিক আছে, তিনি onclickএই প্রশ্নের মধ্যে অন্তর্ভুক্ত করেছিলেন, সুতরাং এটি স্পষ্টভাবে স্পষ্ট যে লক্ষ্যটি রিফ্রেশ না করে কোনও ক্রিয়া করা। ¬_¬
Synetech

39

জাভাস্ক্রিপ্টে, একটি অজ্যাক্স ফাংশন করুন,

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'your_url/ajax.php',
           data:{action:'call_this'},
           success:function(html) {
             alert(html);
           }

      });
 }

তারপরে এইচটিএমএল থেকে কল করুন,

<a href="" onclick="myAjax()" class="deletebtn">Delete</a>

এবং আপনার অজ্যাক্স.এফপি এ,

if($_POST['action'] == 'call_this') {
  // call removeday() here
}

কেবল স্পষ্ট করে typeবলার জন্য: ১.৯.০ এর আগে জিক্যুরিতে methodব্যবহার করা উচিত , যখন একটি উপনাম এবং নতুন সংস্করণে ব্যবহার করা উচিত।
আলেজান্দ্রো নাভা

4
ভ্যানিলা জাভাস্ক্রিপ্টে সরবরাহ করা একই সমাধানটি প্রাথমিকভাবে আরও ভালভাবে সহায়তা করে। আমি এটি জাভাস্ক্রিপ্টের আরও অভিজ্ঞ ব্যবহারকারী হিসাবে বলি যিনি একসময় পুরোপুরি শিক্ষানবিস কিন্তু পিএইচপি-তে দক্ষ ছিলেন।
কেন ইঙ্গ্রাম

12

এটি করা যেতে পারে এবং বরং পিএইচপি সহ এটি করা যেতে পারে যদি এটি আপনার বোতাম হয়

<input type="submit" name="submit>

এবং এটি আপনার পিএইচপি কোড

if(isset($_POST["submit"])) { php code here }

সাবমিট গেটের পোস্ট করার সময় কোডটির কল হবে যা বোতামটি ক্লিক করার পরে ঘটে।


11

আপনাকে এজেএক্সের মাধ্যমে এটি করতে হবে । আমি আপনাকে পুনরায় সুপারিশ করছি আপনি আপনার জন্য এটিকে আরও সহজ করতে jQuery ব্যবহার করুন ....

$("#idOfElement").on('click', function(){

    $.ajax({
       url: 'pathToPhpFile.php',
       dataType: 'json',
       success: function(data){
            //data returned from php
       }
    });
)};

http://api.jquery.com/jQuery.ajax/


4
এজেএক্স কেন? এটি একই পিএইচপি ফাইল হবে (আমি আমার প্রশ্ন আপডেট করেছি)
মাইক

4
@ বারমার যা বুঝিয়েছেন, সে কারণে এটি কাজ করে না। আপনি পিএইচপি একটি পৃথক ফাইলে রাখতে চান, তারপরে আপনার এজেএক্স অনুরোধে সেই ফাইলটি উল্লেখ করুন।
এও

4
"Url:" প্যারামিটারটি বাহ্যিক পিএইচপি ফাইলের উল্লেখ করে, আমি কীভাবে একই ফাইলে পিএইচপি ফাংশনটি উল্লেখ করতে পারি?
জো দো

4
@ জোডো আপনি পারবেন না, ফাংশনটি একটি বাহ্যিক ফাইলে রাখুন
এও

2

পৃষ্ঠা পুনরায় লোড ছাড়াই সমাধান

<?php
  function removeday() { echo 'Day removed'; }

  if (isset($_GET['remove'])) { return removeday(); }
?>


<!DOCTYPE html><html><title>Days</title><body>

  <a href="" onclick="removeday(event)" class="deletebtn">Delete</a>

  <script>
  async function removeday(e) {
    e.preventDefault(); 
    document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text();
  }
  </script>

</body></html>

1

এরকম কিছু করার চেষ্টা করুন:

<!--Include jQuery-->
<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script>

<a href="#" onclick="doSomething();">Click Me!</a>

1

এখানে এজেএক্সের সাথে বিকল্প রয়েছে তবে কোনও জিকুয়েরি নেই, কেবল নিয়মিত জাভাস্ক্রিপ্ট:

এটিকে প্রথম / প্রধান পিএইচপি পৃষ্ঠায় যুক্ত করুন, যেখানে আপনি ক্রিয়াটি কল করতে চান, তবে এটি একটি সম্ভাব্য aট্যাগ (হাইপারলিঙ্ক) থেকে কোনও buttonউপাদানে পরিবর্তন করুন, সুতরাং এটি কোনও বট বা দূষিত অ্যাপ্লিকেশন (বা যাই হোক না কেন) দ্বারা ক্লিক হয় না।

<head>
<script>
  // function invoking ajax with pure javascript, no jquery required.
  function myFunction(value_myfunction) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        document.getElementById("results").innerHTML += this.responseText; 
        // note '+=', adds result to the existing paragraph, remove the '+' to replace.
      }
    };
    xmlhttp.open("GET", "ajax-php-page.php?sendValue=" + value_myfunction, true);
    xmlhttp.send();
  }

</script>
</head>

<body>

  <?php $sendingValue = "thevalue"; // value to send to ajax php page. ?> 

  <!-- using button instead of hyperlink (a) -->
  <button type="button" onclick="value_myfunction('<?php echo $sendingValue; ?>');">Click to send value</button>

  <h4>Responses from ajax-php-page.php:</h4>
  <p id="results"></p> <!-- the ajax javascript enters returned GET values here -->

</body>

যখন buttonক্লিক করা হয়, onclickপাঠাতে head's জাভাস্ক্রিপ্ট ফাংশন ব্যবহার $sendingValueএই এক সামনে অনেক উদাহরণ মত আরেকটি পিএইচপি-পৃষ্ঠায় Ajax মাধ্যমে। অন্য পৃষ্ঠাটি, ajax-php-page.phpজিইটি মান পরীক্ষা করে এবং এর সাথে ফিরে আসে print_r:

<?php

  $incoming = $_GET['sendValue'];

  if( isset( $incoming ) ) {
    print_r("ajax-php-page.php recieved this: " . "$incoming" . "<br>");
  } else {
    print_r("The request didn´t pass correctly through the GET...");
  }

?>

এর পরে দেওয়া প্রতিক্রিয়াটি print_rআবার ফিরে আসে এবং এর সাথে প্রদর্শিত হয়

document.getElementById("results").innerHTML += this.responseText;

+=মান এবং বিদ্যমান HTML উপাদানগুলি যোগ সরানোর +শুধু আপডেট এবং HTML বিদ্যমান বিষয়বস্তু প্রতিস্থাপন pউপাদান "results"


0

এটি সবচেয়ে সহজতম উপায়। যদি ফর্মটি পোস্টের মাধ্যমে পোস্ট করা হয় তবে পিএইচপি ফাংশন করুন। মনে রাখবেন যে আপনি যদি অ্যাসিঙ্ক্রোনালি ফাংশন সম্পাদন করতে চান (পৃষ্ঠাটি পুনরায় লোড করার প্রয়োজন ছাড়াই), তবে আপনার এজেএক্স দরকার হবে।

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>

Note that if you want to perform function asynchronously (without the need to reload the page), then you'll need AJAX.ওয়েল দি onclickইঙ্গিত করে যে ঠিক সে যা চায় ¬_¬
Synetech

-3

এটি চেষ্টা করুন এটি ভাল কাজ করবে।

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>

<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }

?>

<button onclick="echoHello()">Say Hello</button>

4
এটি কাজ করে না (এমনকি আপনি এটি পরিষ্কার করে দিলেও) তবে এটি কাজ করতে পারে না । পিএইচপি কোড লোড করা হলে প্রাক প্রক্রিয়াজাত হয়; এটি রানটাইমে চালানো হয় না।
Synetech

হয় আপনি প্রশ্নটি পড়েননি বা আপনি আপনার কোড পরীক্ষা করেন নি কারণ এটি কাজ করবে না।
মিঃ পিজ্জাগুই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.