Merhaba; 

@ÖmerGünay  'ın yazdıgı gibi sadece php ile yapılan kısımda input/göster gizle olayı yapılmaz, işinizi görecekse tabiki de kullanılır. Diğer sorun için projeyi görmeden fikir üretmek çözüme kavuşturmayabilir, aşağıdaki kodu deneyebilir misiniz?  Eğer olmaz ise iftardan sonra bir tw id atarsanız inceleyebiliriz.

                           <?php 
  if($_POST) 
  {
    
    // 
    
    for ($i=1; $i < 21 ; $i++;) 
    {
      
          if(isset($_POST["category$i_nam"]))
          {
          
            if($_POST["category$i_nam"]!="Diger")
            {
              $secilen_cat.$i=$_POST["category$i_nam"]; 
            }
            
            else if($_POST["category$i_nam"]=="Diger" AND $secilen_cat.$i=$_POST["ozel_$i"]=="") 
            {
              $secilen_cat.$i=$_POST["category$i_nam"]; 
            }
            
            else if($_POST["category$i_nam"]=="Diger" AND $secilen_cat.$i=$_POST["ozel_$i"]!="") 
            {
              $secilen_cat.$i = $_POST["ozel_$i"]; 
            }
           $sorgu = "UPDATE table_categories SET 
      
      category1_num=:category1_num, 
      category2_num=:category2_num, 
      category3_num=:category3_num, 
      
      category1_nam=:category1_nam, 
      category2_nam=:category2_nam, 
      category3_nam=:category3_nam 
      
      WHERE 
      company_id=:company_id";
        $stmt = $connn->prepare($sorgu);
      
      $category1_num=htmlspecialchars(strip_tags($_POST["category1_num"])); 
      $category2_num=htmlspecialchars(strip_tags($_POST["category2_num"])); 
      $category3_num=htmlspecialchars(strip_tags($_POST["category3_num"])); 
      
      // $category1_nam=htmlspecialchars(strip_tags($_POST["category1_nam"])); 
      $category1_nam=$secilen_cat1; 
      
      // $category2_nam=htmlspecialchars(strip_tags($_POST["category2_nam"])); 
      $category2_nam=$secilen_cat2; 
      
      // $category3_nam=htmlspecialchars(strip_tags($_POST["category3_nam"])); 
      $category4_nam=$secilen_cat3; 
      
      // 
      
      $stmt->bindParam(":category1_num", $category1_num); 
      $stmt->bindParam(":category2_num", $category2_num); 
      $stmt->bindParam(":category3_num", $category3_num); 
      
      $stmt->bindParam(":category1_nam", $category1_nam); 
      $stmt->bindParam(":category2_nam", $category2_nam); 
      $stmt->bindParam(":category3_nam", $category3_nam); 
      
      $stmt->bindParam(":company_id", $company_id); // !!!
      
      // 
      
          }
    }
    
    // 
    
    try
    {
      
      // 
 
    
      if($stmt->execute())
      {
        header("Location: kategori_listesi.php/?islem=guncellendi"); 
      }
      
      // 
      
      else
      {
        echo "  
              <div class='alert alert-danger'>
                Güncellenemedi!
              </div>
            ";
      }
      
      // 
      
    }
    
    // 
    
    catch(PDOException $exception)
    {
      die("HATA: " . $exception->getMessage());
    }
    
    // 
    
  }
?>