If you need to modify the contents of the array, take another close
look at the foreach documentation:

foreach ($arr as &$value) {
    $value = $value * 2;
}

On May 16, 5:49 am, Tony Thomas <[EMAIL PROTECTED]> wrote:
> Thanks for all of the help. The tips I got pointed me in the right
> direction. Once I changed my foreach loops to while (list($key,
> $value) = each($patient['Visit'])) and while (list($key, $value) =
> each($patient['M5Symptoms'])) respectively, my data appeared. I
> figured this out once I realized the foreach() operates on a copy of
> the array and list($key, $value) = each($array) doesn't.
>
> http://us2.php.net/foreachhttp://us2.php.net/manual/en/function.list.php
>
> (Links for reference to those who might come upon this in the future.
> Hello from the past.)
>
> On May 15, 2:26 pm, Tony Thomas <[EMAIL PROTECTED]> wrote:
>
> > OK, some additional information. (I apologize, because I think this is
> > getting into PHP territory and may not be specifically related to
> > CakePHP.)
>
> > If I place debug($patient) before the first foreach loop (for
> > 'Visit'), I get the arrays as below. If I place it after the foreach
> > loop I get the same "Undefined index" message. How can I preserve that
> > array to reuse it to make a second table?
>
> > On May 15, 12:35 pm, Tony Thomas <[EMAIL PROTECTED]> wrote:
>
> > > debug($patient) produces:
>
> > > Array
> > > (
> > >     [Patient] => Array
> > >         (
> > >             [id] => 5007
> > >             [med_hist_id] => 0
> > >             [gender] => M
> > >             [st_of_birth] => [redacted]
> > >             [st_of_res] => [redacted]
> > >             [res_length] => 11 yrs
> > >             [cntry_of_origin] => U.S.
> > >             [dob] => [redacted]
> > >             [siblings] => 2
> > >             [birth_order] => 1
> > >             [mono_before] => N
> > >             [ethnicity] => [redacted]
> > >             [race] => [redacted]
> > >             [contact_by] => email
> > >             [withdrawn] => N
> > >             [kdas] => NKDA
> > >             [mono_dx] => N
> > >         )
>
> > >     [Visit] => Array
> > >         (
> > >             [0] => Array
> > >                 (
> > >                     [id] => 2060
> > >                     [quest_id] =>
> > >                     [patient_id] => 5007
> > >                     [protocol] => Mono 5
> > >                     [vdate] => 4/22/2008
> > >                     [vtmstmp] => 1208840400
> > >                     [week] =>
> > >                     [yr] => 2
> > >                     [number] => 8
> > >                     [notes] => [redacted]
> > >                     [kit] => 0
> > >                     [sev_p] => 0
> > >                     [sev_scr] => 0
> > >                     [sev_pain] =>
> > >                     [modified] => 4/22/2008 2:25:47 PM
> > >                     [created] => 4/22/2008 2:11:39 PM
> > >                 )
> > > //truncated here, but shows the last ten visits as expected
>
> > >         )
>
> > >     [M5Symptom] => Array
> > >         (
> > >             [0] => Array
> > >                 (
> > >                     [id] => 19
> > >                     [patient_id] => 5007
> > >                     [symptom] => Stuffy Nose
> > >                     [start_date] => 12/18/2006
> > >                     [end_date] => 12/21/2006
> > >                     [severity] =>
> > >                     [exported] =>
> > >                     [date_reported] =>
> > >                     [created] =>
> > >                     [modified] =>
> > >                 )
> > > // again truncated by me, but the list of 25 shows up in the array
>
> > >         )
>
> > > )
>
> > > On May 15, 12:23 pm, "[EMAIL PROTECTED]"
>
> > > <[EMAIL PROTECTED]> wrote:
> > > > Hi Tony,
> > > > What do you have in the $patient variable when you debug it?
> > > > debug($patient)
>
> > > > /Martin
>
> > > > On May 15, 5:37 pm, Tony Thomas <[EMAIL PROTECTED]> wrote:
>
> > > > > Hi All,
>
> > > > > I'm building a CakePHP app for tracking clinic patients, their visits,
> > > > > their symptoms and questionnaire answers. The barrier I've encountered
> > > > > is that each patient has many visits AND many symptoms. I want to view
> > > > > the patient record and their aggregate visits and symptoms.
>
> > > > > I've defined a hasMany relationship in the patient model as such:
>
> > > > > var $hasMany = array(
> > > > >         'Visit' => array(
> > > > >             'order'    => 'Visit.id DESC',
> > > > >             'limit'        => '10'
> > > > >         ),
> > > > >         'M5Symptom' => array(
> > > > >                 'className' => 'M5Symptom',
> > > > >                 'order' => 'M5Symptom.modified DESC',
> > > > >                 'limit' => '25'
> > > > >         )
> > > > >     );
>
> > > > > In the patient view I get the relevant patient data, and the
> > > > > corresponding list of visits, but I get the message, "Undefined
> > > > > index:  M5Symptom" for listing the symptoms. As far as I can tell the
> > > > > model is correct, because the query for the patient view finds and
> > > > > retrieves a list of 25 symptom records exactly as specified in the
> > > > > model. From that I take that the model and controller must be working
> > > > > as expected. Otherwise the query wouldn't be right and/or it wouldn't
> > > > > retrieve the pertinent records. The query that results is EXACTLY what
> > > > > I want.
>
> > > > > That leads me to believe the problem must be in the view.
>
> > > > > Here's the view function in the patient controller:
>
> > > > > function view($id = null) {
>
> > > > >                 $this->Patient->id = $id;
> > > > >                 $this->set('patient', $this->Patient->read());
>
> > > > >         }
>
> > > > > Everything works right up until I try to list the symptoms. Here's the
> > > > > code for listing symptoms in the view:
>
> > > > > echo $html->tableHeaders(array('Symptom','Start Date','End Date',
> > > > > 'Severity'));
>
> > > > > foreach ($patient['M5Symptom'] as $symptom) {
>
> > > > >         echo $html->tableCells(
>
> > > > >         array($symptom['symptom'],
> > > > >               $symptom['start_date'],
> > > > >               $symptom['end_date'],
> > > > >               $symptom['severity'],
> > > > >         )
> > > > >         );
>
> > > > > }
>
> > > > > I've looked at all of this over and over and I just can't find out why
> > > > > 'M5Symptom' is undefined. Just above this, 'Visit' lists recent visit
> > > > > dates for me with the exact same logic in place.
>
> > > > > Am I wrong in assuming I can define more than one hasMany? If so, why
> > > > > is the correct query generated? I'm hoping another set of eyes will
> > > > > find what I'm missing. Sleeping on it didn't help.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to