Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> FOR - pętla w pętli?
emajl22
post
Post #1





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Witam,

Czy jest możliwość użycia pętli for w pętli for? Dokładniej chodzi mi o coś takiego:

  1. for ( $i=0;$i<$n; $i++ ) {
  2. for ( $i; $i < $drd_value; $i++ ) {
  3. cos( $zmienna[$i],$zmienna,$zmienna2 );
  4. }


Chciałbym, żeby skrypt działał tak:

1. wypełnij pola formularza (jest tam input "ilość", które się zwie drd_value)
2. wybierz plik (.txt)
3. wyciągnij dane z pliku (explode)
4. zrób coś $drd_value razy, do $zmienna[$i] (patrz pkt. 3) razy.

Kurfa, ciężko to wytłumaczyć biggrin.gif Dwa pytania jeszcze:

1. Czy konieczne jest używanie zmiennej $i w FOR, czy można też inaczej?
2. Mam plik .txt, w którym mam coś takiego:

  1. nazwa1
  2. nazwa2
  3. nazwa3


Jak z niego wyciągnąć nazwy, używając explode?

Z góry dzięki za odpowiedzi.

Ten post edytował emajl22 8.01.2011, 12:40:24


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


nie wiem za bardzo co próbujesz zrobić ale:

- tak, można używać pętli w pętli
- nie, nie musi to być koniecznie $i, w pierwszej części deklarujesz zmienne, może to być np.:

  1. for ( $currentRow=0, $allRows = 25;$currentRow<$allRows; $currentRow = $currentRow + 5 )


http://php.net/manual/en/control-structures.for.php
Go to the top of the page
+Quote Post
nmts
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

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


Cytat(emajl22 @ 8.01.2011, 12:38:50 ) *
1. Czy konieczne jest używanie zmiennej $i w FOR, czy można też inaczej?


No bez jaj, tak trudno sprawdzić?


--------------------
Free Web Tools - narzędzia dla programistów, webdeveloperów i specjalistów seo...
Go to the top of the page
+Quote Post
emajl22
post
Post #4





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Cytat(nmts @ 8.01.2011, 12:54:07 ) *
No bez jaj, tak trudno sprawdzić?

Żebyś wiedział dry.gif

A jak z tym explode jest? (patrz pkt. 2)

Ten post edytował emajl22 8.01.2011, 12:59:45


--------------------
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


a po co explode, skoro możesz zapisać do tablicy funkcją http://php.net/manual/en/function.file.php

a z explode to by było:
  1. $lines = explode( "\n", $string );
Go to the top of the page
+Quote Post
emajl22
post
Post #6





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Tak coś właśnie czułem, dzięki tehaha.

Jeszcze potrzebuję wskazówki odnośnie głównego pytania w temacie. Dokładnie mam coś takiego:

  1. if (is_uploaded_file( $drd_file_database)) {
  2. $fp = fopen( $drd_file_database,"rb" );
  3. $fp_file = fread( $fp,filesize( $drd_file_database ));
  4. $fp_file = explode( ",", $fp_file );
  5. fclose( $fp );
  6. $n = count( $fp_file );
  7.  
  8. for ( $i=0;$i<$n; $i++ ) {
  9. for ( $i; $i < $drd_value; $i++ ) {
  10. mail( $fp_file[$i],$drd_title,$drd_msg,$drd_contents );
  11. }
  12. }
  13. }


W formularzu mam plik "Ilość powtórzeń", jest to zwykły input. Wprowadzam do niego jakąś wartość (np. 5) i chciałbym, żeby skrypt wysyłał po 5 sztuk mejli do każdego z wrzuconego pliku także poprzez formularz. To akurat działa, jednak wysyła po 1 sztuce dla każdego.

Nie chciałem walić prosto z mostu, bo zaraz będziecie mi wypominali o spamowanie mellow.gif

Jakieś wskazówki?

Ten post edytował emajl22 8.01.2011, 13:11:17


--------------------
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


1. nie możesz w taki sposób używać do 2 pętli tych samych zmiennych, bo druga pętla zmienia wartość $i, pomyśl, chcesz żeby pierwsza pętla zwiększała bo każdym obiegu $i o 1, ale wewnątrz pętli odpalasz drugą, która np. dla $drd_value = 5, zwiększy $i do 5 i pewnie dlatego Ci przeskakuje, przeanalizuj to co zrobiłeś i popraw
2. możesz mieć problem z realizacją większej wysyłki bo serwery mają limity np. na linuxpl "Dobowy limit wysłanych maili wynosi 4000(cztery tysiące). Częstotliwościowy natomiast to 300maili/15minut.", więc do większej wysyłki musisz zaprzęgnąć crona
Go to the top of the page
+Quote Post
emajl22
post
Post #8





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Raczej o limity się nie martwię, bo nie chcę wysyłać takich dużych ilość mejli. Mam pewien ciekawy pomysł, do którego potrzebuję nie więcej niż 5-7 sztuk mejli. Więc ok, ale dzięki za informację.

Dziwna sprawa.. zmieniłem pierwszą pętlę na iksy, to teraz działa, ale wysyła tylko do pierwszej pozycji z pliku happy.gif
  1. for ( $x=0;$x<$n; $x++ ) {
  2. for ( $i; $i < $drd_value; $i++ ) {
  3. mail( $fp_file[$x],$tytul,$tresc,$naglowki );
  4. }
  5. }

Już siły do tego nie mam, proszę o pomoc.

Ten post edytował emajl22 8.01.2011, 13:24:03


--------------------
Go to the top of the page
+Quote Post
tehaha
post
Post #9





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


w drugiej pętli nie ustawiłeś wartości do $i, poza tym też nie widzę deklaracji wartości $drd_value
Go to the top of the page
+Quote Post
emajl22
post
Post #10





Grupa: Zarejestrowani
Postów: 273
Pomógł: 21
Dołączył: 28.11.2010

Ostrzeżenie: (10%)
X----


Ojej, nie wiedziałem, że trzeba ustawiać wartości w pętlach dla inicjalizacji zmiennych sciana.gif
Zmienną $drd_value wcześniej ustawiłem.

Oczywiście skrypt już działa smile.gif
Dzięki wielkie tehaha.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 04:52