Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usunięcie elementu tablicy
Forum PHP.pl > Forum > Przedszkole
Marr
Witam, mam taki problem - potrzebuje usunąc element talbicy i nie wiem za bardzo jak:
pobieram zawartość komórki z bazy w postaci np. 22;12;34;1;23 - numerki oznaczaja id uzytkowników, następnie muszę usunąć id użytkownika, który aktualnie jest zalogowany więć exploduje ten string do tablicy i przeglądam foreachem i teraz mam if'a czy aktualny numerek jest taki sam jak zalogowane id .... i co teraz? snitch.gif Początek mojego kodu wygląda tak:
  1. <?php
  2. $pobierz_upr2 = mysql_query("SELECT * FROM uprawnienia WHERE akcja='$akcja'");
  3.                $wynik_upr2 = mysql_fetch_assoc($pobierz_upr2);
  4.                $lista_usr = explode(';',$pobierz_upr2['users']);
  5.                foreach ( $lista_usr as $userek)
  6.                    if ( $userek == $getid){
  7. ?>


pomoże mi jakaś mądra głowa?
wookieb
Do usuwania użyj unset.
Marr
no tak ale tu chyba nie wiem jaki indeks ma element który mam usunąć, nie? czy wiem?
wookieb
...
Kod
$ile=count($tab);
for($i=0;$i<$tab;$i++)
{
if($tab[$i]['id']=='dsfsf')
{
    unset $tab[$i];
break;
}
}
Marr
Wielkie dzięki, na pewno mi się przyda i zaraz zabieram się za kombinowanie, ale czy nie powinno być?
  1. <?php
  2. $ile=count($tab);
  3. for($i=0;$i<$ile;$i++)
  4. ?>


Cytat(wookieb @ 23.09.2008, 09:49:53 ) *
...
Kod
$ile=count($tab);
for($i=0;$i<$tab;$i++)
{
if($tab[$i]['id']=='dsfsf')
{
     unset $tab[$i];
break;
}
}
nospor
powinno winksmiley.jpg

A najlepiej powinno byc foreach. Mieszanie do tego for jest zbedne. Zobacz w manualu jak w foreach dostac index
Marr
takie coś powinno działać? wydaje mi się, że powinno a nie działa ;/
  1. <?php
  2. $pobierz_upr2 = mysql_query("SELECT * FROM uprawnienia WHERE akcja='$akcja'");
  3.                $wynik_upr2 = mysql_fetch_assoc($pobierz_upr2);
  4.                $lista_usr = explode(';',$pobierz_upr2['users']);
  5.                foreach ( $lista_usr as $i=>$userek){
  6.                    if ($userek == $getid){
  7.                    unset ($lista_usr[$i]);
  8.                    }
  9.                    }
  10. ?>


czy to nie jest tak przypadkiem, że foreach operuje na kopiach zmiennych z tablicy ?
wookieb
Wyświetl sobie $usere i $getid i zobacz dlaczego nie sa takie same.
nospor
to powinno dzialac, tylko mam nadzieje ze zdajesz sobie sprawe, iz to usuwa tylko z tablicy a nie z tabeli mysql ?
Marr
hehe jasne, że tak... tzn działa to tyle, że coś nie w ten sposób jak sobie wymyśliłem... otóż w formularzu mam generowaną listę uprawnień w formie <input type="checkbox" value="1" name="'.$wynik_uprawnienia['akcja'].'" > a w pliku który wykonuje wszystko sprawdzam checkboxy które mają wartość 1 i tak dopisuje id usera do komórki a w reszcie wykonuje sprawdzanie czy w liscie jest id zalogowanego i jezeli jest to je usuwam... tylko, że to nie działa... mógłbyś rzucić okiem Nospor? Bardzo pomocne są Twoje wypowiedzi... Oczywiście popdpowiedzi innych użytkowników również mile widziane biggrin.gif
  1. <?php
  2. $zapytanie_uprawnienia = mysql_query(&#092;"SELECT * FROM uprawnienia ORDER BY id ASC\");
  3.            while($wynik_uprawnienia = mysql_fetch_assoc($zapytanie_uprawnienia)){
  4.            $akcja = $wynik_uprawnienia['akcja'];
  5.            if ($_POST[$akcja] == &#092;"1\"){
  6.                $pobierz_upr = mysql_query(&#092;"SELECT * FROM uprawnienia WHERE akcja='$akcja'\");
  7.                $wynik_upr = mysql_fetch_assoc($pobierz_upr);
  8.                $newupr = $wynik_upr['users'].';'.$getid;
  9.                $zapytka = &#092;"UPDATE uprawnienia SET users = '\".$newupr.\"' WHERE akcja='$akcja'\";
  10.                $wykonka = mysql_query ($zapytka);                
  11.                }
  12.            else{
  13.                $pobierz_upr2 = mysql_query(&#092;"SELECT * FROM uprawnienia WHERE akcja='$akcja'\");
  14.                $wynik_upr2 = mysql_fetch_assoc($pobierz_upr2);
  15.                $lista_usr = explode(';',$pobierz_upr2['users']);
  16.                foreach ( $lista_usr as $i=>$userek){
  17.                    if ($userek == $getid){
  18.                    unset ($lista_usr[$i]);
  19.                    }
  20.                }
  21.                    $newlist = implode(';',$lista_usr);
  22.                $zapytka2 = &#092;"UPDATE uprawnienia SET users = '\".$newlist.\"' WHERE akcja='$akcja'\";
  23.                $wykonka2 = mysql_query ($zapytka2);    
  24.                    
  25.                    
  26.            }
  27.            }
  28. ?>

jezeli wyedytuje czyjs profil znikaja mi dla niego wszystkie uprawnienia
wookieb
Czy to czasem nie powinny być tak? ;>
Kod
$wynik_upr2 = mysql_fetch_assoc($pobierz_upr2);
                $lista_usr = explode(';',$wynik_upr2['users']); // << wynik_upr2 a nie pobierz_upr2
Marr
faktycznie, to na pewno powinno być tak jak napisałeś, dzięki. Zaraz zobaczę czy to rozwiązuje mój problem.

EDIT: O kurcze, to rozwiązało mój problem! Wielkie dzięki chlopaki, na prawde pomocni jesteście. Dzieki Nospor i Wookieb.
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.