Insert date din feed cu php in mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje: 501

Insert date din feed cu php in mysql

Buna ziua,
am un script php care imi selecteaza din baza de date de pe un alt server niste informatii si eu as dori sa stiu cum pot sa le preiau si sa le introduc la mine in bd.
Adica scriptul imi preia

Cod: Selectaţi tot

link_produs -- link_img -- pret
iar eu vreau ca informatiile repective sa le introduca la mine in bd.
Am ceva ideie dar nu stiu cum sa il codific.
Daca am puteti ajuta cu ceva idei.
Astept raspuns.
Multumesc anticipat.
Cu stima Trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo
Salut
Depinde in ce structura sunt acele date adaugate in feed, ce format, cum sunt separate intre ele.
La modelul dat de tine se aplica explode() ca sa separi acele date in elementele unui array; uite un exemplu:

Cod: Selectaţi tot

$str = 'link_produs -- link_img -- pret';
$str_ar = array_map('trim', explode('--', $str));
$sql = "INSERT INTO tabel (produs, img, pret) VALUES ('". $str_ar[0] ."', '". $str_ar[1] ."', '". $str_ar[2] ."')";
// efectueaza insert-ul ...  

trif
Buna seara,
Am reusit sa fac asta:

Cod: Selectaţi tot

$lines = file_get_contents("http://site.ro/feed.php");
$arr = explode("|", $lines);
//var_dump($arr);
echo $arr[6]; link_produs
echo $arr[7]; link_img
echo $arr[8]; pret
echo '<br>';
echo $arr[18];
echo $arr[19];
echo $arr[20];
si imi aprare ceea ce am nevoie.
Cum pot sa fac ca sa imi exact ceea ce imi trebuie. nu pot sa le dau 6,7,8, 18, 19, 20, etc.
Astept raspuns.
Cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo
Depinde cum e structura acelui feed. Daca datele sunt ordonate pe linii si separate prin "|", sau separate intr-un singur sir lung.

trif
Buna seara, acum nu stiu cum sa zic ca sunt ordonate ci stiu ca sunt separate cu bara respectiva |.
In privat ti-am trimis un link ca exemplu ca sa nu dau aici un link ca sa fac reclama.

Cu stima Trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo
Din ce am vazut, feedul e cam diversificat. Are 2 feluri de separatori ">" si "|", plus cod html; structurate pe randuri.
Ca idee, poti folosi functia file() ca sa adaugi randurile intr-un array, le parcurgi cu for() si aplici explode() si Insert la fiecare.
Uite un exemplu din care te poti inspira.
Continut feed.txt

Cod: Selectaţi tot

abc | 123 | a1b
mno | 567 | m5o
xyz | 890 | x8z
Cod php

Cod: Selectaţi tot

$feed_ar = file('feed.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nr_feed = count($feed_ar);
for($i=0; $i<$nr_feed; $i++) {
  $feed_row = array_map('trim', explode('|', $feed_ar[$i]));
  echo '<br>'. $feed_row[0] .' / '. $feed_row[1] .' / '. $feed_row[2];
} 

trif
Buna seara,
am reusit intr-un fel sa fac dar am intampinat o alta problema.
am rezultatele asa:

Cod: Selectaţi tot

aaaaaaa| bbbbbbbb | ccccccccccc | dddddddd| eeeeeeee|
aaaaaaa1| bbbbbbbb1 | ccccccccccc1 | dddddddd1| eeeeeeee1|
aaaaaaa2| bbbbbbbb2 | ccccccccccc2 | dddddddd3| eeeeeeee2|
aaaaaaa3| bbbbbbbb3 | ccccccccccc3 | dddddddd3| eeeeeeee3|
acestea sunt rezultatele care imi iasa din feed iar problema este urmatoarea:
cum fac ca sa ignore anumite informatii si sa mi le preia doar pe unele:
cam asa:

Cod: Selectaţi tot

bbbbbbbb | ccccccccccc | dddddddd| 
 bbbbbbbb1 | ccccccccccc1 | dddddddd1|
 bbbbbbbb2 | ccccccccccc2 | dddddddd3| 
bbbbbbbb3 | ccccccccccc3 | dddddddd3| 
Deoarece am nevoie doar de anumite informatii dintr-un rand.
M-am tot gandit ca ar putea fi cu array sa le spun ca

Cod: Selectaţi tot

array[2] |array[3]|array[4]|
array[7] |array[8]|array[9]|
array[12] |array[13]|array[14]|
dar nu stiu sa fac si sa stie care este pasul cate sa ia si pe care.
Asta cu array este una dar daca se poate si prin while ar fi si mai bine.
Cred ca este o problema cam grea si daca se poate sa ma ajutati.
Astept raspuns.
Multumesc anticipat.
Cu stima Trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo
Din exemplu dat de tine, daca vrei sa pastrezi a 2-a, a 3-a si a 4-a parte din separarea cu "|" de la fiecare rand, merge simplu asa:

Cod: Selectaţi tot

$feed_ar = file('adresa_feed', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$nr_feed = count($feed_ar);
for($i=0; $i<$nr_feed; $i++) {
  $feed_row = array_map('trim', explode('|', $feed_ar[$i]));
  echo '<br>'. $feed_row[1] .' / '. $feed_row[2] .' / '. $feed_row[3];
}
Daca e vorba de altceva, trebuie sa ai anumite criterii exacte /simetrice prin care sa pastrezi unele date sau sa excluzi, dupa o anumita structura logica sau tipar RegExp.
In cazul ala nu te pot ajuta fiindca poate fi prea dificil daca nu e un format logic simetric la toate randurile, si nu ma implic mai mult.

trif
Buna ziua,
Merge perfect.
Multumesc pentru ajutor.
Cu stima Trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

Subiecte similare