RE: calling a function in the same page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is what you could do. Separating them into a few files. Also read the
http://en.wikipedia.org/wiki/Ajax_%28programming%29 to learn some more about
AJAX.

You should also learn more about Server Side Scripting so you understand
what can be done with Server Side Scripting and Client Side Scripting.


index.php:

$query would contain the SQL (or is it some other query type) you want to
execute. This is far from any security as you come if this would be SQL, as
you would output the SQL and therefore give table names etc to anyone who
views the source of the HTML. This could in the future lead to SQL
injections etc if you don't protect your self against that as well. 

You would also need to include the javascript.js in your <head> tag of the
HTML that you generate. Also you would need to download the Prototype
library and include them in <head> as well. See
http://wiki.script.aculo.us/scriptaculous/show/Prototype where you can
download the necessary files to do your AJAX calls. If you want to do it the
hard coded way you need to create an ActiveXObject object if the user have
IE or an XMLHttpRequest object if user don't have a IE compatiable browser.
I suggest that you stick with Prototype unless you need to create an really
high performance tool for this, and might need to hard code it your self.

------
echo "<br><br><a href=\"javascript:doSearch($query)\">More results from
Mysite</a>";
echo "<div id='resultsdiv'></div>";
------



javascript.js:

------
function doSearch(sql) {
	var success = function(t){
		thediv = document.getElementById("resultsdiv");
		thediv.innerHTML = t.responseText;
	}

	var failure = function(t){
		alert("Something went wrong, please try again.");
	}

	var url='ajax.php';

	pars = "query="+ query;

	var req= new Ajax.Request(url, {method: 'post', postBody:pars,
onSuccess: success, onFailure: failure});

}
------



ajax.php

------
//Set header to TEXT/HTML and also whatever enc type you want.
header("Content-type: text/html");

if(isset($_POST['mysql'])) {
	//do whatever you want with the
	//$_POST['mysql'] variable and output the results
	//the you want to be shown in the div with id resultsdiv
}
------


Best regards,
Peter Lauri


-----Original Message-----
From: Aras [mailto:manager@xxxxxxxxxx] 
Sent: Tuesday, December 26, 2006 11:50 AM
To: php-general@xxxxxxxxxxxxx
Subject: RE:  calling a function in the same page



You can not call PHP functions through a href which is used for linking web
pages.
You need to create a new file or use a switch in your current file for
search input,
with the function in it. So that you can link to that URL, not the function
itself.

You can use AJAX as well, to send commands to a php file and get the results
in xml/text,
but again you need to call Javascript there, your logic is totally wrong.


Aras Koktas
manager@xxxxxxxxxx
Business Excellence Development
Phi.dot Internet Systems


-----Original Message-----
From: Jahangir [mailto:jahan9@xxxxxxxxx]
Sent: Sunday, December 24, 2006 6:34 PM
To: php-general@xxxxxxxxxxxxx
Subject:  calling a function in the same page


I am trying to call a function from "a href" inside the same page.
this is the code:
echo "<br><br><a href=\"isearch($query)\">More results from Mysite</a>";
// calling the function isearch

function isearch($query)

{$query=urlencode($query);

$request='http://api.search.yahoo.com/WebSearchService/V1/webSearch?appid=Ja
hangir&query=' .urlencode($query). '&output=php&results=100&site=mysite.com;

$response=file_get_contents($request);

if ($response === false) {

die('Request failed');}

$phpobj=unserialize($response);

$count=$phpobj["ResultSet"]["totalResultsReturned"];

if($phpobj["ResultSet"]["totalResultsAvailable"]==0)

{echo "<br>NO RESULTS TO DISPLAY"; }

echo "<tr>"; echo "<h4 style=\"color:#FF0000\" align=\"center\">Results from
Mysite</h4>";

for($i=0;$i<$count;$i++)

{ echo '<pre>';

$no=$i+1;

$url=$phpobj["ResultSet"]["Result"]["$i"]["Url"];

echo "<h3>" ."$no. ". "<a href=\"$url\">" .
$phpobj["ResultSet"]["Result"]["$i"]["Title"] . "</a></h3>"; echo "</tr>";

echo "<tr>"; echo $phpobj["ResultSet"]["Result"]["$i"]["Summary"]; echo
"</tr>";

echo "<br>"; echo "<tr>"; echo "<b>"
.$phpobj["ResultSet"]["Result"]["$i"]["Url"] ."</b>"; echo "</tr>";

echo "<br>"; $link=$phpobj["ResultSet"]["Result"]["$i"]["DisplayUrl"];

echo "<tr>"; echo "<a href=\"$url\">$link</a>"; echo "</tr>";

echo '</pre>'; }}



whenever i try to execute this function i either get an "Object not found
error" or "Access Forbidden error".

Can someone tell me where am i going wrong here??

thanks in advance

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux