![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Witam mam taki problem!
mam w bazie rekordy ktore maja wpisywane adresy www typu www.strona.pl/identyfikator/costam skrypt pobiera mi taki adres z bazy uzupelnia o nim inne informacje zalozone w bazie oraz dla tego adresu kolejne adresy filmow ktore sa na tej stronie. mniejwiecej tak update jednego + ok 8 nowych i tak w kolko!! problem mam z tym ze czesto te asdresy sie powtarzaja! i chailbym je jakos wyeliminowac zeby w bazie byly tylko raz! CZy ktos ma pomysl jak pobierac adresy z bazy i porownywac z aktualnie zapisywanym? jak chailem wypisac adresy to przy 42 tys rekordow robi sie wielka zwiecha :/ moze mi ktos cos podpowiedziec?? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
adres internetowy został wymyślony po to, żeby identyfikował w sposób maksymalnie jednoznaczny daną stronę (nie mówię tu o stronach w ramkach lub podobne techniki, które moim zdaniem są źle napisane). Wystarczy, że sprawdzisz w bazie czy taką stronę masz już dodaną (np szukając w SQL WHERE `adres`='dodawany_adres')
Ten post edytował Darti 9.12.2008, 20:24:18 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 353 Pomógł: 50 Dołączył: 28.07.2005 Skąd: Łaziska Górne Ostrzeżenie: (0%) ![]() ![]() |
Może to pomoże??
http://dev.mysql.com/doc/refman/5.1/en/replace.html |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Wystarczy, że sprawdzisz w bazie czy taką stronę masz już dodaną (np szukając w SQL WHERE `adres`='dodawany_adres') no wlasnie wiem tylko nie wiem jak to zapisac.... generalnie chcialbym to sprawdzac gdzies tutaj
tu pod zmienna $para mam nowo pobrane adresy www. i zapisuje je do bazy. i to chyba bedzie najlepsze miejsce do wyeliminowania dublujacych sie adesow. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 18 Dołączył: 30.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kiedyś (przez przypadek) wyczaiłem, że jak ustawisz w MySQL pole jako klucz unikalny, to przy próbie zapisania nowego rekordu z tym samym identyfikatorem to tak na prawdę nadpisze ten poprzedni (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
to nie koniecznie zda u mnie egzamin bo ja pobieram te zapisane adresy i robie ich update i jak bede nadpisywal updatowany rekord to on znowu bedzie nadawal sie do update'u.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 353 Pomógł: 50 Dołączył: 28.07.2005 Skąd: Łaziska Górne Ostrzeżenie: (0%) ![]() ![]() |
Jak dasz wartość UNIQUE dla kolumny w której trzymasz adresy to nie będzie się powtarzać.
A stosując REPLACE lub INSERT IGNORE w przypadku próby dodania tego samego adresu stary rekord zostanie usunięty i zastąpiony nowym. Jeśli użyjesz same INSERT bez IGNORE to zostanie stary rekord. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
jak probuje ustawic web jakos unike albo primary key to dostaje w bazie blad :
Błąd zapytanie SQL: CREATE TABLE `wrzuta`.`aaa` ( `web` TEXT NOT NULL , UNIQUE ( `web` )) ENGINE = MYISAM MySQL zwrócił komunikat: http://dev.mysql.com/doc/refman/5.0/en/err...ges-server.html #1170 - BLOB column 'web' used in key specification without a key length jaki typ ustawic zeby przechowywac tam stringa (adres strony) i muc ustawic to na unike?? a no i jeszcze probowalem to insert ignore replace i insert rozumien ze to ma byc w zapytaniu sql
to nie daje mi zadnych efektow (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) caly czas sie powtarzaja adresy ustawilem kolumne web na varchar(300) jako jednoznaczna i not null pakuje poczatkowy adres do bazy uruchamiam skrypt wykonuje mi sie jego update ale nie dodaja sie nowe adresy mimo ze skrypt je pobiera do tablicy nie wpisuje ich do bazy...(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Ten post edytował shtoc 10.12.2008, 09:17:13 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
jak probuje ustawic web jakos unike albo primary key to dostaje w bazie blad : Błąd zapytanie SQL: CREATE TABLE `wrzuta`.`aaa` ( `web` TEXT NOT NULL , UNIQUE ( `web` )) ENGINE = MYISAM MySQL zwrócił komunikat: http://dev.mysql.com/doc/refman/5.0/en/err...ges-server.html #1170 - BLOB column 'web' used in key specification without a key length Bo w MySQL maksymalny rozmiar indeksu moze mieć 1000 bajtów. Zrób sobie w tabeli kolumnę hash jako indeks varchar 32 znaki i wrzucaj tam md5" title="Zobacz w manualu PHP" target="_manual adresu. Na podstawie tego sprawdzaj czy w bazie masz dany wpis czy nie. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
ok dzieki za podsuniecie ciekawego pomyslu tylko ze ja wlasnie mam probelm z tym jak bierzacy adres ktory siedzi w zmiennej porownac ze wszystkimi co sa juz w bazie??
czyli czy $adres != cala kolumna adresow w bazie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) w sensie czy za kazdym razem trzeba probrac wszystkie rekordy z bazy i sprawdzic?? czy jest cos co porownuje nie wyciagajac tego wszystkiego!! bo z mojego pkt widzenia wyciagac z bazy mozna 10, 100 rekordow do takiego sprawdzenia ale nie 100 000 (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) chyba ze sie myle?? |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 076 Pomógł: 62 Dołączył: 6.03.2005 Skąd: Wroc Ostrzeżenie: (0%) ![]() ![]() |
dlaczego wyciągać (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
p.s. sorry, nie IP a adres, ale zasada ta sama Ten post edytował Darti 10.12.2008, 15:42:07 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
Czyli teoretycznie powinienem zrobic cos takiego :
Ten post edytował shtoc 11.12.2008, 15:22:20 |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat $stat = $pdo->prepare($sql); if($stat==0) Zobacz w manualu co robi i co zwraca prepare() i nie pisz wiecej takich kodow (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 128 Pomógł: 0 Dołączył: 18.11.2008 Skąd: Polska Ostrzeżenie: (10%) ![]() ![]() |
hmmm no dalej mam z tym problem.......
to moze zapytam inaczej jakie sa najbardziej efektywne sposoby na wyeliminowanie dublowania rekordow w bazie?? j ustawilem kolumne web na varchar(300) jako jednoznaczna i not null pakuje poczatkowy adres do bazy uruchamiam skrypt wykonuje mi sie jego update ale nie dodaja sie nowe adresy mimo ze skrypt je pobiera do tablicy nie wpisuje ich do bazy... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? to jednak dziala!!! moj blad byl taki ze nie dalem auto_icrementacji na id!! wiec spoko dziekuje wszystkim za pomoc i zmobilizowanie mnie do myslenia (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:09 |