Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Jak zapobiec redundancji danych w bazie?
kk1975
post 10.03.2006, 11:43:28
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.02.2006

Ostrzeżenie: (0%)
-----


Witam. mam kłopocik. skrypt pobiera dane z bazy, w pętli przypisuje je do zmiennej "$dane", wybiera z niej określony ciąg znaków i przypisuje do zmiennej "$nazwakat" i to właśnie chcę zapisać do bazy, w której mam dwa pola: id - 'auto increment' i kategorie. No i pięknie wszystko zapisuje automatycznie przypisując nr. Id do kolejnej kategorii, tylko, że kategorie się powtarzają, np. dopisuje do bazy kilkanaście razy kategorie "dodatki", "akcesoria" itp dodając do nich kolejne nr.Id.
Jak przerobić skrypt aby powtarzające się kategoria - w bazie zapisał tylko raz?
poniżej zamieszczam kod.
  1. <?php
  2. $baza = "c:\\db1.mdb";
  3. $f = new com("adodb.connection");
  4. $f->open("provider=microsoft.jet.oledb.4.0; data source=$baza");
  5.  
  6. $sql = "SELECT * FROM cennik"; 
  7. $wynik = $f->execute($sql);
  8. //$aaa="%\";
  9. while (!$wynik->eof)
  10. {
  11. $dane=$wynik->fields["Grupa towarowa"]->value;
  12.  
  13. $licz_zn=strpos($dane,'/');
  14. $nazwakat=substr($dane, 0, $licz_zn);
  15.  
  16.  echo "$nazwakat";
  17.  
  18. require_once('baza.php');
  19.  
  20.  //próba zapisania w bazie
  21.  $wynik_rej = rejestruj($id, $nazwakat);
  22.  if ($wynik_rej === true)
  23.  
  24. $wynik->movenext();
  25.  }
  26.  
  27. $wynik->close();
  28. $f->close();
  29. ?>
Go to the top of the page
+Quote Post
acztery
post 10.03.2006, 11:46:34
Post #2





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

Ostrzeżenie: (0%)
-----


DISTINCT to usuwa dublikaty
Go to the top of the page
+Quote Post
weasel
post 10.03.2006, 12:34:31
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.11.2005

Ostrzeżenie: (0%)
-----


Moim zdaniem powinieneś uczynić pole 'kategorie' polem unikalnym i zrobić obsługę błędów w php. Czyli przed wprowadzeniem nowej wartości sprawdzać czy taka jest już w bazie danych (SELECT'em) i jeśli jest, to nie dopuszczać do jej ponownego wprowadzenia.
Go to the top of the page
+Quote Post
kk1975
post 10.03.2006, 16:12:34
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 3.02.2006

Ostrzeżenie: (0%)
-----


Dzięki weasel! Tak uczyniłem i wszystko śmiga jak ta lala.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:15