Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL i Undefined index
Devliniusz
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2005

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


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
MarcinZ
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 18.03.2004
Skąd: Golub-Dobrzyń

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


a podaj mi jak wyglada tabela do ktorej sie odwolujesz..
Go to the top of the page
+Quote Post
Devliniusz
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2005

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


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. )
Go to the top of the page
+Quote Post
MarcinZ
post
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 18.03.2004
Skąd: Golub-Dobrzyń

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


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


Ten post edytował MarcinZ 4.04.2005, 19:40:34
Go to the top of the page
+Quote Post
Devliniusz
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2005

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


Możesz mi wyjaśnić co to ma wspólnego z postawionym problemem?
Go to the top of the page
+Quote Post
MarcinZ
post
Post #6





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 18.03.2004
Skąd: Golub-Dobrzyń

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


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..
Go to the top of the page
+Quote Post
Devliniusz
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.04.2005

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


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?(IMG:http://forum.php.pl/style_emoticons/default/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ł?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 08:18