Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Jak zapobiec redundancji danych w bazie?
Forum PHP.pl > Forum > PHP
kk1975
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. ?>
acztery
DISTINCT to usuwa dublikaty
weasel
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.
kk1975
Dzięki weasel! Tak uczyniłem i wszystko śmiga jak ta lala.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.