ok, z tym CRC podpowiedziałeś mi coś chyba podobnego i zrobiłam klucz który łączy te 2 kolumny... jej zawartość:
'id_userNazwa.pliku' i jest on unikalny
jednak nie aktualizuje mi danych...
mam zapytanie:
Kod
insert into down (id_prod, id_user, plik, crc, koniec, pobran) values ('bzdury', '1', 'bz.php', '1bz.php', koniec=DATE_FORMAT(TIMESTAMPADD(DAY,+7,now()), '%Y-%m-%d'), pobran='20') ON DUPLICATE KEY UPDATE crc=VALUES(crc)
OK nie dodaje nowego rekordu, ale też nie aktualizuje istniejącego...
Na pytanie co to ma robić:
$na = explode( '<br />', $r['npr']); // Rozbija ciąg na tablicę
// wpisy tutaj wyglądają mniej więcej abc - 1<br />nazwa - 2<br />cos innego - 10<br />
$text .= "\r\n\r\nA poniżej przesyłamy linki do pobrania plików:\r\n";
// zlicza ile jest takich elementów po rozdzieleniu ich po <br />
for($i=0; $i < $kol; $i++){
// pętelka
$nazw = explode( '<br />', $r['npr']); // jeszcze raz rozbija na tablicę, chyba zbędna operacja, ale przynajmniej nie wykorzystuje mysqla :)
$nazwa=substr($nazw[$i], 0
, -4
); // ucina ostatnie 4 wyrazy ze spacjami [" - 1" żeby została sama nazwa]
$zo1=mysql_query("select * from prod where nazwa='".$nazwa."'"); // wybiera produkty o podanej nazwie
$z1=mysql_query("Select * from down where id_user='".$r['ius']."' and plik='".$k['plik']."'"); // wybiera z tabeli down to co wyżej wybrało z tabeli prod celem porównania czy dany rekord istnieje już, czy jeszcze nie.
// jeśli istnieje to go aktualizuje
mysql_query("update down set koniec=DATE_FORMAT(TIMESTAMPADD(DAY,+".$ldni.",now()), '%Y-%m-%d'), pobran='".$lpobran."' where id_user='".$r['ius']."' and plik='".$k['plik']."'"); $text .= "\r\n ".$adres."/pobierz/".$r['ius']."/".$k['plik']."\r\n";
} else {
// w przeciwnym wypadku tworzy nowy wpis.
mysql_query("insert into down set id_prod='".$nazwa."', id_user='".$r['ius']."', plik='".$k['plik']."', koniec=DATE_FORMAT(TIMESTAMPADD(DAY,+".$ldni.",now()), '%Y-%m-%d'), pobran='".$lpobran."'"); $text .= "\r\n ".$adres."/pobierz/".$r['ius']."/".$k['plik']."\r\n";
}
}
}
Generalnie jest to do pobierania i generowania unikalnych linków do określonego pliku.
Dany użytkownik może ściągnąć plik max X razy, i link jest aktywny X dni.
hmm pytanie czy zapytanie z ON DUPLICATE KEY UPDATE rzeczywiście coś optymalizuje...
Bo w moim przypadku w pętli while wykonuja sie 2 zapytania...
jedno wybierające a drugie od warunku dodające lub aktualizujące...
a znalazłam, że ON DUPLICATE KEY UPDATE generuje 2 zapytania do bazy - pierwsze dodające i drugie [jeżeli wpis istniał] aktualizujące [tak zrozumiałam]... więc pozbywam się selecta i warunków [2 zapytań]... zamieniam na jedno zapytanie, generujące 2 zapytania do bazy z ON DUPLICATE KEY UPDATE??
=>
http://forum.php.pl/index.php?showtopic=94...rt=#entry566638