Jump to content

Help with array code


BarneyJoe

Recommended Posts

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 Interest

checkbox 1 ; checkbox 2 ; checkbox 3 etc

Flora and fauna

checkbox 13 ; checkbox 14 ; checkbox 14 etc

etc

The 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

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.