Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie/dodawanie wybranego fragmentu w stringu
Forum PHP.pl > Forum > Przedszkole
Bateria
Witam!
Piszę właśnie system który służył by do zarządzania uprawnień użytkowników. Działać będzie on na następującej zasadzie:
Z mysql pobieram uprawnienia użytkownika do postaci stringu
  1. <?php
  2. $uprawnienia = 'dodaj, usun, modyfikuj, zmien';
  3. ?>

Funkcjom strpos sprawdzam, czy użytkownik posiada dane uprawnienie, jeżeli zwraca true wtedy otwiera się odpowiedni panel.

Pozostał mi tylko problem jak zrobić usuwanie i dodawanie uprawnień.
Poszukuję jakiejś funkcji która mogła by mi do stringu:
  1. <?php
  2. $uprawnienia = 'dodaj, usun, modyfikuj,zmien';
  3. ?>

Dokleić jeszcze np: uzytkownicy
I funkcji która może jeszcze usunąć ze stringu np: zmien
Z góry dziękuję za pomoc!
buliq
explode i implode
Bateria
Ale explode o ile usunie to robi mi ze stringu tablice.
buliq
Nie usunie. Dzielisz string na tablice, podział przez ", " następnie usuwasz/dodajesz element i ponownie scalasz przez implode ", "
modern-web
Na to masz tysiące sposobów, zaczynając od podmiany części stringu na inną, a kończąc na explode i implode. Równie dobrze możesz `dokleić` do stringu jakąś wartość - pod warunkiem, że jest to na początku/końcu ciągu za pomocą '.' ale to sprawdzi się tylko przy (jak sam wspomniałeś) dodawaniu uprawnień.
nospor
Skoro dopiero zaczynasz to lepiej zmień sposób przechowywania uprawnień. Żeby za dużo nie mieszać już w Twoim systemie to proponuje ci jedno pole tak jak masz teraz ale nie pole tekstowe a pole liczbowe, a uprawnienia to będą poprostu bity:
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html
Bateria
Ale mimo wszystko zależy mi żeby rozgryźć już to czego się podjąłem, niestety tak nie działa:
  1. <?php
  2. $uprawnienia = 'dodaj,usun,zmien,edytuj,podmien';
  3. $pokaz = explode(',',$uprawnienia);
  4.  
  5. if(in_array('zmien', $pokaz)){
  6. unset($pokaz['zmien']);
  7. }
  8.  
  9. $pokaz = implode($uprawnienia);
  10. echo($pokaz);
  11. ?>
nospor
implode() wymaga dwóch argumentów. Wypadałoby zaglądać do manuala a nie strzelać.

unset($pokaz['zmien']);
to też nie zadziała bo po explode indekasami są liczby a nie wartosci
Bateria
Już lepiej, ale parametr 'zmien' nadal pozostał:
  1. <?php
  2. $uprawnienia = 'dodaj,usun,zmien,edytuj,podmien';
  3. $pokaz = explode(',',$uprawnienia);
  4.  
  5. if(in_array('zmien', $pokaz)){
  6. unset($pokaz['zmien']);
  7. }
  8.  
  9. $pokaz = implode(',',$pokaz);
  10. echo($pokaz);
  11. ?>
nospor
Cytat
ale parametr 'zmien' nadal pozostał:
w poprzednim poście napisałem dla czego smile.gif
Bateria
A da się jakąś funkcją sprawdzić jaka liczba odpowiada wartości 'zmien'?
nospor
zagladaj do manuala. FUnkcja której szukasz jest obok in_array() w see also. Po to został stworzony.
Bateria
Niby działa, ale wolę się upewnić czy wszystko ok:
  1. <?php
  2. $uprawnienia = 'dodaj,usun,zmien,edytuj,podmien';
  3. $pokaz = explode(',',$uprawnienia);
  4.  
  5. $lp = array_search('zmien',$pokaz);
  6.  
  7. if(in_array('zmien', $pokaz)){
  8. unset($pokaz[$lp]);
  9. }
  10.  
  11. $pokaz = implode(',',$pokaz);
  12. echo($pokaz);
  13. ?>
nospor
Pomijająć in_array, które jest niepotrzebne bo robisz już array_search, to jest ok.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.