Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL i Undefined index
Forum PHP.pl > Forum > Bazy danych > MySQL
Devliniusz
Witam

Mam następujący problem:
W momencie gdy z bazy pobierane są rekordy których wartość jest "pusta" pojawiają się nastepujące ostrzeżenia:
Undefined index: ocena_dow in ... on line ...
Undefined index: ilosc_ocen_dow in ... on line ...
Undefined index: pearl in ... on line ...


Jak temu zaradzić? Oczywiście nie interesuje mnie rozwiązanie typu: "error_reporting = E_ALL & ~E_NOTICE"...

  1. while($wiersz34=mysql_fetch_array($wykonaj34)){
  2. $id_dow_=$wiersz34['id_dow'];
  3. $idkat_dow_=$wiersz34['idkat_dow'];
  4. $dodal_dow_=$wiersz34['dodal_dow'];
  5. $data_dow_=$wiersz34['data_dow'];
  6. $godz_dow_=$wiersz34['godz_dow'];
  7. $tresc_dow_=$wiersz34['tresc_dow'];
  8. $ocena_dow_=$wiersz34['ocena_dow'];
  9. $ilosc_ocen_dow_=$wiersz34['ilosc_ocen_dow'];
  10. $pearl_=$wiersz34['pearl'];
  11. }
MarcinZ
a podaj mi jak wyglada tabela do ktorej sie odwolujesz..
Devliniusz
Tabela wygląda tak:

  1. TABLE `dev_dow` (
  2. `id_dow` int(6) NOT NULL AUTO_INCREMENT,
  3. `idkat_dow` varchar(30) NOT NULL DEFAULT '',
  4. `x_dow` int(1) NOT NULL DEFAULT '0',
  5. `dodal_dow` varchar(22) NOT NULL DEFAULT '',
  6. `data_dow` date NOT NULL DEFAULT '0000-00-00',
  7. `godz_dow` time NOT NULL DEFAULT '00:00:00',
  8. `tresc_dow` text NOT NULL,
  9. `ocena_dow` int(5) DEFAULT NULL,
  10. `ilosc_ocen_dow` int(3) DEFAULT NULL,
  11. `pearl` int(1) DEFAULT NULL,
  12. )
MarcinZ
Kod
TABLE `dev_dow` (
`id_dow` int(6) NOT NULL auto_increment,
`idkat_dow` varchar(30) NOT NULL default '',
`x_dow` int(1) NOT NULL default '0',
`dodal_dow` varchar(22) NOT NULL default '',
`data_dow` date NOT NULL default '0000-00-00',
`godz_dow` time NOT NULL default '00:00:00',
`tresc_dow` text NOT NULL,
`ocena_dow` int(5) default NULL,
`ilosc_ocen_dow` int(3) default NULL,
`pearl` int(1) default NULL,
)


W twoim brakuje na pweno primary Key który według mnie powinien być ustawiony na id_down

Kod
TABLE `dev_dow` (
`id_dow` int(6) NOT NULL auto_increment,
`idkat_dow` varchar(30) NOT NULL default '',
`x_dow` int(1) NOT NULL default '0',
`dodal_dow` varchar(22) NOT NULL default '',
`data_dow` date NOT NULL default '0000-00-00',
`godz_dow` time NOT NULL default '00:00:00',
`tresc_dow` text NOT NULL,
`ocena_dow` int(5) default NULL,
`ilosc_ocen_dow` int(3) default NULL,
`pearl` int(1) default NULL,
PRIMARY KEY  (`id`)
)TYPE=MyISAM
Devliniusz
Możesz mi wyjaśnić co to ma wspólnego z postawionym problemem?
MarcinZ
Spoko moja mała wina... przyznaje się...

sprawdzałeś czy czasem nie są wyłączone zmienne globalne na danym serwerze, bo może to jest tego przyczyną, że pobiera puste dane...

Lub zmien tam gdzie masz NULL na NOT NULL najwyraźniej to powoduje błędy,
i możesz dodać w skrypcie by sprawdzał czy dane są puste, jeżeli tak to wtedy podstawia jakąś wartość, tóra będzie oznaczała pusty zbiór, np. 0
Kod
<?
...
if(empty($zmienna)) {
$zmienna = 0;
}


To mniej więcej tak powinno wyglądać... lub poczytaj w manualu MySQL'a o typie danych NULL powinno tam być dobrze wyjaśnione..
Devliniusz
Owszem - zmienne globalne są wyłączone i tak ma pozostać.

Nie jest problemem to, że pobierane są "puste" rekordy, bo one w określonych przypadkach mają być "puste" i są "puste". I właśnie problem polega na tym, że jeśli są puste, to otrzymuję raport: Undefined index.

Pomysł ze sprawdzaniem czy dane są "puste" jest nielogiczny.
Problem z "raportem" pojawia się w momencie, kiedy próbuję je pobrać z bazy, więc jak mam sprawdzić czy w danym rekordzie są "puste" bez pobrania danych z bazy?questionmark.gif

Zatem pytanie brzmi: Czy w takim przypadku pola w bazie muszą mieć zadeklarowaną wartość domyślną (np. "0"), czy też istnieje inny sposób aby nie pojawiał się komunikat Undefined index?

Ma ktoś jakiś pomysł?
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.