Click to See Complete Forum and Search --> : Sorting question.


DanUK
12-18-2004, 07:04 PM
Hello.
A new query for you!

On one of our forms we have a rota, that's laid out on the form like:


<table border="1" cellspacing="0" cellpadding="3">
<tr>
<td colspan="2" class="check">Sun:</td>
<td colspan="2" class="check">Mon:</td>
<td colspan="2" class="check">Tues:</td>
<td colspan="2" class="check">Weds:</td>
</tr>

<tr>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="sunday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="monday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="tuesday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="wednesday{EM-00:00-06:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="sunday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="monday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="tuesday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="wednesday{AM-06:00-12:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="sunday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="monday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="tuesday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="wednesday{PM-12:00-17:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="sunday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="monday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="tuesday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="wednesday{EV-17:00-21:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="sunday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="monday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="tuesday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="wednesday{LN-21:00-00:00}" value="SELECTED" /></td>
</tr>
</table>

<table border="1" cellspacing="0" cellpadding="3">
<tr>
<td colspan="2" class="check">Thurs:</td>
<td colspan="2" class="check">Fri:</td>
<td colspan="2" class="check">Sat:</td>
</tr>

<tr>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="thursday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="friday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="saturday{EM-00:00-06:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="thursday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="friday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="saturday{AM-06:00-12:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="thursday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="friday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="saturday{PM-12:00-17:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="thursday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="friday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="saturday{EV-17:00-21:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="thursday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="friday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="saturday{LN-21:00-00:00}" value="SELECTED" /></td>
</tr>
</table>


The issue we have is that when this is mailed to us by our PHP mailer, it'll come through all seperate, like:


Sunday{AM-06:00-12:00} : SELECTED
Sunday{PM-12:00-17:00} : SELECTED
Wednesday{PM-12:00-17:00} : SELECTED
Sunday{EV-17:00-21:00} : SELECTED
Monday{EV-17:00-21:00} : SELECTED
Tuesday{EV-17:00-21:00} : SELECTED
Wednesday{EV-17:00-21:00} : SELECTED
Sunday{LN-21:00-00:00} : SELECTED
Monday{LN-21:00-00:00} : SELECTED
Tuesday{LN-21:00-00:00} : SELECTED
Wednesday{LN-21:00-00:00} : SELECTED
Saturday{AM-06:00-12:00} : SELECTED
Friday{PM-12:00-17:00} : SELECTED
Saturday{PM-12:00-17:00} : SELECTED
Thursday{EV-17:00-21:00} : SELECTED
Friday{EV-17:00-21:00} : SELECTED
Saturday{EV-17:00-21:00} : SELECTED


Is there an easy way for PHP to sort these so they arrive in order of Sunday through Saturday instead of all scrambled?

If it helps, I can paste my mailer.

Many thanks for any help!

Regards,

Jona
12-18-2004, 08:45 PM
You mean like the following?


Sunday
Sunday
Sunday
Monday
Tuesday
Tuesday
Wednesday
Wednesday
Thursday
Friday
Friday
Firday
Saturday
Saturday

DanUK
12-19-2004, 02:06 AM
Hello Jona. Thanks for your reply.

That's correct yes, that's how I want it to come through.
It'd also be nice also for it go in order of EM, AM, PM, EV, LN, but I guess that would get too difficult so it's not a big issue.

Is it pretty easy?

Thanks.

Rgds,

pj59
12-19-2004, 03:29 AM
Hello!

A simple example:

You rename your checkboxes.
1) Before the respective name of the day you put 'a' to 'g', so the "days" will look like this:

asunday
bmonday
ctuesday
dwednesday
ethursday
ffriday
gsaturday

2) The fields with 'EM' will get 'AAM' instead and those with 'PM' will get 'ANM' instead. So you will have an alphabetical order of the periods of the day. Example for sunday:

asunday{AAM-00:00-06:00}
asunday{AM-06:00-12:00}
asunday{ANM-12:00-17:00}
asunday{EV-17:00-21:00}
asunday{LN-21:00-00:00}

Do this for all the days. Then you can use something like that:<?php
$x=0;
$arr=array();
foreach($HTTP_POST_VARS as $name=> $value) {
$arr[$x]=$name.': '.$value.'<br>'."\n";//if you receive the mails as plain text, take out the ".'<br>'" bit!
$x++;
}
sort($arr);
$insert2='';
for ($i=0;$i<count($arr);$i++){
$insert=substr($arr[$i],1,strlen($arr[$i]));
$insert=str_replace('{AAM','{EM',$insert);
$insert=str_replace('{ANM','{PM',$insert);
$insert2 .=$insert;
}
echo $insert2;//instead of echoing the content, use the variable as the body (or a part of it) from the mail sent to you
}
?>Regards PJ

DanUK
12-19-2004, 02:29 PM
Hello. Thank you very much for your reply.
Unfortunately, it's not working for me.

I have updated my code to:


<table border="1" cellspacing="0" cellpadding="3">
<tr>
<td colspan="2" class="check">Sun:</td>
<td colspan="2" class="check">Mon:</td>
<td colspan="2" class="check">Tues:</td>
<td colspan="2" class="check">Weds:</td>
</tr>

<tr>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="a-Sunday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="b-Monday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="c-Tuesday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="d-Wednesday{EM-00:00-06:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="a-Sunday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="b-Monday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="c-Tuesday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="d-Wednesday{AM-06:00-12:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="a-Sunday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="b-Monday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="c-Tuesday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="d-Wednesday{PM-12:00-17:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="a-Sunday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="b-Monday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="c-Tuesday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="d-Wednesday{EV-17:00-21:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="a-Sunday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="b-Monday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="c-Tuesday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="d-Wednesday{LN-21:00-00:00}" value="SELECTED" /></td>
</tr>
</table>

<table border="1" cellspacing="0" cellpadding="3">
<tr>
<td colspan="2" class="check">Thurs:</td>
<td colspan="2" class="check">Fri:</td>
<td colspan="2" class="check">Sat:</td>
</tr>

<tr>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="e-Thursday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="f-Friday{EM-00:00-06:00}" value="SELECTED" /></td>
<td class="check">EM</td>
<td class="check"><input type="checkbox" class="noborder" name="g-Saturday{EM-00:00-06:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="e-Thursday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="f-Friday{AM-06:00-12:00}" value="SELECTED" /></td>
<td class="check">AM</td>
<td class="check"><input type="checkbox" class="noborder" name="g-Saturday{AM-06:00-12:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="e-Thursday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="f-Friday{PM-12:00-17:00}" value="SELECTED" /></td>
<td class="check">PM</td>
<td class="check"><input type="checkbox" class="noborder" name="g-Saturday{PM-12:00-17:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="e-Thursday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="f-Friday{EV-17:00-21:00}" value="SELECTED" /></td>
<td class="check">EV</td>
<td class="check"><input type="checkbox" class="noborder" name="g-Saturday{EV-17:00-21:00}" value="SELECTED" /></td>
</tr>

<tr>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="e-Thursday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="f-Friday{LN-21:00-00:00}" value="SELECTED" /></td>
<td class="check">LN</td>
<td class="check"><input type="checkbox" class="noborder" name="g-Saturday{LN-21:00-00:00}" value="SELECTED" /></td>
</tr>
</table>


however when it's submitted, the days still come through scrambled.
For example:


A-Sunday{EM-00:00-06:00} : SELECTED
A-Sunday{AM-06:00-12:00} : SELECTED
B-Monday{AM-06:00-12:00} : SELECTED
D-Wednesday{AM-06:00-12:00} : SELECTED
A-Sunday{PM-12:00-17:00} : SELECTED
B-Monday{PM-12:00-17:00} : SELECTED
D-Wednesday{PM-12:00-17:00} : SELECTED
A-Sunday{EV-17:00-21:00} : SELECTED
B-Monday{EV-17:00-21:00} : SELECTED
C-Tuesday{EV-17:00-21:00} : SELECTED
D-Wednesday{EV-17:00-21:00} : SELECTED
B-Monday{LN-21:00-00:00} : SELECTED
C-Tuesday{LN-21:00-00:00} : SELECTED
E-Thursday{EM-00:00-06:00} : SELECTED
E-Thursday{AM-06:00-12:00} : SELECTED
G-Saturday{AM-06:00-12:00} : SELECTED
E-Thursday{PM-12:00-17:00} : SELECTED
F-Friday{PM-12:00-17:00} : SELECTED
G-Saturday{PM-12:00-17:00} : SELECTED
F-Friday{EV-17:00-21:00} : SELECTED
G-Saturday{EV-17:00-21:00} : SELECTED
F-Friday{LN-21:00-00:00} : SELECTED


I haven't yet tried to fix the LN, EM's etc, but just the days.

Thanks.

epsilonv
12-19-2004, 05:03 PM
DanUK,

Question for you...did you code the php mailer? If not you are probably in the wrong group. As far as your form goes this may work with your mailer. I'm not entirely certain. You can try changing the tab index so everything in the sunday column has the tab index 0, 1, 2, 3, 4 for sunday EM, AM, PM, EV, LN that may work. Additionally you can change the name for the sunday column to the same name like this
name="sunday[]" then the result will be return in an array.
sunday[0] = EM;
sunday[1] = AM;
sunday[2] = PM;
sunday[3] = EV;
sunday[4] = LN;

How the results will come through the php emailer I have no idea.
But i still think its a tab index property check under Forms at www.w3c.org/TR/HTML4/ I beleive they explain how forms are submitted to some degree. As you may or may not have written the php mailer we have no idea what that does...do we? If its someone elses php code that you are using (from a web hoster or whatever) check their documentation as well.

epsilonv
"The only limits we have are those we place on ourselves"

epsilonv
12-19-2004, 05:09 PM
If the tabindex does not help you then you will need to reformat your form so the character stream of sunday comes first in the form...

DanUK
12-19-2004, 05:28 PM
Hello.
Thanks for your reply.

Yes, I wrote parts of my mailer but it's based on one I found elsewhere.

As for the tabindex, I have nothing defined in my form or PHP mailer to determine this.

I have pasted my php mailer below:


Removed.


Thanks.

Jona
12-20-2004, 01:09 AM
<?php

$list = 'Sunday{AM-06:00-12:00} : SELECTED
Sunday{PM-12:00-17:00} : SELECTED
Wednesday{PM-12:00-17:00} : SELECTED
Sunday{EV-17:00-21:00} : SELECTED
Monday{EV-17:00-21:00} : SELECTED
Tuesday{EV-17:00-21:00} : SELECTED
Wednesday{EV-17:00-21:00} : SELECTED
Sunday{LN-21:00-00:00} : SELECTED
Monday{LN-21:00-00:00} : SELECTED
Tuesday{LN-21:00-00:00} : SELECTED
Wednesday{LN-21:00-00:00} : SELECTED
Saturday{AM-06:00-12:00} : SELECTED
Friday{PM-12:00-17:00} : SELECTED
Saturday{PM-12:00-17:00} : SELECTED
Thursday{EV-17:00-21:00} : SELECTED
Friday{EV-17:00-21:00} : SELECTED
Saturday{EV-17:00-21:00} : SELECTED';

$list = explode("\n", $list);
$days = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
$newList = array();
$i = 0;

foreach ($days as $day){
foreach ($list as $value){
if(strstr($value, $day)){
$newList[$i++] = $value;
}
}
}

echo implode("<br>", $newList);
?>

epsilonv
12-21-2004, 04:14 PM
Was that last bit of code the solution for you? If not let us know.