Call a PHP function after onClick HTML event

前端 未结 4 1456
迷失自我
迷失自我 2021-02-08 15:16

Purpose: Call a PHP function to read data from a file and rewrite it. I used PHP only for this purpose - FileIO - and I\'m new to PHP.

Solution

相关标签:
4条回答
  • 2021-02-08 15:45

    You don't need javascript for doing so. Just delete the onClick and write the php Admin.php file like this:

    <!-- HTML STARTS-->
    <?php
    //If all the required fields are filled
    if (!empty($GET_['fullname'])&&!empty($GET_['email'])&&!empty($GET_['name']))
    {
    function addNewContact()
        {
        $new = '{';
        $new .= '"fullname":"' . $_GET['fullname'] . '",';
        $new .= '"email":"' . $_GET['email'] . '",';
        $new .= '"phone":"' . $_GET['phone'] . '",';
        $new .= '}';
        return $new;
        }
    
    function saveContact()
        {
        $datafile = fopen ("data/data.json", "a+");
        if(!$datafile){
            echo "<script>alert('Data not existed!')</script>";
            } 
        else{
            $contact_list = $contact_list . addNewContact();
            file_put_contents("data/data.json", $contact_list);
            }
        fclose($datafile);
        }
    
    // Call the function saveContact()
    saveContact();
    echo "Thank you for joining us";
    }
    else //If the form is not submited or not all the required fields are filled
    
    { ?>
    
    <form>
        <fieldset>
            <legend>Add New Contact</legend>
            <input type="text" name="fullname" placeholder="First name and last name" required /> <br />
            <input type="email" name="email" placeholder="etc@company.com" required /> <br />
            <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br />
            <input type="submit" name="submit" class="button" value="Add Contact"/>
            <input type="button" name="cancel" class="button" value="Reset" />
        </fieldset>
    </form>
    <?php }
    ?>
    <!-- HTML ENDS -->
    

    Thought I don't like the PHP bit. Do you REALLY want to create a file for contacts? It'd be MUCH better to use a mysql database. Also, adding some breaks to that file would be nice too...

    Other thought, IE doesn't support placeholder.

    0 讨论(0)
  • 2021-02-08 15:58
    <div id="sample"></div>   
     <form>
            <fieldset>
                <legend>Add New Contact</legend>
                <input type="text" name="fullname" placeholder="First name and last name" required /> <br />
                <input type="email" name="email" placeholder="etc@company.com" required /> <br />
                <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br />
                <input type="submit" name="submit" id= "submitButton" class="button" value="Add Contact" onClick="" />
                <input type="button" name="cancel" class="button" value="Reset" />
            </fieldset>
        </form>
    
    <script>
    
        $(document).ready(function(){
             $("#submitButton").click(function(){
                $("#sample").load(filenameofyourfunction?the the variable you need);
             });
        });
    
    </script>
    
    0 讨论(0)
  • 2021-02-08 16:03
     cell1.innerHTML="<?php echo $customerDESC; ?>";
     cell2.innerHTML="<?php echo $comm; ?>";
     cell3.innerHTML="<?php echo $expressFEE; ?>";
     cell4.innerHTML="<?php echo $totao_unit_price; ?>";
    

    it is working like a charm, the javascript is inside a php while loop

    0 讨论(0)
  • 2021-02-08 16:07

    There are two ways. the first is to completely refresh the page using typical form submission

    //your_page.php
    
    <?php 
    
    $saveSuccess = null;
    $saveMessage = null;
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
      // if form has been posted process data
    
      // you dont need the addContact function you jsut need to put it in a new array
      // and it doesnt make sense in this context so jsut do it here
      // then used json_decode and json_decode to read/save your json in
      // saveContact()
      $data = array(
        'fullname' = $_POST['fullname'],
        'email' => $_POST['email'],
        'phone' => $_POST['phone']
      );
    
      // always return true if you save the contact data ok or false if it fails
      if(($saveSuccess = saveContact($data)) {
         $saveMessage = 'Your submission has been saved!';     
      } else {
         $saveMessage = 'There was a problem saving your submission.';
      } 
    }
    ?>
    
    <!-- your other html -->
    
    <?php if($saveSuccess !== null): ?>
       <p class="flash_message"><?php echo $saveMessage ?></p>
    <?php endif; ?>
    
    <form action="your_page.php" method="post">
        <fieldset>
            <legend>Add New Contact</legend>
            <input type="text" name="fullname" placeholder="First name and last name" required /> <br />
            <input type="email" name="email" placeholder="etc@company.com" required /> <br />
            <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br />
            <input type="submit" name="submit" class="button" value="Add Contact" onClick="" />
            <input type="button" name="cancel" class="button" value="Reset" />
        </fieldset>
    </form>
    
    <!-- the rest of your HTML -->
    

    The second way would be to use AJAX. to do that youll want to completely seprate the form processing into a separate file:

    // process.php

    $response = array();
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
      // if form has been posted process data
    
      // you dont need the addContact function you jsut need to put it in a new array
      // and it doesnt make sense in this context so jsut do it here
      // then used json_decode and json_decode to read/save your json in
      // saveContact()
      $data = array(
        'fullname' => $_POST['fullname'],
        'email' => $_POST['email'],
        'phone' => $_POST['phone']
      );
    
      // always return true if you save the contact data ok or false if it fails
      $response['status'] = saveContact($data) ? 'success' : 'error';
      $response['message'] = $response['status']
          ? 'Your submission has been saved!'
          : 'There was a problem saving your submission.';
    
      header('Content-type: application/json');
      echo json_encode($response);
      exit;
    }
    ?>
    

    And then in your html/js

    <form id="add_contact" action="process.php" method="post">
            <fieldset>
                <legend>Add New Contact</legend>
                <input type="text" name="fullname" placeholder="First name and last name" required /> <br />
                <input type="email" name="email" placeholder="etc@company.com" required /> <br />
                <input type="text" name="phone" placeholder="Personal phone number: mobile, home phone etc." required /> <br />
                <input id="add_contact_submit" type="submit" name="submit" class="button" value="Add Contact" onClick="" />
                <input type="button" name="cancel" class="button" value="Reset" />
            </fieldset>
        </form>
        <script type="text/javascript">
         $(function(){
             $('#add_contact_submit').click(function(e){
                e.preventDefault();  
                $form = $(this).closest('form');
    
                // if you need to then wrap this ajax call in conditional logic
    
                $.ajax({
                  url: $form.attr('action'),
                  type: $form.attr('method'),
                  dataType: 'json',
                  success: function(responseJson) {
                     $form.before("<p>"+responseJson.message+"</p>");
                  },
                  error: function() {
                     $form.before("<p>There was an error processing your request.</p>");
                  }
                });
             });         
         });
        </script>
    
    0 讨论(0)
提交回复
热议问题