Pobranie zdjęcia z linku, zapisanie go do pliku, wpis do bazy danych,

0

Dzień dobry

Smęcę się ostatnio z mały problemem w moim przypadku braku logiki, jak wykonać skrypt, który pobierze zdjęcie z podanego URL zapisze je do folderu, i od razu utworzy URL z dostępem do pobranego i zapisanego zdjęcia wstawiając ten właśnie URL do MySQL.

0
$link = 'http://strona.pl/pliki/zdjecie.jpg';
$nazwa_do_zapisu = 'zdjecia/zdjecie001.jpg';
file_put_contents($nazwa_do_zapisu, file_get_contents($link));
$link_pelny = 'http://twojadomena.pl/'.$nazwa_do_zapisu;
// i link pełny do bazy

mam dziwne wrażenie, że masz jakiegoś gotowca i liczysz na metodę kopiego-pasty teraz.
Bo w czym masz problem? z pobraniem pliku? z zapisaniem pliku? z zapisaniem do bazy danych?

0

Tam jest napisane z innym nickiem dla tego ze pisałem z tabletu w pracy a nie miałem loginu i hasła.

Nie nie mam żadnego gotowca tylko problem jest w tym, nie wiem jak to dobrze napisać tak aby ktoś mnie zrozumiał.
Mam plik XML w którym mam 19000 wpisów "Nazwa Kod Zdjęcie" te najpotrzebniejsze ich oczywiście jest kupa więcej, przez ostatnie dni(a sporo ich było) studiowałem jak dane wydobyć z tego XML wpisać to co chcę w odpowiednie zmienne i wstawić do MySQL. Poza zdjęciami gdzie okazało się ze są to linki zawierające połowę tylko wpisu (połowę URL)
np

WYCINEK z XML

<produkt id="AGDROWSUS0050" nazwa="Suszarka do włosów ROWENTA Moveling CV 4312 (1500W)" producent="ROW" grupa="AGD-SUS" gwarancja="F024M" cena_netto="36.33" vat="23" magazyn_zewnetrzny="N" dostepny="ponad 30" data="2013-01-31" na_zamowienie="N" oferta_specjalna="N" ostatnia_zmiana="2013-02-25" mala_paleta="N" large="N" raportowany="T"> <zdjecia> <zdjecie plik="/Pictures/AGD/SUS/AGDROWSUS0050/1.jpg" domyslne="1" data="2013-02-15" /> <zdjecie plik="/Pictures/AGD/SUS/AGDROWSUS0050/2.jpg" domyslne="0" data="2013-02-15" /> <zdjecie plik="/Pictures/AGD/SUS/AGDROWSUS0050/3.jpg" domyslne="0" data="2013-02-15" /> </zdjecia>

Teraz w miejsce x wstawiam drugą połowę linku która prowadzi do zdjęcia, ono się pobiera i zapisuje u mnie na dysku , zacząłem więc przyglądać się jak zrobić upload na serwer, i prawie się udało, lecz do bazy danych gdzie znów są czary mary nie dodaje wpisu w postaci ścieżki do zapisanego zdjęcia. Może i problemu by nie było gdyby
to nie było tak że wpis z linkiem ma trafić do jednej bazy biorąc dane z drugiej na podstawie ID produktu z wpisu a ID które przydzieliła mu 1 baza te same ID wpisane jest jako dodatkowe ID w bazie drugiej gdzie tylko są linki do zdjęć. Dość prosto to opisałem

0

Dość prosto to opisałem

Ale po pierwszym przeczytaniu niewiele z tego zrozumiałem.

Daj kod jaki masz.

0

Dzień Dobry
Mój skrypt wygląda tak

 
<?php

$xml = simplexml_load_file('plik1.xml');

$con = mysql_connect('localhost', 'root', '');
mysql_select_db('sklep');


foreach($xml->produkty->produkt as $produkt){



   foreach($produkt->zdjecia->zdjecie as $zdjecie){
   
   $fotka = $zdjecie['plik'];
   
   
   }
   echo "<table><tr>";
   echo "<td>". $fotka ."</td>";
   echo "<td>". $link ."</td>";
   echo "</tr></table>";
   $link = 'http://cdn.action.pl/Picture.aspx?CID=41615&UID=damian&PID=167730eccfa10a0adf3f2073d2253db5&P='. $fotka .'' ;
  
   
  $sciezka = $link;
  $sciezka_zapisu = 'images/produkt/';  MAM TAKA SCIEZKE
  $pobranie = file_get_contents($link);
  file_put_contents($sciezka_zapisu , $pobranie); <-ta linia jest 29
  
 
}
 
 
?>

Warning: file_put_contents(images/produkt/): failed to open stream: No such file or directory in C:\xampp\htdocs\sklep\new.php on line 29

oto jeszcze plik XML

Nie wiem o co biega :) gdy pobierze mi choć jedno zdjęcie zacznę układać plan jak to w bazę dać.

0

Próbujesz zapisać jakąś treść do pliku o nazwie images/produkt/ co wskazuje na folder. Doklej do ścieżki nazwę pliku.

0

Też tak myślałem ale jak daję nazwę pliku np fotka.jpeg to wszystkie zdjęcia się tak zapisują i mam na końcu tylko jedno, próbowałem zamiast nazwy pliku jeszcze raz wstawić zmienną $fotka, ale tak też się nie zapiszę, jest gdzieś to w manualu jak zrobić takie cudo aby każde zdjęcie miało inna nazwę?
Chyba ze utworzyć inny katalog dla każdego zdjęcia ?

0

Znalazłem coś takiego jak basename

$name = basename($link);
$sciezka = $link;
$sciezka_zapisu = 'produkt/'. $name .'';
$pobranie = file_get_contents($sciezka);
file_put_contents($sciezka_zapisu , $pobranie);

Teraz mam 4 rożne foki zapisują się nazwami z XML czyli 1.jpeg, 2.jpeg itd z tym problem że zawsze wszystkie fotki się tak nazywają :(

0

Problem rozwiązałem zdjęcia pobierają się każde ma inną nazwę jaki człowiek niekiedy głupi jest to szkoda słów


<?php

$xml = simplexml_load_file('action1.xml');

$con = mysql_connect('localhost', 'root', '');
mysql_select_db('sklep');




foreach($xml->produkty->produkt as $produkt){
		$Id = $produkt['id'];


   foreach($produkt->zdjecia->zdjecie as $zdjecie){
   
   $fotka = $zdjecie['plik'];
   $link = 'http://cdn.action.pl/Picture.aspx?CID=41615&UID=damian&PID=167730eccfa10a0adf3f2073d2253db5&P='. $fotka .'' ;
   
   }
   
   echo "<table><tr>";
   echo "<td>". $fotka ."</td>";
   echo "<td>". $link ."</td>";
   echo "</tr></table>";
  
 
   
  $sciezka = $link;
   //$name = basename($link);
  $sciezka_zapisu = 'produkt/'. $Id .'.jpeg';  
  $pobranie = file_get_contents($sciezka);
  file_put_contents($sciezka_zapisu , $pobranie);
  
 
}
 
 
/**id="AGAAKPOKF0003" 
nazwa="Filtr węglowy AKPO SOFT - okapy WK-4, WK-5, WK-7" 
producent="AKP" 
grupa="AGA-OKF" 
gwarancja="F000M" 
cena_netto="29.33" 
vat="23" 
magazyn_zewnetrzny="N" 
dostepny="0" 
data="2011-06-03" 
na_zamowienie="T" 
oferta_specjalna="N" 
ostatnia_zmiana="2011-06-22" 
mala_paleta="N" 
large="N" 
raportowany="T">**/

?> 
0

Nie będe już zakładał nowego tematu no i jak myślałem z SQL też będą miał problem, jak zrobić aby zapytanie brało zawsze ID z jednej tabeli wstawiając je do 3 następnych razem z danymi z XML robię coś takiego

   $Dodaj_Produkt = ("INSERT INTO `qom8d_virtuemart_products` (`virtuemart_product_id`, `product_sku`) VALUES ('', '$Id')");
   $query = mysql_query ($Dodaj_Produkt) or die ("Nie dodano". mysql_error());
   if($query){
    $Dodaj_Nazwe = ("INSERT INTO `qom8d_virtuemart_products_pl_pl` (`virtuemart_product_id`, `product_name`) SELECT virtuemart_product_id FROM  qom8d_virtuemart_products WHERE product_sku = $Id ");
   $query2 = mysql_query ($Dodaj_Nazwe) or die ("Nie dodano". mysql_error());
   echo $quary2;
 } 

obrazek może trochę rozjaśni o cb to na czerwono musi być zawsze te same

user image

Rozwiązanie jakby ktoś chciał zrobić podobną rzecz

 $Nazwa = addslashes($nazwa);
  
 $addall = ("
   INSERT INTO `qom8d_virtuemart_products_pl_pl` (`virtuemart_product_id`, `product_name`, `slug`) VALUES (
   (SELECT `virtuemart_product_id` FROM `qom8d_virtuemart_products` WHERE `product_sku` = '$Id'), '$Nazwa', '$Nazwa' )");
   $wysaddall = mysql_query($addall) or die (mysql_error());

1 użytkowników online, w tym zalogowanych: 0, gości: 1