Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] wykluczanie elementów tablicy
hettmix
post 12.12.2012, 08:11:32
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 10.03.2012

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


Witam.

Mam następującą tabelę zawierającą jeden wiersz:
  1. CREATE TABLE IF NOT EXISTS `tbl_config_porz` (
  2. `id` tinyint(3) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `config_tyt_nip` varchar(20) CHARACTER SET utf8 NOT NULL,
  4. `config_tyt_akt_normatywny` text COLLATE utf8_polish_ci NOT NULL,
  5. `config_tyt_rodzaj_naleznosci` text COLLATE utf8_polish_ci NOT NULL,
  6. `config_tyt_inna_podstawa` text COLLATE utf8_polish_ci NOT NULL,
  7. `config_tyt_nazwa_banku` tinytext COLLATE utf8_polish_ci NOT NULL,
  8. `config_tyt_nr_rachunku` varchar(30) CHARACTER SET utf8 NOT NULL,
  9. `config_tyt_upomnienie_brak` text COLLATE utf8_polish_ci NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;


Przy użyciu pętli foreach wrzucam do tabeli tymczasowej tbl_config_tmp_porz wszystkie wiersze z tabeli tbl_config_porz:
  1. $res=mysql_query("SELECT * FROM tbl_config_porz") or die($res."<br/>Błąd zapytania typu select: <br/>".mysql_error());
  2. $row=mysql_fetch_array($res);
  3.  
  4. $rd=mysql_query("DELETE FROM tbl_config_tmp_porz") or die($rd."<br/>Błąd zapytania typu delete: <br/>".mysql_error());
  5.  
  6. foreach ($row as $key => $val) {
  7. if ($key!="id") {
  8. $res_desc=mysql_query("SELECT * FROM tbl_config_opis_porz;");
  9. $row_desc=mysql_fetch_array($res_desc);
  10. $ri=mysql_query("INSERT INTO tbl_config_tmp_porz (config_key,config_value,config_descr) values ('".$key."','".$val."','".$row_desc[$key]."');");
  11.  
  12. }
  13. }

W wyniku otrzymuję w tabeli tymczasowej tbl_config_tmp_porz to co chciałem, lecz wiersze są zdublowane:
  1. (421, '1', '999 12 19 997', 'Numer NIP jednostki pobierany do tytułów wykonawczych', ''),
  2. (422, 'config_tyt_nip', '999 12 19 997', 'Numer NIP jednostki pobierany do tytułów wykonawczych', ''),
  3. (423, '2', 'Art.95-102 ustawy z dnia 28 sierpnia 2001r. - Kodeks postępowania w sprawach o wykroczenia <BR>(Dz.U. z 2008r., Nr 133, poz. 848 z późn. zm.)', 'Akt normatywny pobierany do tytułów wykonawczych', ''),
  4. (424, 'config_tyt_akt_normatywny', 'Art.95-102 ustawy z dnia 28 sierpnia 2001r. - Kodeks postępowania w sprawach o wykroczenia <BR>(Dz.U. z 2008r., Nr 133, poz. 848 z późn. zm.)', 'Akt normatywny pobierany do tytułów wykonawczych', ''),
  5. (425, '3', 'Grzywna nałożona w drodze mandatu karnego w postępowaniu w sprawach o wykroczenia.', 'Rodzaj należności pobierany do tytułów wykonawczych', ''),
  6. (426, 'config_tyt_rodzaj_naleznosci', 'Grzywna nałożona w drodze mandatu karnego w postępowaniu w sprawach o wykroczenia.', 'Rodzaj należności pobierany do tytułów wykonawczych', ''),
  7. (427, '4', 'Art.100 ustawy z dnia 28 sierpnia 2001r. - Kodeks postępowania w sprawach o wykroczenia<BR>(Dz.U. z 2008r., Nr 133, poz. 848 z późn. zm.)', 'Inna podstawa pobierana do tytułów wykonawczych', ''),
  8. (428, 'config_tyt_inna_podstawa', 'Art.100 ustawy z dnia 28 sierpnia 2001r. - Kodeks postępowania w sprawach o wykroczenia<BR>(Dz.U. z 2008r., Nr 133, poz. 848 z późn. zm.)', 'Inna podstawa pobierana do tytułów wykonawczych', ''),
  9. (429, '5', 'Bank Spółdzielczy w XXXXX<BR>filia w Łodzi', 'Nazwa banku pobierana do tytułów wykonawczych', ''),
  10. (430, 'config_tyt_nazwa_banku', 'Bank Spółdzielczy w XXXXX<BR>filia w Łodzi', 'Nazwa banku pobierana do tytułów wykonawczych', ''),
  11. (431, '6', '99 9999 0002 0090 0772 XXXX 00', 'Nr rachunku bankowego pobierany do tytułów wykonawczych', ''),
  12. (432, 'config_tyt_nr_rachunku', '99 9999 0002 0090 0772 XXXX 00', 'Nr rachunku bankowego pobierany do tytułów wykonawczych', ''),
  13. (433, '7', '§ 13 pkt 3a, Rozp. MF z dn. 22.11.2001r (Dz.U. z 2001r. nr 137, poz. 1541)', 'Podstawa prawna braku upomnienia pobierana do tytułów wykonawczych', ''),
  14. (434, 'config_tyt_upomnienie_brak', '§ 13 pkt 3a, Rozp. MF z dn. 22.11.2001r (Dz.U. z 2001r. nr 137, poz. 1541)', 'Podstawa prawna braku upomnienia pobierana do tytułów wykonawczych', ''),

Jak wykluczyć zbędne elementy tablicy, by uniknąć dublowania wierszy w tabeli wynikowej ?
Go to the top of the page
+Quote Post
Sephirus
post 12.12.2012, 08:25:55
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


EDIT... Napisałem głupotę - nie o to chodziło sorki.

Wystarczy tylko zmienić:

  1. $row=mysql_fetch_array($res);
  2.  
  3. // na
  4.  
  5. $row=mysql_fetch_array($res,MYSQL_ASSOC);



Bo to standardowo działa pobierając rekordy do tablicy zarówno po indeksie numerycznym (numerze pola) jak i jego nazwie - stąd dublowanie

Ten post edytował Sephirus 12.12.2012, 08:37:58


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
hettmix
post 12.12.2012, 08:55:22
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 10.03.2012

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


Cytat(Sephirus @ 12.12.2012, 08:25:55 ) *
EDIT... Napisałem głupotę - nie o to chodziło sorki.

Wystarczy tylko zmienić:

  1. $row=mysql_fetch_array($res);
  2.  
  3. // na
  4.  
  5. $row=mysql_fetch_array($res,MYSQL_ASSOC);



Bo to standardowo działa pobierając rekordy do tablicy zarówno po indeksie numerycznym (numerze pola) jak i jego nazwie - stąd dublowanie


OK - działa jak należy - dzięki za pomoc....
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: 28.04.2024 - 10:24