Cómo llamar a una función PHP que a partir de un HTML, haga clic con el botón?

Alguien me puede ayudar con algo de javascript que me permita llamar a una función cuando hago clic en un botón?

Sé que ha sido publicado antes, pero cada respuesta que he visto es demasiado vago y he estado en esto durante 8 horas ahora 🙁

Por favor, tenga en cuenta que yo soy un javascript para principiantes.

<html>
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <?php include 'connect.php'; ?>
    <table border cellpadding=5>
        <div>
            <tr>
                <th>Report</th>
                <th></th>
            </tr>
            <tr>
                <td>Students with highest scores</td>
                <td>
                    <button type= button>Generate report</button>
                </td>

        </div>
    </table>
    <?php   

        function highestScore()
        {
            $data = mysql_query("SELECT t.Test_name, s.Student_firstname, s.Student_surname, sc.Result
                                 FROM Tests t 
                                 JOIN Scores sc ON t.id_Tests = sc.Tests_id_Tests
                                 JOIN Students s ON sc.Students_id_Students = s.id_Students
                                 WHERE t.id_Tests = 1
                                 ORDER BY sc.Result DESC");
                    if(!$data)
                    {
                        die("Invalid Query: " . mysql_error());
                    }
            Print"<table border cellpadding=5>";
            while($info = mysql_fetch_array($data))
            {
            Print"<tr>";
            Print "<th>Test:</th> <td>" . $info['Test_name'] . "</td> ";
            Print "<th>First Name:</th> <td>" . $info['Student_firstname'] . "</td> ";
            Print "<th>Surname:</th> <td>" . $info['Student_surname'] . "</td> ";
            Print "<th>Result:</th> <td>" . $info['Result'] . "</td> ";
            }
            Print "</table>";
        }

    ?>
</body>

Quiero usar el de «Generar informe» botón que he hecho, para ejecutar el «highestScore» de la función.

La función crea una tabla de valores a partir de una base de datos mySQL.

Eventualmente será más botones que traen las diferentes tablas.

Cualquier ayuda es muy apreciada.

  • Usted necesitará comunicarse con el servidor utilizando AJAX.
  • El código PHP es ejecutado en el servidor y el código javascript en el navegador. NO se PUEDE ejecutar php desde javascript. Pero se puede comunicar a través de la llamada AJAX.
  • Si estás empezando yo no iría directamente a AJAX. Aprender acerca de cómo los navegadores interactuar con los servidores a través de Solicitud y de Respuesta. Luego de aprender sobre el HTML <form> etiqueta y su’ post y get variaciones y cómo trabajar con PHP. Una vez que usted tiene un poco más de experiencia con PHP en el servidor y javascript en el cliente, y luego mirar las tecnologías como AJAX.

5 Kommentare

  1. 2

    HTML y Javascript se ejecutan en el navegador, mientras que PHP se ejecuta en el servidor. Usted tendrá que hacer otra llamada de servidor, ya sea mediante el uso de AJAX o actualizar la página. Aquí está cómo hacerlo con AJAX sin actualizar la página. ($.ajax docs)

    1. Crear un nuevo PHP página: query.php con el siguiente código:

      <?php   
      
              $data = mysql_query("SELECT t.Test_name, s.Student_firstname, s.Student_surname, sc.Result
                                   FROM Tests t 
                                   JOIN Scores sc ON t.id_Tests = sc.Tests_id_Tests
                                   JOIN Students s ON sc.Students_id_Students = s.id_Students
                                   WHERE t.id_Tests = 1
                                   ORDER BY sc.Result DESC");
                      if(!$data)
                      {
                          die("Invalid Query: " . mysql_error());
                      }
              Print"<table border cellpadding=5>";
              while($info = mysql_fetch_array($data))
              {
              Print"<tr>";
              Print "<th>Test:</th> <td>" . $info['Test_name'] . "</td> ";
              Print "<th>First Name:</th> <td>" . $info['Student_firstname'] . "</td> ";
              Print "<th>Surname:</th> <td>" . $info['Student_surname'] . "</td> ";
              Print "<th>Result:</th> <td>" . $info['Result'] . "</td> ";
              }
              Print "</table>";
      
      ?>
    2. Utilizar el evento click del botón para ejecutar una petición ajax: (Agregue la siguiente secuencia de comandos para su HTML página)

      $(function(){
          $('button').click(function(){
              $.ajax({
                  url:'query.php',
                  success:function(response){ alert(response); }
              }); //this will alert the code generated in example.php
          });
      });
  2. 1

    Lugar de utilizar el botón, utilice un formulario con un botón de enviar. Enviar una solicitud por correo, y detectar que en PHP utilizando isset($_POST[‘informe’]) y, a continuación, mostrar el informe.

    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php include 'connect.php'; ?>
        <table border cellpadding=5>
            <div>
                <tr>
                    <th>Report</th>
                    <th></th>
                </tr>
                <tr>
                    <td>Students with highest scores</td>
                    <td>
                <form method="POST">
                                <input type="submit" name="report">Generate report</button>
                </form>
                    </td>
    
            </div>
        </table>
        <?php   
    
            function highestScore()
            {
                $data = mysql_query("SELECT t.Test_name, s.Student_firstname, s.Student_surname, sc.Result
                                     FROM Tests t 
                                     JOIN Scores sc ON t.id_Tests = sc.Tests_id_Tests
                                     JOIN Students s ON sc.Students_id_Students = s.id_Students
                                     WHERE t.id_Tests = 1
                                     ORDER BY sc.Result DESC");
                        if(!$data)
                        {
                            die("Invalid Query: " . mysql_error());
                        }
                Print"<table border cellpadding=5>";
                while($info = mysql_fetch_array($data))
                {
                Print"<tr>";
                Print "<th>Test:</th> <td>" . $info['Test_name'] . "</td> ";
                Print "<th>First Name:</th> <td>" . $info['Student_firstname'] . "</td> ";
                Print "<th>Surname:</th> <td>" . $info['Student_surname'] . "</td> ";
                Print "<th>Result:</th> <td>" . $info['Result'] . "</td> ";
                }
                Print "</table>";
            }
    
        if (isset($_POST['report'])) {
            highestScore();
        }
    
        ?>
    </body>
  3. 1

    Un botón raw no tiene sentido en HTML puro. Es hace nada – excepto el aspecto de un botón.

    Puede utilizar en conjunción con JavaScript:

    <form action="input_button.htm">
    
        <textarea cols="20" rows="4" name="field1"></textarea>
    
        <input type="button" name="Text 1" value="Add some new Text"
          onclick="this.form. field1.value='Some new Text'">
    
    </form>

    Este botón ejecuta un JavaScript a través de un clic sobre ella – y reemplaza a la textarea nombre field1.

  4. 0

    De manera que usted desea que esta todo en una sola página, de manera que la primera cosa que usted necesita es form etiqueta html envuelto alrededor del botón, he llamado a la mina de «enviar» y establecer la acción a la página en sí <?php echo $_SERVER['PHP_SELF']; ?>. Cuando se pulsa el botón preforma su código php

    Script

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <?php include 'connect.php'; ?>
    <table border cellpadding=5>
        <div>
            <tr>
                <th>Report</th>
                <th></th>
            </tr>
            <tr>
                <td>Students with highest scores</td>
                <td>
                <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <!-- Calls for the PHP script on the page-->
                    <button type= button>Generate report</button>
                    </form>
                </td>
    
        </div>
    </table>
    <?php  
        //Script that is called
    
        if(isset($_POST['submit'])){ //The ID of the form we used is 'submit' so when that is clicked it will execute this
        function highestScore()
        {
            $data = mysql_query("SELECT t.Test_name, s.Student_firstname, s.Student_surname, sc.Result
                                 FROM Tests t 
                                 JOIN Scores sc ON t.id_Tests = sc.Tests_id_Tests
                                 JOIN Students s ON sc.Students_id_Students = s.id_Students
                                 WHERE t.id_Tests = 1
                                 ORDER BY sc.Result DESC");
                    if(!$data)
                    {
                        die("Invalid Query: " . mysql_error());
                    }
            Print"<table border cellpadding=5>";
            while($info = mysql_fetch_array($data))
            {
            Print"<tr>";
            Print "<th>Test:</th> <td>" . $info['Test_name'] . "</td> ";
            Print "<th>First Name:</th> <td>" . $info['Student_firstname'] . "</td> ";
            Print "<th>Surname:</th> <td>" . $info['Student_surname'] . "</td> ";
            Print "<th>Result:</th> <td>" . $info['Result'] . "</td> ";
            }
            Print "</table>";
        }
    
    
        highestScore(); //executes your function you created
        }
    
    ?>
    </body>
  5. 0

    HTML y JavaScript se ejecuta en el navegador, mientras que PHP se ejecuta en el servidor. Usted tiene que escribir Ajax o java-script.En java-script usted puede llamar a la página php y hacer sus cosas en la página.Y sería el mejor enfoque.Usted puede pasar la variable también.He puesto un ejemplo aquí.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Test</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
    function removeItem(oButton) 
    {
    var hello = "hello";
    var world = "world";
    window.location.href = "trytest.php?w1=" + hello + "&w2=" + world;//Your page location
    }       
    </script>
    </head>
    <body>
    <form>
    <h2>This is the test </h2>
    <button type="show" onclick="removeItem(this); return false;">Test</button>
    </body>
    </html> 

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea