Check out the LimeSurvey source code on GitHub!
Welcome, Guest
Username: Password:
  • Page:
  • 1
  • 2

TOPIC: run php script on completion of a survey

run php script on completion of a survey 5 years 6 months ago #55972

  • ryanam
  • ryanam's Avatar
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!
The administrator has disabled public write access.

run php script on completion of a survey 5 years 6 months ago #55975

  • tpartner
  • tpartner's Avatar
  • Online
  • LimeSurvey Team
  • Posts: 6140
  • Thank you received: 1363
  • Karma: 535
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 administrator has disabled public write access.
The following user(s) said Thank You: ryanam

run php script on completion of a survey 5 years 5 months ago #56015

  • Mazi
  • Mazi's Avatar
  • Offline
  • LimeSurvey Team
  • Posts: 5974
  • Thank you received: 366
  • Karma: 260
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)limesurvey.org'"
The administrator has disabled public write access.
The following user(s) said Thank You: ryanam

run php script on completion of a survey 5 years 5 months ago #56038

  • ryanam
  • ryanam's Avatar
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?
The administrator has disabled public write access.

run php script on completion of a survey 5 years 5 months ago #56073

  • Mazi
  • Mazi's Avatar
  • Offline
  • LimeSurvey Team
  • Posts: 5974
  • Thank you received: 366
  • Karma: 260
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)limesurvey.org'"
The administrator has disabled public write access.
The following user(s) said Thank You: ryanam

run php script on completion of a survey 3 years 4 months ago #93821

  • davyhp
  • davyhp's Avatar
  • Offline
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
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.
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #93829

  • tpartner
  • tpartner's Avatar
  • Online
  • LimeSurvey Team
  • Posts: 6140
  • Thank you received: 1363
  • Karma: 535
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.
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #93847

  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • Moderator Lime
  • Posts: 9293
  • Thank you received: 1327
  • Karma: 384
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 developpement are on my free time (Say thanks ?).
A bug not reported is a bug not corrected. | Please, read the documentation | La doc en français à besoin de vous
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #93862

  • davyhp
  • davyhp's Avatar
  • Offline
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
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.
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #93863

  • davyhp
  • davyhp's Avatar
  • Offline
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
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... ;-)
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #93866

  • ivanleng
  • ivanleng's Avatar
  • Offline
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
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.
The administrator has disabled public write access.

run php script on completion of a survey 3 years 4 months ago #94006

  • davyhp
  • davyhp's Avatar
  • Offline
  • Fresh Lemon
  • Posts: 4
  • Karma: 0
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: 3 years 4 months ago by davyhp.
The administrator has disabled public write access.

run php script on completion of a survey 2 months 1 week ago #136523

  • Maverick87Shaka
  • Maverick87Shaka's Avatar
  • Offline
  • Junior Lime
  • Posts: 33
  • Thank you received: 1
  • Karma: 1
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
The administrator has disabled public write access.

run php script on completion of a survey 2 months 1 week ago #136526

  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Team
  • Posts: 5063
  • Thank you received: 749
  • Karma: 227
Why not using the redirect feature of the End url feature and send the participant to your script?
Have a look at the manual! It is a really valuable source for information. Here some helpful links:
Manual (EN) | Question Types | Question Attributes | Workarounds

If you found this answer helpful and it saved you some time please consider a donation to the project to keep Limesurvey going!
The administrator has disabled public write access.

run php script on completion of a survey 2 months 1 week ago #136528

  • Maverick87Shaka
  • Maverick87Shaka's Avatar
  • Offline
  • Junior Lime
  • Posts: 33
  • Thank you received: 1
  • Karma: 1
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 )
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Moderators: ITEd
Time to create page: 0.283 seconds
Imprint                   Data Protection Statement                  Revocation information and revocation form