Calling PHP function after jquery code - php

Dear Firends I have large number of forms on a single web page all of them calls a single PHP function. However what I want is that the forms should call a jquery function and if there is a need then jquery should let it call the PHP function.
I do not want to use Ajax just want to create a PHP function call if the matter can not be solved by jquery.
Each of the form is associated with some data. how ever all the data that is displayed on the page is not available all the time. So what I want is
if (data == available) { call PHP}
elseif (data != available) { jquery alert('sory bro');}
if data can not be seen now just use jquery to say sorry (no need to check from server). When a page is loaded we know which all pieces of data can not bee seen and are given in different color.
The forms are generated using a PHP loop with each form showing different data but of same type (each form is assocaited with a sort of Article).
All the questions that I have seen are about Ajax. Where as my current PHP code is working fine. all I want it that before making a trip to server if the data is not available the jquery shoould say so. We already know which data is not avaiable so far.
I hope I have explained it
Thanks a lot
**I think I have not made my point clear.. When the page is loaded is already know which data is not available for display and it is marked in seperate color and the div has different arrtibute...*is there some way so that I do not call PHP function for those forms?

PHP executes on the server side. Javascript (jQuery) executes on the client-side. So PHP is completely done executing before Javascript starts executing.
That's why everyone is saying you need to use AJAX. AJAX is a way to make a call back to the server in order to execute PHP code. PHP code only executes on the server. So in order to execute PHP, you have to make a call back to the server.

According to your logic, the data is present on the server.
If you want to know if the data is available or not then you have to contact the server right.
If that's the case how can it be solved without sending an ajax request..
You need to make the request as jQuery is a client side code and cannot contact the server directly.. You need the server side script to execute it which is PHP in your case

The easiest solution:
if (data == available) { $("form").trigger('submit') }
elseif (data != available) { jquery alert('sory bro');}
Obviously you need to adapt the selector according to your specific form / requirements.
Just make sure your form does not get submitted accidentally when you press submit by adding something like event.preventDefault(); in your function.

Related

How to design a script that will use many user inputs from another page using AJAX & PHP?

In a nutshell.... what i want to do is a install script for my website... but i want everything to be done in 1 page which will connect to another php file that will have all the server side processing code. In order to do that i use JQuery, Ajax & PHP...
Now my question lies in what are the best practices in order to do that. How do I make my server side PHP script to take multiple user inputs that will happen throughout a lengthy installation processes?
I was thinking on using switch statements that will trigger classes & functions and like that being able to access multiple processes (Classes and functions) that will be stored in the same file?... or people normally use other things?? never done this before and couldnt find a straight forward tutorial for it on how is best to design it.
I was thinking on maybe being able to access classes through AJAX in php but that doesn't seem to be possible.... can i trigger functions from AJAX in php?
I really appreciate the help in how normally this is approached
thx
It would be too lengthy to define the whole process in SO in detail. But the basic idea is:
User fills in form clicks NEXT button.
You get all the form values (in JavaScript), post it to a PHP page using AJAX
The PHP page gives you back a flag (SUCCESS/ERROR) [In the background, if it is success, PHP has persisted the data into a database]
If JavaScript receives ERROR, you show user the error message and ask him to correct the form
If java script receives SUCCESS, you call the next PHP script, which generates the next form and sends it to your JavaScript
JavaScript populates this form content within a DIV in your page, effectively wiping out the current form and showing the new form in its place.
..and the whole process restarts from the first step once again for the new form..

Store jquery variable, transfer to php and check

Ok, so I'm trying this again. I'm trying to validate a users age by country - all selected from dropdowns.
First I use the dropdown to select country, the value of each is 16/17/18 etc so I'm using this script to capture that:
function displayVals() {
var singleValues = $("#country").val();
}
then I'm sending that variable to php:
$countryAge = $_GET['singleValues'];
next I want it to be the result of this function:
function age_required() {
return absint($countryAge);
}
It's just reloading the page, so not throwing any errors that I can see, but also not displaying the notifications that the person is too young etc. It was working before I started meddling.
Any ideas of why it doesn't work? What am I doing wrong? I'm NOT a php/js guru.
$_GET retrieves the value from a querystring, so when you are posting or some other way going to your PHP page, you need to make sure the url includes "?SingleValues=(YOURVALUEHERE)".
http://php.net/manual/en/reserved.variables.get.php
It sounds to me like you may be a bit confused over the role that both JavaScript and PHP play in web applications.
JavaScript runs in the client (i.e. the browser). The source code lives on your webserver, and then gets downloaded in whole to the browser before it gets executed.
By contrast, PHP runs on the server. Its purpose is to create X/HTML markup as output, which the web server then sends to the browser.
In order to get data from the browser to PHP and then back again you need to generate a request. This can be done on the fly (read: without a new page load) using AJAX. There's lots of questions here on SO about AJAX, so I suggest that you begin exploring those questions/answers.
To help you off, here's a few tutorials:
AJAX Using Native JavaScript
AJAX Using jQuery Framework

Is my logic correct? Ajax and/or PHP with Mysql

I have a page which shows a list of items. Page coded with html, css, php and using mysql db.
On that page a user can request to add one of the items to their special list.
I want to do this within the page without having to do a complete page refresh. So user clicks button to add, item is added to their list and button changed so they can't add it again.
Do I use ajax calls to run code behind the page and then refresh the div?
Or is there a better more efficient way to do it.
I'd prefer a php option of possible in case user has js turned off, but don't know if it can be done with using js.
Any help appreciated.
If you want dynamic content (changing the page without refreshing) you are going to have to use Javascript. To do what you are asking, you could call a PHP script via Ajax that outputs the contents of the div with the new item, and then change the div based on that response.
Dagon is exactly right. Create a form which handles the request and set the action of the form to the PHP script you want to handle the request. Note that although this can be the same php script that you use to process your ajax request, it does not necessarily have to be.
Many times when I implement such functionality, I'll set the PHP to send variables as POST (in the event of JS disabled) and have my ajax request as a GET so I can use a single PHP page to handle the 'same' request. When using AJAX, I'll have the script echo a specific code then have the ajax response handle that return.
if(val == 'OK') {
//in event of success, perhaps you want to hide the original form and show a success message
} else {
//do something like unhide a hidden div to display an error
}
If JavaScript is turned off, the page has to be reloaded. In your case jQuery could be very handy and simply rewrite the element you need to rewrite. The server send's a simple json. Using a PHP Framework might also be a good idea, since the way you ask it seems (with respect, and not wanting to offend), that you are not using any framework and might run into falls making your script vulnerable (sql injections for example)
If your visitor doesn't have JavaScript enabled and you want to serve anyways, then you have to do a page reload. First check if that is worth to do, who is your client/visitor, what browser do they use, ... questions like that help you to design your page/app.

Submitting form without refresh

I am retrieving Google's weather API XML and using PHP. I'm retrieving the weather for any searched city.
Now, this "app" is under a tab and whenever I submit the form it refreshes and I want to prevent this.
Is it possible? This will be implemented in a dashboard - thats the reason I want to prevent the refresh.
This is what I mean: http://www.screenr.com/30As
The entire code is here: http://jsfiddle.net/ZshpF/
Simply, copy paste the code in a php file and it will work.
You'll want to use AJAX. Since you mention jQuery in the tags, it has a very handy function for making the call to the server. But making the call from the JavaScript is only half the story, you'll also need something on the server listening for that call. It would essentially be another PHP script which acts as a page in and of itself, but would return data in the form of (most likely) JSON instead of HTML. It's not meant to be human-readable, but rather to be a sort of web service for your JavaScript code to use.
You can find a simple example here.
I think you can use jQuery ajaxForm

passing values from java script to php

can any one please help how to get the values from the javascript to php other than while using submit button.
scenario:
i am searching for record, if the record found then, i need confrim alert asking to continue or not, if he click continue how can i say he selected continue
If you want to check without having a page reload, you probably want to execute an AJAX call, then depending on the result returned by the underlying PHP script, take the appropriate action. If you have no knowldege of how to implement this, take a look here
You can never use JavaScript to communicate with the page while it is loading, you can only send a new request to the web server from the JavaScript layer... although you can send that request to the same script that's already running, it will still be a new instance of the PHP script, just like when you open a new browser tab to the same page.
The only way for JavaScript to communicate with PHP at all, is by sending an HTTP request. But you don't have to refresh the page in order to do that if you use AJAX.
AJAX is basically a word to describe JavaScript exchanging information with web pages without refreshing the page. But note that it will still not be able to change variables in the PHP script which is running when the JavaScript code is executed.
In the case of PHP, I've used the open-source library SAJAX which is quite simple. You will find it at http://www.modernmethod.com/sajax/
Hope it helps and good luck!
You can use this as an example using jquery and PHP:
$.post('searchimage.php', { action: 'searchimage', imgreference: $(this).val() },
function(data) {imgsample.html(data);}
);
Basically apply the above function in a document ready function so its run when the page loads.
This can be triggered using $("#prodcode").click() or what ever event handler you want to use.
The php page in my example will get sent the value from imgreference as a post, you can do whatever you want in the php page then return the value which gets added to the imgsample (in this case a td)
hope this helps.

Categories