web-dev-qa-db-fra.com

Exécuter un article externe PHP Article de File From Joomla

J'ai un fichier php qui fera écho aux résultats à la fin du fichier. Je veux qu'un événement onclick déclenche du Javascript qui appellera ce fichier php et affichera les résultats à l'écran. Mon javascript ressemble à ceci, mais je reçois une erreur 500 et je ne sais pas pourquoi.

Qu'est-ce qui est incorrect dans ma syntaxe? Ou quelle est la bonne façon de faire cela dans Joomla 3.5.

<form id="HomePage" method="post">
<div style="padding-top: 10px;"><input type="submit" value="Submit" id="ajaxButton" /></div>
<div style="padding-top: 10px;">&nbsp;</div>
</div>
<script type="text/javascript">
(function() {
  var httpRequest;
  document.getElementById("ajaxButton").onclick = function() { makeRequest('Test.php'); };

  function makeRequest(url) {
    httpRequest = new XMLHttpRequest();

    if (!httpRequest) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', url);
    httpRequest.send();
  }

  function alertContents() {
    if (httpRequest.readyState === XMLHttpRequest.DONE) {
      if (httpRequest.status === 200) {
        alert(httpRequest.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }
})();
</script>
</form>

EDIT
Ceci est le contenu de mon Test.php cela semble-t-il incorrect? Si j'ajoute ceci directement à un article, il retourne le résultat souhaité, mais je ne peux pas, pour une raison quelconque, obtenir la syntaxe correcte pour l'appeler à partir d'un article séparé.

<?php
    $option = array(); 

    $option['driver']   = 'mssql';
    $option['Host']     = 'Host';
    $option['user']     = 'user';       
    $option['password'] = 'password';   
    $option['database'] = 'database';     
    $option['prefix']   = '';            

    $db = JDatabase::getInstance( $option );
    $result = $db->getQuery(true);
    $result->select($db->quoteName(array('trackandfieldresults')));
    $result->from($db->quoteName('[TrackData]')); 
    $db->setQuery($result); 
    $row = $db->loadRowList();
    echo $row['0']
?>

EDIT
Mis à jour PHP Fichier

<?php

$serverName = "ServerName"; 
$uid = "sqlusername";   
$pwd = "sqlpassword";  
$databaseName = "DBName"; 

$connectionInfo = array( "UID"=>$uid,                            
                         "PWD"=>$pwd,                            
                         "Database"=>$databaseName); 

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>
  1. Je viens de coller votre code dans un article de la page d'accueil d'un site joomla 3.6 et de placer un fichier Test.php à la racine du fichier trop, ce qui a bien fonctionné. Dans mon esprit, si vous faites exactement cela, alors il y a un problème avec votre fichier php car dans cette requête, Joomla n'est pas vraiment impliqué (note pour 500 erreurs, la première chose que je regarderais serait les permissions du fichier).

  2. Cette approche convient si votre seul développeur sur le site et votre php n'interagissent pas du tout avec Joomla. Joomla fournit un moyen simple de faire des requêtes ajax avec des modules en utilisant l'interface com_ajax: doc is here . Cela serait plus ordonné, plus portable, moins sujet à la casse accidentelle et vous donnerait accès à l'application Joomla. D'autre part, l'application Joomla doit se charger complètement pour que vous perdiez quelques microsecondes.

1
jamesgarrett