run php script on completion of a survey

  • ryanam
  • ryanam's Avatar Topic Author
  • Visitor
  • Visitor
6 years 1 month ago #55972 by ryanam
I was wondering if it was possible to run a php (something like survey_end.php) script whenever someone completes a survey.

I know someone who did this back when this was phpsurveyor, but I don't know how they did it, and if it is possible with Lime Surveyor.

Thanks!

Please Log in to join the conversation.

More
6 years 1 month ago #55975 by tpartner
Yes, you can fire a PHP script with a JavaScript/AJAX call. You can use the jQuery .get() function as shorthand for the AJAX calls.

Set up your survey to use JavaScript and place the something like this script in the source of the survey end message. This example will call a file "survey_end.php" in your template folder without passing any data to it.
<script type="text/javascript" charset="utf-8">
 
	$(document).ready(function() {
 
		$.get('upload/templates/yourTemplateName/survey_end.php');
 
	});
 
</script>

You can pass some values (for example, name and age) to the PHP file via the GET array like so:
<script type="text/javascript" charset="utf-8">
 
	$(document).ready(function() {
 
		$.get('upload/templates/yourTemplateName/survey_end.php', { name: 'John Doe', age: '38' } );
 
	});
 
</script>

More info on the jQuery .get() function here - api.jquery.com/jQuery.get

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
The following user(s) said Thank You: ryanam

Please Log in to join the conversation.

More
6 years 1 month ago #56015 by Mazi
Another approach is to simply use the end URL feature and redirect the user to a certain URL which calls the PHP file.


Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)survey-consulting.com'"
The following user(s) said Thank You: ryanam

Please Log in to join the conversation.

  • ryanam
  • ryanam's Avatar Topic Author
  • Visitor
  • Visitor
6 years 1 month ago #56038 by ryanam
Thanks for the helpful replies. I don't have LimeSurvey installed yet, but hopefully should get that done today now that I know it is possible to do what I want to do.

The end URL feature seems pretty straight forward, but I don't believe I've seen anything about it. Is it something I would easily see once I've got LimeSurvey set up?

Please Log in to join the conversation.

More
6 years 1 month ago #56073 by Mazi
You'll find that at the survey settings, watch ut for "end URL": docs.limesurvey.org/Creating+a+new+surve...ation_amp_navigation


Best regards/Beste Grüße,
Dr. Marcel Minke
(Limesurvey Head of Support)
Need Help? We offer professional Limesurvey support
Contact: marcel.minke(at)survey-consulting.com'"
The following user(s) said Thank You: ryanam

Please Log in to join the conversation.

More
4 years 1 week ago #93821 by davyhp
Hello,

Digging up an old message, but I'm trying to run a script to automate mailings at the end of a survey and I can't seem to get the JavaScript call my PHP script. I've enabled JavaScripts in Limesurvey, an
alert('test');
... prompts up a message box fine if inserted into the text value of some question for example. It also works fine when using the end URL feature redirection with values (but that solution isn't good enough for me since my URL is too long to fit, with 16 values to pass...)

So I wanted to use the code inside the survey, like mentionned :
$.get('upload/templates/yourTemplateName/survey_end.php');
... but this has no effect, even simple echoes won't show.

Am I doing something wrong? I'm a LS 2.00+ build 130226 user.

Thanks for reading me.

Regards,
Davy.

Please Log in to join the conversation.

More
4 years 1 week ago #93829 by tpartner

even simple echoes won't show

Does that mean yo can't get the JavaScript alert to work from the end message?

Cheers,
Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.

Please Log in to join the conversation.

More
4 years 1 week ago #93847 by DenisChenu

Mazi wrote: Another approach is to simply use the end URL feature and redirect the user to a certain URL which calls the PHP file.

This one is easy to do too.

Denis

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).

Please Log in to join the conversation.

More
4 years 1 week ago #93862 by davyhp
If I use JavaScript or PHP through the "end URL" feature, everything works fine, it's when I add code into the survey elsewhere that it doesn't work.

Please Log in to join the conversation.

More
4 years 1 week ago #93863 by davyhp
It's easy and works fine, but the size of that end URL textbox is too short for what I want it to share with my PHP script... ;-)

Please Log in to join the conversation.

More
4 years 1 week ago #93866 by ivanleng
I need to do the same and use a PHP script at the end to send some stuff to an external web service.

I'm thinking about using PHP Session to store some values so they can be easily retrieved, this way my end URL won't be too long.

Please Log in to join the conversation.

More
4 years 6 days ago - 4 years 6 days ago #94006 by davyhp

ivanleng wrote: I need to do the same and use a PHP script at the end to send some stuff to an external web service.

I'm thinking about using PHP Session to store some values so they can be easily retrieved, this way my end URL won't be too long.


PHP Session would solve the backend problem, but I can't get a PHP script running from within the code of a survey question... Where else would I put my sessions' variables?

tpartner wrote: <script type="text/javascript" charset="utf-8">

$(document).ready(function() {

$.get('upload/templates/yourTemplateName/survey_end.php', { name: 'John Doe', age: '38' } );

});

</script>


That was the code submitted by tpartner, which isn't working for me inside a survey. Just JavaScript works fine, but the PHP script doesn't run like it does when I use the end URL feature.
Last Edit: 4 years 6 days ago by davyhp.

Please Log in to join the conversation.

More
10 months 4 days ago #136523 by Maverick87Shaka
Hi to all,
<script type="text/javascript" charset="utf-8">
 
	$(document).ready(function() {
 
		$.get('upload/templates/yourTemplateName/survey_end.php');
 
	});
 
</script>
it's this code valid?

I'm trying to run a custom .php script at the end of survey, but it's seams the survey doesn't execute my script on survey end.

My current version is: 2.50+ Build 160506

Please Log in to join the conversation.

More
10 months 4 days ago #136526 by holch
Why not using the redirect feature of the End url feature and send the participant to your script?

I'm not a LimeSurvey GmbH member. I answer at the LimeSurvey forum in my spare time. No support via private message.
Some helpful links: Manual (EN) | Question Types | Workarounds

Please Log in to join the conversation.

More
10 months 4 days ago #136528 by Maverick87Shaka
mainly because I don't want to make the users "land" on this different page to run my script.
I don't want that users is able to view the "new" url
And if it's possible, my goal it's to run local script in a determinate path, not exposed on the public internet directory.
In my "vision" I would like to "launch" the execution of the .php script when users click on "finish" button, and show the standard limesurvey end page at the end of survey ( If it's possible I also like to serve the standard end page to the users without wait the execution of the other script )

Please Log in to join the conversation.