Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> IF spełniony za każdym razem w pętli FOR, trudno opisać... zobaczcie sami
tomilipin
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

Ostrzeżenie: (0%)
-----


Cześć!
Natrafiłem na bardzo dziwny problem z pętlą FOR... Może ktoś z Was będzie w stanie mi pomóc. Działanie tej pętli mam już opanowane, widzę że nie zrobiłem w niej błędu (lub błędu nie widzę). Poniższy kod to wycinek skryptu do prostej listy sybskrypcyjnej .

Chodzi o to, że za każdym razem, nie ważne który adres e-mail wpiszę- zostaje usunięty ostatni adres! Poszczególne wpisy mam oddzielone poprzez \n . To dziwne zachowanie pętli FOR i IF polega na tym, że warunek zostaje spełniony za każdym razem, w wyniku czego $usunnumer ma wartość taką, ile razy została wykonana pętla- bo za każdym razem warunek w IFie jest spełniony, i za każdym wykonaniem pętli wykonywana jest także zawartość IFa (IMG:http://forum.php.pl/style_emoticons/default/mad.gif) Próbowałem już przestawiać zmienne $adresy i $adres na różne sposoby, efekt ciągle ten sam lub jeszcze gorszy (warunek nie był spełniony).

Czy ktoś mógłby wskazać, gdzie jest błąd? Zapewne chodzi o malutki błąd logiczny bo składniowych nie mam. Bardzo proszę o pomoc...
Jeśli brakuje jakichś danych- proszę pisać, od razu podeślę na forum brakujący kod.
  1. <?
  2. //sprawdzam co wciśnięto i czy coś wpisano
  3. if ($_POST['usu'] and $_POST['adres']) {
  4. $adres=$_POST['adres']; //dla późniejszego uproszczenia
  5. $adresy = file('lista.adr'); //traktuję plik jako tablicę
  6.  
  7. if (!eregi(&#092;"^.+@.+..+$\", $_POST['adres'])) {
  8. exit(&#092;"Niepoprawny adres e-mail...\");
  9. }
  10. for ($index=&#092;"0\"; $index < count($adresy); $index++) {
  11. if($adresy[$index]=$adres) {
  12. echo &#092;"linijka $index \".$adresy[$index].\"<br>\"; //tylko dla testów
  13. $usunnumer=$index;
  14. }
  15.  
  16. }
  17.  
  18. $plik = file('lista.adr');
  19. unset($plik[$usunnumer]);
  20. $f = fopen('lista.adr', 'w');
  21.  foreach($plik as $linia){
  22.  fputs($f, $linia);
  23.  }
  24. fclose($f);
  25. echo &#092;"Podany adres e-mail został usunięty z listy.\";
  26. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tomilipin
post
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

Ostrzeżenie: (0%)
-----


Niestety to nie to...
Po zmianie, o której piszesz, warunek nie jest spełniony i żadna linijka z pliku nie jest usuwana. Informacja "Podany adres e-mail został usunięty z listy." pojawia się, ale wynika to ze złego kodu, po prostu zawsze pojawi się ten napis jeśli ktoś wciśnie przycisk Usuń, poda jakiś adres i ten adres będzie poprawny.

Czy może gdzieś indziej jest błąd?

--EDIT--
gdy mam taki kod (z jednym znakiem równości):
  1. <?
  2. if($adresy[$index]=$adres) {
  3. echo &#092;"linijka $index \".$adresy[$index].\"<br>\";
  4. $usunnumer=$index;
  5. }
  6.  ?>

i podam "adres3@serwer3.pl" do usunięcia to wyświetla mi:
Kod
linijka 0 adres3@serwer3.pl
linijka 1 adres3@serwer3.pl
linijka 2 adres3@serwer3.pl
linijka 3 adres3@serwer3.pl
linijka 4 adres3@serwer3.pl

...podczas gdy powninny być kolejne adresy zaczynając od 1 do 5. Potem usuwa ostatni wpis- adres 5. Dobrze że wogóle coś wyświetla, ale ciągle usuwa ostatni wpis! A w moim pliku wpis "adres3@serwer3.pl" znajduje się w linijce 3 (licząc od 1, dla php to będzie linijka 2) bo liczy od 0). Jestem normalnie zdesperowany i zdezorientowany, bardzo proszę o pomoc... (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)

Ten post edytował tomilipin 16.11.2004, 18:15:38
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 03:03