Jump to content
ngrmm

set checkbox value inside a table

Recommended Posts

I have a page with a table. Each table row has a page-reference field and a checkbox.
The Page sends emails to all users (page-refrence->email-field) and change the value of the checkbox in a row to 1.

It works with this:

<?php

	// event ID fron url query
	$eventID = $input->get('eventID','int');

	// get event-page
	$event = $pages->get($eventID);

	// config
	$fromEmail = $event->event_mail_from;
	$fromName = $event->event_mail_from_name;
	$emailSubject = $event->event_subject;

	// email html body
	ob_start();
	include('./_inc/emailbody.inc');
	$emailBody = ob_get_clean();

	// make event-page editable
	$event->of(false); 

	// loop through table and send out emails
	foreach($event->event_clients_list as $event_table_row) {
		
		// get client page
		$clientPage = $event_table_row->client_name;
      
      	// get client email
		$clientEmail = $clientPage->email;
		
		// if client isn't invited yet (checkbox not checked)
		if($event_table_row->client_invited == '') {

			// send email
			$m = new WireMail();
			$m->to($clientEmail);
			$m->from($fromEmail, $fromName);
			$m->subject($emailSubject);
			$m->bodyHTML($emailBody);
			$m->send();

			// mark client as invited
			$event_table_row->client_invited = 1;
			$event->save('event_clients_list');	
		}
	}
?>

But i have to use a variable in my emailbody.inc which i'm able to get in the table-loop.
So i do the including of the body inside my loop. But this doesn't work anymore. Page sends out the emails but is unable to change the value of the checkbox.
I get no errors!
I'm using ProTable

<?php

	// event ID fron url query
	$eventID = $input->get('eventID','int');

	// get event-page
	$event = $pages->get($eventID);

	// config
	$fromEmail = $event->event_mail_from;
	$fromName = $event->event_mail_from_name;
	$emailSubject = $event->event_subject;

	// loop through table and send out emails
	foreach($event->event_clients_list as $event_table_row) {
		
		// get client page
		$clientPage = $event_table_row->client_name;
      
      	// get client email
		$clientEmail = $clientPage->email;

		// email html body
		ob_start();
		include('./_inc/emailbody.inc');
		$emailBody = ob_get_clean();

		// make event-page editable
		$event->of(false); 
  
		// if client isn't invited yet (checkbox not checked)
		if($event_table_row->client_invited == '') {

			// send email
			$m = new WireMail();
			$m->to($clientEmail);
			$m->from($fromEmail, $fromName);
			$m->subject($emailSubject);
			$m->bodyHTML($emailBody);
			$m->send();

			// mark client as invited
			$event_table_row->client_invited = 1;
			$event->save('event_clients_list');	
		}
	}
?>

 

Share this post


Link to post
Share on other sites

Got it working by using two loops. One for sending out emails and the other for changing the value.
 

	
	
	// loop through table and send out emails
	foreach($event->event_clients_list as $event_table_row) {
		
		// get client page
		$clientPage = $event_table_row->client_name;
      
      	// get client email
		$clientEmail = $clientPage->email;

		// email html body
		ob_start();
		include('./_inc/emailbody.inc');
		$emailBody = ob_get_clean();

		if($event_table_row->client_invited == '') {

			// send email
			$m = new WireMail();
			$m->to($clientEmail);
			$m->from($fromEmail, $fromName);
			$m->subject($emailSubject);
			$m->bodyHTML($emailBody);
			$m->send();		

		}
	}

	// make event-page editable
	$event->of(false); 
	
	// loop through table and change value
	foreach($event->event_clients_list as $event_table_row) {

		// if client isn't invited yet (checkbox not checked)
		if($event_table_row->client_invited == '') {
			$event_table_row->client_invited = 1;
			$event->save('event_clients_list');	
		}
		
	}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By rjgamer
      Hi,
      is there a hook after the current (active) page got created? Or which method got called in the Page class after the Constructor of the current page got initialized?
      Thanks.
       
    • By killedfriendz
      I am very sorry for asking this but i totally do not understand how to set values of checbox using API. 
      I have checbox field on my page with name "order_status". 
      So i've tried few ways to make it checked but it still doesn't work:
       
      $userPage->order_status->value = 1; $userPage->order_status->add(1); $userPage->order_status->add(true); Could you please tell me how to do it?
    • By rjgamer
      Hi guys,
      the field "redirect_last" of type DateTime got not updated. The update on the field "redirect_counter" works and got saved.
      Does anybody know what I did wrong in my code?
      if ($input->urlSegment(1) === 'redirect') { $page->of(false); $page->redirect_last = time(); $page->redirect_counter += 1; if ($page->save('redirect_counter')) { $session->redirect($page->website_url, 302); } } Thanks.
    • By totoff
      Dear all,
      I'm upgrading an older side with the new custom fields for images feature as of 3.0.142. My image field is set to "Automatic" and holds a bunch of images together with their respective description on each page. New custom fields include "caption" among others and to make my live easier I I'm trying to populate "caption" with the value from the (default) description field. But unfortunately I can't seem to find out how to save the newly set values. This is my code:
      <?php foreach (page()->images as $image) { $image->set('caption', $image->description); bd($image->caption); echo files()->render("markup/views/view-card-image-fancybox.php", array('image'=>$image)); } ?> <?php $page->save(); bd($page->save()); ?> This sets the value as intended (see screenshot) but doesn't save it permanently to the database. What am I doing wrong?
      Thanks!
       

×
×
  • Create New...