Na razie napisałem coś takiego:
or
die('Brak połączenia z serwerem MySQL');or
die('Nie mogę połączyć się z bazą danych');
preg_match_all("/MZM\-.*\d/i", $tresc, $znalezione); //MZM-CokolwiekLiczba
foreach ($znalezione as $ciag) {
for ($i=0; $i<681; $i++) {
echo "\nNumer ID: " . $ciag[$i] . "\n";
$ins = @mysql_query("INSERT INTO przedmioty SET numer_katalogowy='$ciag[$i]'"); if($ins) echo "Rekord został dodany poprawnie"; else echo "Błąd nie udało się dodać nowego rekordu";
}
}
Skrypt znajduje wszystkie numery katalogowe w pliku tekstowym i zapisuje je po kolei do tabeli przedmioty, do pola numer_katalogowy.
Nie wiem jednak jak zrobić by został dodany kompletny wpis, to znaczy z każdym przejściem pętli żeby do tabeli był zapisywany rekord zawierajacy numer_katalogowy,
kategorię do której zostanie dodany przedmiot (np. jesli w pliku tekstowym mamy #SRD#dokument?SRD? to do kategorii o numerze id 1, a jeśli #SRD#obraz?SRD? to do kategorii o id 2 itp.) oraz opis przedmiotu i ścieżkę do zdjęcia.
Zawartość pliku tekstowego (mały fragment):
Kod
#IDO#MZM-47?IDO?
#IID#10001?IID?#PID#47?PID?#EID#0?EID?
#RDO#pojedynczy obiekt?RDO?
#RIN#zabytek?RIN?
#NZW#Obraz "Kwiaty" olej, płyta pilśniowa.?NZW?
#SNZ#Obraz "Kwiaty" olej, płyta pilśniowa.?SNZ?
#SRD#obraz?SRD?
#RDZ#obraz?RDZ?<RDZ>
#IDO#MZM-48?IDO?
#IID#10001?IID?#PID#48?PID?#EID#0?EID?
#RDO#pojedynczy obiekt?RDO?
#RIN#zabytek?RIN?
#NZW#Paszport pani Komorzyckiej z Chmielewa z 1916r.?NZW?
#SNZ#Paszport pani Komorzyckiej z Chmielewa z 1916r.?SNZ?
#SRD#dokument?SRD?
Byłbym wdzięczny za jakieś porady, bo nie mam zbyt wielkiego doświadczenia z php i sql.
Osiągnąłem już to co chciałem, prawie.

<?php
or
die('Brak połączenia z serwerem MySQL');or
die('Nie mogę połączyć się z bazą danych');
foreach ($znalezione as $ciag) { //id
foreach ($znalezione2 as $ciag2) { //nazwa
foreach ($znalezione3 as $ciag3) { //kategoria
foreach ($znalezione4 as $ciag4) { //zdjecie
foreach ($znalezione5 as $ciag5) { //opis
for ($i=0; $i<681; $i++) {
$ciag[$i] = substr($ciag[$i], 4
, -5
); $ciag2[$i] = substr($ciag2[$i], 4
, -5
); $ciag3[$i] = substr($ciag3[$i], 4
, -5
); $ciag4[$i] = substr($ciag4[$i], 4
, -5
); $ciag5[$i] = substr($ciag5[$i], 4
, -5
);
if ($ciag3[$i]=='#SRD#dokument?SRD?') {$id=1;}
else $id=2;
$ins = @mysql_query("INSERT INTO przedmioty SET param='par_Numer katalogowy@@:@@$ciag[$i]', name='$ciag2[$i]', category_id='$id', image_url='$ciag4[$i]', description='$ciag5[$i]'"); if($ins) echo "Rekord został dodany poprawnie"; else echo "Błąd nie udało się dodać nowego rekordu";
}
}}}}}
?>
Może nie jest za piękne ale działa, mam tylko jeden problem.
Jeśli przy przedmiocie nie ma zdjęcia to w pliku tekstowym wpis #PIN#images/zdjecie.jpg?PIN? nie istnieje. Dodałem więc w pliku w edytorze tekstowym automatycznie pusty wpis
#PIN#?PIN? tam gdzie go nie ma. To już jest ok.
Problem pojawia się gdy do jednego rekordu mamy kilka zdjęć, czyli kilka razy w pliku do jednego przedmiotu
#PIN#images/zdjecie.jpg?PIN?
#PIN#images/zdjecie2.jpg?PIN? itd.
W takim wypadku jak idzie pętla to zdjęcie w pewnym momencie będzie miało inny numer
$ciag4[$i] niż nazwa przedmoiotu
$ciag2[$i] , opis przedmiotu
$ciag5[$i] itd.
Jeśli w bazie danych do danego przedmiotu zostanie przydzielonych kilka sciezek do zdjeć oddzielonych średnikiem to tak moze myć. Ale opcja z tylko jednym zdjęciem będzie zadowalająca.