Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]curl i update

Napisany przez: casperii 17.10.2018, 19:31:28

Panowie mam kod:

  1. $pdo = new db_connect();
  2. $sql = $pdo->prepare('SELECT * FROM `auta` WHERE `pid` > 0 AND `pid` < 99999 ORDER BY `pid` ASC LIMIT 250');
  3. $sql->execute();
  4. $ile = $sql->rowCount();
  5. $dodajID = '';
  6. $data = '';
  7.  
  8. while ($row = $sql->fetch()) {
  9. $dodajID .= $row['pid'].';'; //zbieramy ID auta
  10. $OldDate[] .= $row['data'].',';
  11. }


zebrane ID następnie przekazuje do CURLA:

  1. $url = 'https://www.blaeeabla.pl/get&id='.$dodajID;
  2. $ch = curl_init();
  3. curl_setopt($ch, CURLOPT_URL,$url);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  5. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  6. curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
  7. $output = curl_exec($ch);
  8. curl_close($ch);


powyższy CURL wyświetla mi listę aut wg. ID ASC, więc sobie je przeszukuje przez preg_match_all

  1. http://www.php.net/preg_match_all("/<td class='auto_id'>(.*?)<\/td>/", $output, $id_auto);
  2. http://www.php.net/preg_match_all("/<td class='data'>(.*?)<\/td>/", $output, $getData);
  3. for($i = 0; $i < $ile; $i++){
  4. $pid = http://www.php.net/strip_tags($id_auto[0][$i]);
  5. $data = http://www.php.net/strip_tags($getData[0][$i]);
  6.  
  7. if($data != ''){
  8. $addDate = $data;
  9. }else{
  10. $addDate = $OldDate[$i];
  11. }
  12.  
  13. try{
  14. $pdo = new db_connect();
  15. $sqlUpd = $pdo->prepare('UPDATE `auta` SET `data` = :data WHERE `pid` =:pid LIMIT 1');
  16. $sqlUpd->bindValue(':pid', $pid, PDO::PARAM_INT);
  17. $sqlUpd->bindValue(':data', $data, PDO::PARAM_INT);
  18. $sqlUpd->execute();
  19. } catch(PDOException $e) {
  20. http://www.php.net/echo 'Błąd: ' . $e->getMessage();
  21. }
  22. http://www.php.net/echo $i. ' - ' .$pid.' - '. $data .'
  23. }


Natomiast w przypadku gdy nie ma daty i ma zostać przypisana data która była wcześniej to pojawia się problem. Pętla for sortuje sobie wyniki w innej kolejności niż zostały wyświetlone / dodane w CURLu.
Może ktoś pomóc jak zmusić pętle for do ustawienia wyników w innej kolejności ? Ewentualnie jak przerobić zapytanie by w razie gdy w liście nie ma daty ($data !='') nie zostało tylko to pole updatowane ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)