Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: FOR - pętla w pętli?
Forum PHP.pl > Forum > PHP
emajl22
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.
tehaha
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
nmts
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ć?
emajl22
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)
tehaha
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 );
emajl22
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?
tehaha
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
emajl22
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.
tehaha
w drugiej pętli nie ustawiłeś wartości do $i, poza tym też nie widzę deklaracji wartości $drd_value
emajl22
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.
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.