BarneyJoe Posted December 11, 2006 Share Posted December 11, 2006 I have the following tables :photos (Photo_ID as PK)keywords (Keyword_ID as PK)photokeywords (Photo_ID, Keyword_ID (ints) and Category (text)I have it set up so that users can use checkboxes to add keywords to each photo.The page I'm coming unstuck on is the page where users can edit the existing keyword selection.It's pretty much there with the following code :[code]mysql_select_db($database_Photolibrary, $Photolibrary); $query_Keyword_Match = sprintf("SELECT * FROM photokeywords WHERE Photo_ID = %s", $Photo_ID); $Keyword_Match = mysql_query($query_Keyword_Match, $Photolibrary) or die(mysql_error()); $photokeywords = array(); while ($row_Keyword_Match = mysql_fetch_assoc($Keyword_Match)) { $photokeywords[] = $row_Keyword_Match['Keyword_ID']; } $totalRows_Keyword_Match = mysql_num_rows($Keyword_Match); $sql = "SELECT * FROM Keywords ORDER BY Keyword_ID";$keywordArray = array(); $query = mysql_query($sql); echo('<table>');while ($result=mysql_fetch_assoc($query)) { $keywordArray[$result['Category']][] = $result; } foreach ($keywordArray as $categoryData) { echo('<tr>'); foreach ($categoryData as $keywordData) { echo('<td><input '); if (in_array($keywordData['Keyword_ID'],$photokeywords)) { echo "checked "; } echo('name="ckbox['.$keywordData['Keyword_ID'].']" type="checkbox" class="tickbox2" id="ckbox['.$keywordData['Keyword_ID'].']"></td>'); echo('<td>'.$keywordData['Keyword'].'</td>'); if ($counter==3) { echo('</tr><tr>'); $counter = 0; } else { $counter++; } } echo('</tr>'); echo($categoryData['Category']);} [/code]This shows all the keyword checkboxes correctly, but what I'm trying to do is break them up by Category, ie :Places of Interestcheckbox 1 ; checkbox 2 ; checkbox 3 etcFlora and faunacheckbox 13 ; checkbox 14 ; checkbox 14 etcetcThe closest I've gotten is changing :[code] foreach ($categoryData as $keywordData) { echo('<tr>');echo('<td><input ');[/code]to[code] foreach ($categoryData as $keywordData) { echo('<tr>'.$keywordData['Category']).'</tr>';echo('<td><input ');[/code]But what that does is list the Categories at the top before the checkboxes, rather than the structure described above.Any pointers on exactly how I can slot this in?Hope that makes sense.Cheers,Iain Link to comment https://forums.phpfreaks.com/topic/30224-help-with-array-code/ Share on other sites More sharing options...
utexas_pjm Posted December 11, 2006 Share Posted December 11, 2006 Could you please post what the html looks like that your code is producing under its current setup? Thanks. Link to comment https://forums.phpfreaks.com/topic/30224-help-with-array-code/#findComment-139023 Share on other sites More sharing options...
BarneyJoe Posted December 12, 2006 Author Share Posted December 12, 2006 It currently looks like :[code]<form name="form1" method="POST" action="photoKeywordsEdited.php"><input type='hidden' name='Photo_ID' value='142'><table><tr><td><input checked name="ckbox[2]" type="checkbox" class="tickbox2" id="ckbox[2]"></td><td>Ancient monument</td><td><input checked name="ckbox[3]" type="checkbox" class="tickbox2" id="ckbox[3]"></td><td>Aquarium</td><td><input name="ckbox[4]" type="checkbox" class="tickbox2" id="ckbox[4]"></td><td>Aqueduct / viaduct</td><td><input name="ckbox[5]" type="checkbox" class="tickbox2" id="ckbox[5]"></td><td>Bridge</td></tr><tr><td><input name="ckbox[6]" type="checkbox" class="tickbox2" id="ckbox[6]"></td><td>Castle / fort</td><td><input name="ckbox[7]" type="checkbox" class="tickbox2" id="ckbox[7]"></td><td>Country park</td><td><input name="ckbox[8]" type="checkbox" class="tickbox2" id="ckbox[8]"></td><td>Distillery</td><td><input name="ckbox[9]" type="checkbox" class="tickbox2" id="ckbox[9]"></td><td>Ecclesiastical building</td></tr><tr><td><input name="ckbox[10]" type="checkbox" class="tickbox2" id="ckbox[10]"></td><td>Exhibition centre / conference centre</td><td><input name="ckbox[11]" type="checkbox" class="tickbox2" id="ckbox[11]"></td><td>Garden / park / parkland</td><td><input name="ckbox[12]" type="checkbox" class="tickbox2" id="ckbox[12]"></td><td>Golf course</td><td><input name="ckbox[13]" type="checkbox" class="tickbox2" id="ckbox[13]"></td><td>Historic house</td></tr><tr><td><input name="ckbox[14]" type="checkbox" class="tickbox2" id="ckbox[14]"></td><td>Industrial building</td><td><input name="ckbox[15]" type="checkbox" class="tickbox2" id="ckbox[15]"></td><td>Lighthouse</td><td><input name="ckbox[16]" type="checkbox" class="tickbox2" id="ckbox[16]"></td><td>Model village</td><td><input name="ckbox[17]" type="checkbox" class="tickbox2" id="ckbox[17]"></td><td>Monument / memorial / grave / statue / fountain</td></tr><tr><td><input name="ckbox[18]" type="checkbox" class="tickbox2" id="ckbox[18]"></td><td>Museum / art gallery / heritage centre</td><td><input name="ckbox[19]" type="checkbox" class="tickbox2" id="ckbox[19]"></td><td>National park / forest park / regional park</td><td><input name="ckbox[20]" type="checkbox" class="tickbox2" id="ckbox[20]"></td><td>Notable building (other)</td><td><input name="ckbox[21]" type="checkbox" class="tickbox2" id="ckbox[21]"></td><td>Notable structure (other)</td></tr><tr><td><input name="ckbox[22]" type="checkbox" class="tickbox2" id="ckbox[22]"></td><td>Power station / wind farm</td><td><input name="ckbox[23]" type="checkbox" class="tickbox2" id="ckbox[23]"></td><td>Street scene</td><td><input name="ckbox[24]" type="checkbox" class="tickbox2" id="ckbox[24]"></td><td>Theatre / cinema / concert hall / opera house / art centre</td><td><input name="ckbox[25]" type="checkbox" class="tickbox2" id="ckbox[25]"></td><td>Theme park</td></tr><tr><td><input name="ckbox[26]" type="checkbox" class="tickbox2" id="ckbox[26]"></td><td>University / college</td><td><input name="ckbox[27]" type="checkbox" class="tickbox2" id="ckbox[27]"></td><td>Vineyard</td><td><input name="ckbox[28]" type="checkbox" class="tickbox2" id="ckbox[28]"></td><td>Visitor centre</td><td><input name="ckbox[29]" type="checkbox" class="tickbox2" id="ckbox[29]"></td><td>Water park</td></tr><tr><td><input name="ckbox[30]" type="checkbox" class="tickbox2" id="ckbox[30]"></td><td>Wildlife park / zoo / safari park / farm park</td></tr><tr><td><input name="ckbox[31]" type="checkbox" class="tickbox2" id="ckbox[31]"></td><td>Ball games</td><td><input name="ckbox[32]" type="checkbox" class="tickbox2" id="ckbox[32]"></td><td>Climbing / mountaineering</td><td><input name="ckbox[33]" type="checkbox" class="tickbox2" id="ckbox[33]"></td><td>Crafts</td></tr><tr><td><input name="ckbox[34]" type="checkbox" class="tickbox2" id="ckbox[34]"></td><td>Cycling</td><td><input name="ckbox[35]" type="checkbox" class="tickbox2" id="ckbox[35]"></td><td>Dancing</td><td><input name="ckbox[36]" type="checkbox" class="tickbox2" id="ckbox[36]"></td><td>Fishing</td><td><input name="ckbox[37]" type="checkbox" class="tickbox2" id="ckbox[37]"></td><td>Golf</td></tr><tr><td><input name="ckbox[38]" type="checkbox" class="tickbox2" id="ckbox[38]"></td><td>Horse riding / pony trekking</td><td><input name="ckbox[39]" type="checkbox" class="tickbox2" id="ckbox[39]"></td><td>Music</td><td><input name="ckbox[40]" type="checkbox" class="tickbox2" id="ckbox[40]"></td><td>Paragliding / hang gliding</td><td><input name="ckbox[41]" type="checkbox" class="tickbox2" id="ckbox[41]"></td><td>Sailing</td></tr><tr><td><input name="ckbox[42]" type="checkbox" class="tickbox2" id="ckbox[42]"></td><td>Shopping / shopping centre</td><td><input name="ckbox[43]" type="checkbox" class="tickbox2" id="ckbox[43]"></td><td>Skiing</td><td><input name="ckbox[44]" type="checkbox" class="tickbox2" id="ckbox[44]"></td><td>Swimming</td><td><input name="ckbox[45]" type="checkbox" class="tickbox2" id="ckbox[45]"></td><td>Walking / pathways</td></tr><tr><td><input name="ckbox[46]" type="checkbox" class="tickbox2" id="ckbox[46]"></td><td>Water sports</td></tr><tr><td><input name="ckbox[47]" type="checkbox" class="tickbox2" id="ckbox[47]"></td><td>Aerial view</td><td><input name="ckbox[48]" type="checkbox" class="tickbox2" id="ckbox[48]"></td><td>Beach / bay / cove</td><td><input name="ckbox[49]" type="checkbox" class="tickbox2" id="ckbox[49]"></td><td>Causeway</td></tr><tr><td><input name="ckbox[50]" type="checkbox" class="tickbox2" id="ckbox[50]"></td><td>Cave</td><td><input name="ckbox[51]" type="checkbox" class="tickbox2" id="ckbox[51]"></td><td>Cityscape</td><td><input name="ckbox[52]" type="checkbox" class="tickbox2" id="ckbox[52]"></td><td>Cliff</td><td><input name="ckbox[53]" type="checkbox" class="tickbox2" id="ckbox[53]"></td><td>Coast</td></tr><tr><td><input name="ckbox[54]" type="checkbox" class="tickbox2" id="ckbox[54]"></td><td>Crag / rock / tor</td><td><input name="ckbox[55]" type="checkbox" class="tickbox2" id="ckbox[55]"></td><td>Dune</td><td><input name="ckbox[56]" type="checkbox" class="tickbox2" id="ckbox[56]"></td><td>Estuary / marsh</td><td><input name="ckbox[57]" type="checkbox" class="tickbox2" id="ckbox[57]"></td><td>Farmland</td></tr><tr><td><input name="ckbox[58]" type="checkbox" class="tickbox2" id="ckbox[58]"></td><td>Forest / trees</td><td><input name="ckbox[59]" type="checkbox" class="tickbox2" id="ckbox[59]"></td><td>Hill</td><td><input name="ckbox[60]" type="checkbox" class="tickbox2" id="ckbox[60]"></td><td>Island</td><td><input name="ckbox[61]" type="checkbox" class="tickbox2" id="ckbox[61]"></td><td>Lake / loch / tarn / reservoir</td></tr><tr><td><input name="ckbox[62]" type="checkbox" class="tickbox2" id="ckbox[62]"></td><td>Landscapes (general)</td><td><input name="ckbox[63]" type="checkbox" class="tickbox2" id="ckbox[63]"></td><td>Lava</td><td><input name="ckbox[64]" type="checkbox" class="tickbox2" id="ckbox[64]"></td><td>Limestone pavement</td><td><input name="ckbox[65]" type="checkbox" class="tickbox2" id="ckbox[65]"></td><td>Moor / heathland</td></tr><tr><td><input name="ckbox[66]" type="checkbox" class="tickbox2" id="ckbox[66]"></td><td>Mountain</td><td><input name="ckbox[67]" type="checkbox" class="tickbox2" id="ckbox[67]"></td><td>Peninsula / headland</td><td><input name="ckbox[68]" type="checkbox" class="tickbox2" id="ckbox[68]"></td><td>River</td><td><input name="ckbox[69]" type="checkbox" class="tickbox2" id="ckbox[69]"></td><td>Sea / waves</td></tr><tr><td><input name="ckbox[70]" type="checkbox" class="tickbox2" id="ckbox[70]"></td><td>Valley / gorge / glen</td><td><input name="ckbox[71]" type="checkbox" class="tickbox2" id="ckbox[71]"></td><td>Waterfall</td></tr><tr><td><input name="ckbox[72]" type="checkbox" class="tickbox2" id="ckbox[72]"></td><td>Carnival</td><td><input name="ckbox[73]" type="checkbox" class="tickbox2" id="ckbox[73]"></td><td>Ceremony / pageantry</td></tr><tr><td><input name="ckbox[74]" type="checkbox" class="tickbox2" id="ckbox[74]"></td><td>Fair</td><td><input name="ckbox[75]" type="checkbox" class="tickbox2" id="ckbox[75]"></td><td>Flag / heraldry</td><td><input name="ckbox[76]" type="checkbox" class="tickbox2" id="ckbox[76]"></td><td>Festival</td><td><input name="ckbox[77]" type="checkbox" class="tickbox2" id="ckbox[77]"></td><td>Parade</td></tr><tr></tr><tr><td><input name="ckbox[78]" type="checkbox" class="tickbox2" id="ckbox[78]"></td><td>Bird</td><td><input name="ckbox[79]" type="checkbox" class="tickbox2" id="ckbox[79]"></td><td>Fish</td><td><input name="ckbox[80]" type="checkbox" class="tickbox2" id="ckbox[80]"></td><td>Flower / plant</td><td><input name="ckbox[81]" type="checkbox" class="tickbox2" id="ckbox[81]"></td><td>Insect</td></tr><tr><td><input name="ckbox[82]" type="checkbox" class="tickbox2" id="ckbox[82]"></td><td>Mammal</td><td><input name="ckbox[83]" type="checkbox" class="tickbox2" id="ckbox[83]"></td><td>Reptile</td><td><input name="ckbox[84]" type="checkbox" class="tickbox2" id="ckbox[84]"></td><td>Tree / shrub</td><td><input name="ckbox[85]" type="checkbox" class="tickbox2" id="ckbox[85]"></td><td>Amphibian</td></tr><tr><td><input name="ckbox[86]" type="checkbox" class="tickbox2" id="ckbox[86]"></td><td>Fungus</td></tr><tr><td><input name="ckbox[87]" type="checkbox" class="tickbox2" id="ckbox[87]"></td><td>Bus</td><td><input name="ckbox[88]" type="checkbox" class="tickbox2" id="ckbox[88]"></td><td>Canal</td><td><input name="ckbox[89]" type="checkbox" class="tickbox2" id="ckbox[89]"></td><td>Car / taxi</td></tr><tr><td><input name="ckbox[90]" type="checkbox" class="tickbox2" id="ckbox[90]"></td><td>Ship / boat / ferry / harbour</td><td><input name="ckbox[91]" type="checkbox" class="tickbox2" id="ckbox[91]"></td><td>Road / road sign</td><td><input name="ckbox[92]" type="checkbox" class="tickbox2" id="ckbox[92]"></td><td>Train / railway</td></tr><tr><td><input name="ckbox[93]" type="checkbox" class="tickbox2" id="ckbox[93]"></td><td>Autumn</td></tr><tr><td><input name="ckbox[94]" type="checkbox" class="tickbox2" id="ckbox[94]"></td><td>Bore</td><td><input name="ckbox[95]" type="checkbox" class="tickbox2" id="ckbox[95]"></td><td>Night</td><td><input name="ckbox[96]" type="checkbox" class="tickbox2" id="ckbox[96]"></td><td>Rain</td><td><input name="ckbox[97]" type="checkbox" class="tickbox2" id="ckbox[97]"></td><td>Sky / cloud</td></tr><tr><td><input name="ckbox[98]" type="checkbox" class="tickbox2" id="ckbox[98]"></td><td>Snow / ice</td><td><input name="ckbox[99]" type="checkbox" class="tickbox2" id="ckbox[99]"></td><td>Spring</td><td><input name="ckbox[100]" type="checkbox" class="tickbox2" id="ckbox[100]"></td><td>Summer</td><td><input name="ckbox[101]" type="checkbox" class="tickbox2" id="ckbox[101]"></td><td>Sunrise / sunset</td></tr><tr><td><input name="ckbox[102]" type="checkbox" class="tickbox2" id="ckbox[102]"></td><td>Winter</td></tr></table><table> <tr> <td> <input type="submit" name="Submit" value="Update Photo Keywords"> <input type="reset" name="Reset" value="Reset form"> </form></td> </tr> </table>[/code]Bit messy, as there are so many checkboxes.They're basically split into 7 categories :Places of Interest; Activities / Sports and crafts; Physical features / landscapes; Events; Flora and Fauna; Transport and Travel; Weather and Seasons.I had originally thought at least they were correctly going to a new row for each category, but looking at it again, it seems sometimes they so and sometimes they don't :Places of Interest / Buildings :correctly goes to new row after 'Wildlife park / zoo / safari park / farm park'.Activities / Sports and crafts :incorrectly goes to a new row after 'Crafts' (3 of 4)correctly goes to new row after 'Water sports'Physical features / landscapes :incorrectly ges to new row after 'Causeway' (3 of 4)correctly goes to new row after 'Waterfall'Events :incorrectly goes to new row after 'Ceremony / pageantry' (2 of 4)correctly goes to new row after 'Parade'Flora and Fauna :correctly goes to new row after 'Fungus'Transport and travel :incorrectly goes to new row after 'Car / taxi' (3 of 4)correctly goes to new row after 'Train/railway'Weather and seasons :incorrectly goes to new row after 'Autumn' (1 of 4)I have no idea why it is going to a new row in some cases where the category isn't changing.Any clues? Link to comment https://forums.phpfreaks.com/topic/30224-help-with-array-code/#findComment-139557 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.