PDA

View Full Version : PHP: 1 array being used by multiple loops.


wpeloquin
02-03-2011, 07:12 PM
To start, yes I am a novice at this and am currently learning.

I am having difficulty getting a single array to work in multiple places. i have a table with a list of classes in it, and i pull that into an array. i then want to use the data in that array to make multiple <select> form options. This code that i have works with one <select> but leaves the others blank. If i make 3 arrays, one for each, then it all works. Is it not possible to use just 1 array to knock out some of the redundancy of the code?

here is the code:

$my_classall = $vbulletin->db->query_read("
SELECT class_id, class_name
FROM " . TABLE_PREFIX . "my_table_class AS my_table_class
ORDER BY class_name ASC
");


while ($my_class1 = $vbulletin->db->fetch_array($my_classall))
{
$my_class1_name = $my_class1['class_name'];
eval('$my_class1selector .= " <option value=\"'.$my_class1['class_id'].'\" " . iif($my_toon[class_1]==$my_class1[class_id]," selected=\"selected\"","").">'.htmlspecialchars($my_class1['class_name']).'</option> ";');
}


while ($my_class2 = $vbulletin->db->fetch_array($my_classall))
{
$my_class2_name = $my_class2['class_name'];
eval('$my_class2selector .= " <option value=\"'.$my_class2['class_id'].'\" " . iif($my_toon[class_2]==$my_class2[class_id]," selected=\"selected\"","").">'.htmlspecialchars($my_class2['class_name']).'</option> ";');
}

kh99
02-03-2011, 07:51 PM
I can't say that I know exactly what you want to do because it looks like you're trying to build exactly the same string twice, which seems unnecessary. But I think what you have posted above doesn't work because you're doing the query, looping through the results, then trying to loop through them again (which I don't think will work, I think you'd have to perform the query again).

If you want to have more than one select, why not just use the same string of options for both? Or if the options aren't really supposed to be exactly the same, you could build both strings in the same loop.

wpeloquin
02-04-2011, 09:31 AM
the object, in this case a character, will be able to have up to 3 classes. when a user goes back to edit a character, the <select> option that was input will be the default option, based on the iif statement in the eval. since there are 3 possible classes, there needs to be 3 distinct select menus, even though the menus have the same data.

are you saying that the 3 different name and eval statements can all be put in the same loop? i have not tried that, will try it later today.

kh99
02-04-2011, 11:02 AM
since there are 3 possible classes, there needs to be 3 distinct select menus, even though the menus have the same data.

I see now - my mistake, I missed the "iff" part.

are you saying that the 3 different name and eval statements can all be put in the same loop?

Yeah, that should work.

wpeloquin
02-06-2011, 01:17 AM
Thank you very much :)