php - Join two tables and only output rows that exist in the first table -


i'm working on form allows users apply several award categories. can apply several categories, can apply each category once.

the award categories stored in table: enter image description here

when user applies category, row entered following table user's nominee_id , award_category_id: enter image description here

i code show user awards have applied already, works fine.

$result = mysql_query("                                                  select                              award_subsection.*,                             award_subsection.title subsection_title,                             award_nomination_category.*                                                      award_subsection inner join                             award_nomination_category                         on                             award_subsection.id=award_nomination_category.award_category_id                                                     award_subsection.active='1' ,                             award_subsection.award_id='$id' ,                             award_subsection.additional_function='award category' ,                             award_nomination_category.active='1' ,                             award_nomination_category.award_id='$id' ,                             award_nomination_category.nominee_id='$nominee_id'                     ");                     $category_count = mysql_num_rows($result);                     if($category_count > 0) {                         echo'                         <div id="column_full" class="reverse_margin">                             <div id="subsection_heading">                                 <h3>you have selected following award categories:</h3>                             </div><!--                             --><div id="subsection_content">                                 <!--                         ';                         while ($row = mysql_fetch_array($result)) {                             echo '                                     --><div id="column_third">                                         <h3>' . $row['subsection_title'] . '</h3>                                     </div><!--                             ';                         }                         echo'                                     -->                                 </div>                             </div>                         ';                     } 

but problem when want render drop down menu shows categories user have not applied to. following code works user has applied 1 category previously, when user applies more 1, drop down menu displays categories. suspect because since there 2 rows of application same user, script running through table twice , getting of categories.

 $result = mysql_query("                             select      award_subsection.*,     award_subsection.id subsection_id,     award_subsection.title subsection_title,     award_nomination_category.*      award_subsection join     award_nomination_category on     award_subsection.id!=award_nomination_category.award_category_id     award_subsection.active='1' ,     award_subsection.award_id='$id' ,     award_subsection.additional_function='award category' ,     award_nomination_category.active='1' ,     award_nomination_category.award_id='$id' ,     award_nomination_category.nominee_id='$nominee_id' group     award_subsection.id  ");  while($row = mysql_fetch_array($result)) { echo '     <option value="' . $row['subsection_id'] . '">' . $row['subsection_title'] . '</option> ';  } 

is there way php know categories selected in first query , remove them in second query? thx in advance!

i figured out!!

here's code if anyone's interested:

                        // check applied categories                     $result = mysql_query("                                                  select                              award_subsection.*,                             award_subsection.id subsection_id,                             award_subsection.title subsection_title,                             award_nomination_category.*                                                      award_subsection inner join                             award_nomination_category                         on                             award_subsection.id=award_nomination_category.award_category_id                                                     award_subsection.active='1' ,                             award_subsection.award_id='$id' ,                             award_subsection.additional_function='award category' ,                             award_nomination_category.active='1' ,                             award_nomination_category.award_id='$id' ,                             award_nomination_category.nominee_id='$nominee_id'                     ");                     $category_count = mysql_num_rows($result);                     if($category_count > 0) {                         echo'                         <div id="column_full" class="reverse_margin">                             <div id="subsection_heading">                                 <h3>you have selected following award categories:</h3>                             </div><!--                             --><div id="subsection_content">                                 <!--                         ';                         // create array of ids nominee has applied                         $selected_categories = array();                         while ($row = mysql_fetch_array($result)) {                             $selected_categories[] = $row['subsection_id'];                             echo '                                     --><div id="column_third">                                         <h3>' . $row['subsection_title'] . '</h3>                                     </div><!--                             ';                         }                         echo'                                     -->                                 </div>                             </div>                         ';                     }                     echo'                         <form method="post" action="award-nomination-submit.php" data-parsley-validate>                             <div id="column_full" class="reverse_margin">                                                            <input type="hidden" name="award_id" value="' . $id . '">                                 <input type="hidden" name="nominee_id" value="' . $nominee_id . '">                                 <input type="hidden" name="step" value="' . $step . '">                                  <h3>select award category:</h3>                                 <select class="visual_form" name="award_category"  required>                                     <option value="" selected>please select</option>                     ';                     // build award categories drop down                     $result = mysql_query("                                                  select                              *                                                      award_subsection                                                     active='1' ,                             award_id='$id' ,                             additional_function='award category'                     ");                     while($row = mysql_fetch_array($result)) {                         // if id exists in array, don't echo out in drop down                         if(in_array($row['id'], $selected_categories)) {                             echo'';                         }                         else {                             echo '                                 <option value="' . $row['id'] . '">' . $row['title'] . '</option>                             ';                         }                     }                     echo '                                     </select>                                 </div>                     '; 

basically, created array out of ids output first sql query. in second sql query, compared id ids in array , echo out ones doesn't match :)


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -