Ben aşağıdakileri yapmak için bir form inşa ediyorum:
- MySQL çekerek, kullanıcılar ve izinler bir tablo yazdırın. Bir kullanıcının sahip olduğu her izin bir kontrol kutusu ve onlar eksikliği her biri bir denetlenmeyen kutudur.
- Izinleri vermek veya çıkarmak için onay kutularını ve işaretini kaldırın bir yönetici izin verin.
- Form gönderildiğinde, izinlerini belirli değişiklikleri vurgulayarak, değişmiş olacak SADECE kullanıcıları ile onay sayfasını gösteriyor.
- Değişiklikleri teyit edildiği zaman, buna göre veritabanı değiştirebilirsiniz.
Bunu yapmak için, ben kullanıcı izinleri iki dizileri oluşturma: ne veritabanı gösterileri göre birini, ve ne formu gösterir göre birini.
Bir kullanıcı MySQL bir izni yoksa, bir 0 olarak gösterilir. Onlar form gönderme iznini eksikliği varsa, bu sadece mevcut olmayacaktır.
İşte dizilerin iki basit örnek:
Database array
[User1] => Array ([public] => 1 [private] => 1 [secret] => 1 ) [User2] => Array ([public] => 1 [private] => 0 [secret] => 0 )
Form submission array (revoking "secret" from User1 and giving it to User2)
[User1] => Array ([public] => 1 [private] => 1 ) [User2] => Array ([public] => 1 [secret] => 1 )
Question
: Nasıl elegantly combine these two arrays, bir "değişiklik" dizisi, öyle ki yapmak yapabilirsiniz
- Hem de aynı izinlere sahip kullanıcılar atlandı
- Kamu, özel ve gizli - - 0 veya 1 olarak ayarlandığında kalan kullanıcıların tüm izinlere sahip.
- Bu form gönderme dizide olsaydı form gönderme dizi ve 1 eksik ise her izin 0'dır
Örneğin, yukarıda birleştirerek vermek istiyorum:
[User1] => Array ([public] => 1 [private] => 1 [secret] => 0 ) [User2] => Array ([public] => 1 [private] => 0 [secret] => 1 )
Attempts so far
- İlk adım olarak, ben onlar farklıydı veritabanı dizi üzerine yazmak düşünerek, ikinci listelenen formlar dizisi ile () array_merge kullanarak denedim. Bunun yerine, farklı unsurları silindi.
- Ben iki diziyi karşılaştırmak için bir foreach () deyimi kurma denedim, ancak bu karmaşık oluyor, ve ben basit bir yolu var olmalıdır düşünüyorum
UPDATE
Yaşasın! Yeni bir cevap Bu eski soruya dikkat çekti. Ben bu çalışma var, ama daha sonra bu çılgın kodu hurdaya - bu yol çok geri gitmek ve çalışmak için karışıktı. Bunun yerine, ben üzerinden değişiklikleri göndermek için bir AJAX ön uç yazdı, sonra bir anda bir izni değiştirmek için bir PHP arka uç bir senaryo yazdı. Çok basit kod ve değişiklikler kullanıcı için anlık vardır. Bir vurgulamak etkisi, ne değişti yaklaşık on-sayfa geri bildirim anında verir.