Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Preg_match - Pobieranie zamiowien ze strony i zapis do bazy - problem
Forum PHP.pl > Forum > PHP
bankdirect
Witam

mam taki problem meczy mnie to juz ponad tydzień - wiem ze muszę do tego zastosować funckje preg_match, lecz nie wychodzi mi to za bardzo

posiadam strone z zamowieniami, na ktorej wyswietlane sa zamowienia roznego typu zgrupowane razem np zamowienia techniczne, informatyczne itp - jest ich na stronie ok 10 grup, kazda o roznej ilosci pozycji

chce pobrać dane z tej strony a dokladniej date zamowienia, godzine i id_zamowienia ( te liczby 3,4 cyfrowe ) by później moc raportować z tych danych i tworzyć statystyki

dane chce zapisywać do bazy danych w formie data,godzina zamowienia | nr 1 zam | nr 2 zam | nr 3 zm | itd | nazwa zamowienia


zalezy mi by wyciagnac same liczby z tych divów


  1. <div class="zamowienia">zamowienie z <strong>18.05.2012</strong> godz: <strong>09:05</strong></div>
  2. <div class="zamowienie_techniczne">
  3. <div class="zm_tech">5634</div>
  4. <div class="zm_tech">5635</div>
  5. <div class="zm_tech">5638</div>
  6. <div class="zm_tech">5640</div>
  7. <div class="zm_tech">5643</div>
  8. <div class="zm_tech">5646</div>
  9. <div class="zm_tech">5647</div>
  10. <div class="zm_tech">5648</div>
  11. <div class="zm_tech">5649</div>
  12. </div>
  13. </div>
  14. .
  15. .
  16. .
  17.  
  18. <div class="zamowienia">zamowienie z <strong>22.06.2012</strong> godz: <strong>15:05</strong></div>
  19. <div class="zamowienie_techniczne">
  20. <div class="zm_info">123</div>
  21. <div class="zm_info">124</div>
  22. <div class="zm_info">222</div>
  23. <div class="zm_info">125</div>
  24. </div>
  25. </div>


  1. $fp = file_get_contents("http://www.strona.pl");
  2.  
  3. preg_match('#<div class="zamowienia">([^<]+)</div>?#', $fp, $data); // pobranie daty zlozenia zamowienia
  4.  
  5. $id_zam = array();
  6. for($i=1;$i<10;$i++) {
  7. preg_match('#<div class="zm_tech">([^<]+)</div>?#', $fp, $id);
  8. $id_zam[$i] = $id[1];
  9. }
  10. //echo "<br>$id[9]";
  11. $dodaj = mysql_query("INSERT INTO zamowienia VALUES ('', '$data[1]', '$id[1]', '$id[2]', '$id[3]', '$id[4]', '$id[5]'.........itd.......)");
  12. }


IProSoft
  1. preg_match('#<div class="zamowienia">zamowienie z <strong>([^<]+)</strong> godz: <strong>([^<]+)</strong></div>?#', $fp, $data);
  2. preg_match_all('#<div class="zm_tech">([^<]+)</div>?#', $fp, $id);
  3. print_r($data);
  4. print_r($id);

Jedziesz foreach po $id i wrzucasz do bazy.
Jaką masz strukturę tabeli, bo chyba chcesz coś w stylu:
Kod
INSERT INTO zamowienia VALUES ('', '$data[1]', '$id[1]');

Chyba, że masz stałą liczbę zamówień to możesz trzymać w jednym wierszu choć i tego nie polecam.
bankdirect
czyli cześć ([^<]+) jest odpowiedzialna za konkretne dane które chce pobrać ?
jesli mam stala okreslona liczbe zamowien to moge zastosowac petle for z licznikiem ustawionym na stale?

date i godzine zapisze mi razem w zmiennej $data ?

date pobieram i zapisuje bez problemu - ale z zapisaniem samych nr zamowien mam trudnosc

w bazie zapisuje mi date a w miejscu nr zamowien wartosc "0"

chce zapisac wszystko w jednym wierszu - data | nr zam | nr zam ...


  1. $zam = array();
  2. for($i=1;$i<10;$i++) {
  3. preg_match_all('#<div class="zm_tech">([^<]+)</div>?#', $fp, $liczba);
  4. $zam[$i] = $liczba[1];
  5. }
  6. $dodaj = mysql_query("INSERT INTO lotto VALUES ('', '$data', '$zam[1]', '$zam[2]', '$zam[3]', '$zam[4]', '$zam[5]', .....itd.....')");
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.