[FX.php List] "Portal" within a "Portal"?
DC
dan.cynosure at dbmscan.com
Thu Jul 14 14:14:51 MDT 2005
well... here's a little code i use in situations where there's no time
to build a proper join file. It does other things to the FX data array
too - including flattening it... so it may not be exactly what you are
looking for. basically a little search tool to pluck out one record from
a related table returned by FX data array... and the comments inline are
the only 'documentation':
http://dbmscan.com/snippets/index.php?cat_select=FX_and_Smarty
look at the "FX nested array to recordset array" entry.
dan
Joel Shapiro had written:
> Thanks Dan
>
> Yes, it's the multiple find requests in a portal that's my sticking
> point. I was thinking that I would not need to create a join file in
> FMP and could just do the joining in PHP (especially since I don't need
> to have any relationships within the FM file to view related data in
> the php).
>
> It seems to me that this should work, and I can get it to _kind-of_
> work -- getting marks for a specific subject -- but the problem is that
> it's only for the *last* subject for that student's grade (e.g. If John
> has subjects English, History & Science, the php is able to find just
> the Science marks, but it puts them under English and History as well
> -- It doesn't "stop" at each subject, it seems to loop through and only
> capture the last subject. I think I need a different ForEach statement
> somewhere.
>
> I'm put 2 samples of the output here:
> http://jsfmp.com/php_problem.html
>
> Any more thoughts, anyone?
>
> TIA
> -Joel
>
>
> On Jul 14, 2005, at 8:09 AM, DC wrote:
>
>> if i understand right, the portal returns multiple data points into
>> the data array and you don't think it should. the problem is that FMP
>> can't read your mind and defaults to sending everything in the portal.
>>
>> confusing the issue is multiple find requests in a portal.
>>
>> my advice, do your find request directly on the join file.
>>
>> dan
>>
>> Joel Shapiro had written:
>>
>>> Hi all
>>> I'm getting better with this, but I'm stuck right now on getting a
>>> "portal" within a "portal". This is a school report card project,
>>> and I'd like to have a table that shows all of a student's marks
>>> separated by subject. Subjects vary per grade, and each Mark record
>>> contains the subject as well as the student_ID. I can display:
>>> - All subjects per the student's grade, and
>>> - All marks per student,
>>> but when I try to combine them, I can't get the php to 'stop' at
>>> each subject -- instead, I only pull the marks for the last subject
>>> for that student -- even though a print_r shows that the correct
>>> subject is in each row.
>>> Can anyone give a tip as to what I'm doing wrong?
>>> Thanks,
>>> -Joel
>>> (I've posted my whole page below. Apologies if that's not how this
>>> is done on this list.)
>>> <?php
>>> include_once('FX/FX.php');
>>> include_once('FX/server_data.php');
>>> include_once('FX/FMErrors.php');
>>> $recid=$_GET['recid'];
>>> // THE FOUND STUDENT
>>> $findstudent=new FX($serverIP,$webCompanionPort);
>>> $findstudent->SetDBData('school.fp7','Student');
>>> $findstudent->SetDBPassword('','Admin');
>>> $findstudent->AddDBParam('-recid',$recid);
>>> $studentResult=$findstudent->FMFind();
>>> foreach($studentResult['data'] as $key=>$studentData)
>>> // ALL SUBJECTS PER STUDENT'S GRADE
>>> $findsubject=new FX($serverIP,$webCompanionPort);
>>> $findsubject->SetDBData('school.fp7','Subject');
>>> $findsubject->SetDBPassword('','Admin');
>>> $findsubject->AddDBParam('Grade',$studentData['Grade'][0]);
>>> $subjectResult=$findsubject->FMFind();
>>> foreach($subjectResult['data'] as $key2=>$subjectData)
>>> // ALL MARKS PER STUDENT
>>> $findmark=new FX($serverIP,$webCompanionPort);
>>> $findmark->SetDBData('school.fp7','Mark');
>>> $findmark->SetDBPassword('','Admin');
>>> $findmark->AddDBParam('Student_ID',$studentData['Student_ID'][0]);
>>> $markResult=$findmark->FMFind();
>>> // ** PROBLEM: SHOULD BE MARKS PER SUBJECT PER STUDENT **
>>> $search2=new FX($serverIP,$webCompanionPort);
>>> $search2->SetDBData('school.fp7','Mark');
>>> $search2->SetDBPassword('','Admin');
>>> $search2->AddDBParam('Student_ID',$studentData['Student_ID'][0]);
>>> $search2->AddDBParam('Subject',$subjectData['Subject'][0]);
>>> $search2Result=$search2->FMFind();
>>> ?>
>>> <html>
>>> <head>
>>> <title>School</title>
>>> </head>
>>> <body>
>>> <B><?php echo $studentData['Name'][0]; ?></B> Grade: <?php echo
>>> $studentData['Grade'][0]; ?><BR>
>>> ** ALL SUBJECTS PER STUDENT'S GRADE **
>>> <table border="1" cellpadding="2" cellspacing="0"
>>> bordercolor="#999999">
>>> <tr>
>>> <td>Subjects for Grade <?php echo $studentData['Grade'][0]; ?></td>
>>> </tr>
>>> <?php foreach($subjectResult['data'] as $key=>$subjectData) { ?>
>>> <tr>
>>> <td><?php echo $subjectData['Subject'][0]; ?></td>
>>> </tr>
>>> <?php } ?>
>>> </table><BR>
>>> ** ALL MARKS PER STUDENT **
>>> <table border="1" cellpadding="2" cellspacing="0"
>>> bordercolor="#999999">
>>> <tr>
>>> <td>Mark_ID</td>
>>> <td>Mark</td>
>>> <td>Subject</td>
>>> <td>Student_ID</td>
>>> </tr>
>>> <?php foreach($markResult['data'] as $key=>$markData) { ?>
>>> <tr>
>>> <td><?php echo $markData['Mark_ID'][0]; ?></td>
>>> <td><?php echo $markData['Mark'][0]; ?></td>
>>> <td><?php echo $markData['Subject'][0]; ?></td>
>>> <td><?php echo $markData['Student_ID'][0]; ?></td>
>>> </tr>
>>> <?php } ?>
>>> </table><BR>
>>> ** PROBLEM: ALL MARKS PER PER SUBJECT PER STUDENT **
>>> <table border="1" cellpadding="2" cellspacing="0"
>>> bordercolor="#999999">
>>> <tr>
>>> <td>Subjects for Grade <?php echo $studentData['Grade'][0]; ?></td>
>>> </tr>
>>> <?php foreach($subjectResult['data'] as $key=>$subjectData) { ?>
>>> <tr>
>>> <td><?php echo $subjectData['Subject'][0]; ?></td>
>>> </tr>
>>> <!-- **** PROBLEM: Only pulls last Subject in array, not one ForEach
>>> **** -->
>>> <?php foreach($search2Result['data'] as $key=>$search2Data) { ?>
>>> <tr>
>>> <td>
>>> <?php print_r ($subjectData['Subject'][0]); ?><BR>
>>> <?php echo $search2Data['Mark_ID'][0]; ?>
>>> </td>
>>> <td><?php echo $search2Data['Mark'][0]; ?></td>
>>> <td><?php echo $search2Data['Subject'][0]; ?></td>
>>> <td><?php echo $search2Data['Student_ID'][0]; ?></td>
>>> </tr>
>>> <?php } ?>
>>> <!-- **** END PROBLEM **** -->
>>> <?php } ?>
>>> </table>
>>> </body>
>>> </html>
>>> ----------------------------------------------------------------------
>>> --
>>> _______________________________________________
>>> FX.php_List mailing list
>>> FX.php_List at mail.iviking.org
>>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>
>> _______________________________________________
>> FX.php_List mailing list
>> FX.php_List at mail.iviking.org
>> http://www.iviking.org/mailman/listinfo/fx.php_list
>>
>
> _______________________________________________
> FX.php_List mailing list
> FX.php_List at mail.iviking.org
> http://www.iviking.org/mailman/listinfo/fx.php_list
>
More information about the FX.php_List
mailing list