Autor | Zpráva | ||
---|---|---|---|
el_bunda Profil |
#1 · Zasláno: 3. 3. 2011, 13:32:15
Zdravím,
vygooglil jsem si php script na fotogalerii. Všechno funguje jak má, ale před fotky mi to hodí hlášku: Notice: Undefined offset: 77 in c:\...\funkce.php on line 19. <? Function ZobrazGalerii($cesta, $cesta_male, $strana = 1, $pocetH = 4, $pocetV = 50) { $adresar = OpenDir($cesta); // otevre adresar $soubor = Array(); // zinicializuje pole while ($zaznam = ReadDir($adresar)) { // nacte nazev souboru if (!Is_Dir("$cesta/$zaznam")) { // zkontroluje zda neni nazev adresar $soubor[] = $zaznam; // ulozi do pole soubor } } CloseDir($adresar); // uzavre adresar Sort($soubor); // srovna nazvy souboru echo "<table width=\"100%\" cellpadding=\"12\">\n<tr>\n"; $sloupec = 0;$radka = 1; $sirka = Floor(25); // procentualni sirka jednoho sloupce $obrazek_cislo = 0; // ktery obrazek bude prvni while ($obrazek = $soubor[$obrazek_cislo]) { // opakuj dokud nevycerpame vsechny obrazky - TADY JE NĚKDE CHYBA $sloupec++; if ($sloupec > $pocetH) { // pokud sloupec prekroci pocet cloupcu, $sloupec = 1; $radka++; echo "</tr><tr>\n"; // .., tak se vytvori nova radka } if ($radka > $pocetV) break; // pokud prekrocime pocet radku, skoncime cyklus echo "<td width=\"$sirka%\">"; echo "<a href=\"$cesta/$obrazek\" class=\"highslide\" onclick=\"return hs.expand(this)\">"; echo "<img src=\"$cesta_male/$obrazek\"></a>"; echo "</td>\n"; $obrazek_cislo++; } echo "</td></tr></table>\n"; } ?> Fotky (jak malé tak velké) mají název 001.jpg, 002.jpg, ... V krajním případě by se do dalo použít, ale uznejte, že to moc profesionálně nevypadá. Předem díky za odpovědi. |
||
Marek88 Profil |
#2 · Zasláno: 3. 3. 2011, 14:02:36 · Upravil/a: Marek88
Je to jen notice - to v podstatě nevadí. Nejsem si na 100% jistý, ale řekl bych, že to znamená, že chceš porovnávat prvek pole, který neexistuje (konkrétně ten 77.). Na funkci skriptu to ale nemá vliv a ta podmínka se vyhodnotí tak, jak chceš.
Pro ostrý provoz je pak potřeba chybové hlášky schovávat. EDIT: Pokud bys chtěl notice odstarnit a ne jen skrýt, tak bys musel testovat, jestli se daný prvek v poli rovná NULL nebo použít funkci isset(). |
||
el_bunda Profil |
#3 · Zasláno: 3. 3. 2011, 14:28:55
Podařilo se mi to skrýt pomocí error_reporting(0);.
Díky moc za odpověď. |
||
Meris Profil * |
#4 · Zasláno: 3. 3. 2011, 15:20:27
Podle mě skrývat notice a ostatní chyby má smysl jen v případě ostrého serveru, kde se chyby logují. Pro vývoj je dobré tyto chyby odstranit.
Chyba undefinned offset znamená že se ptáš na položku pole, která neexistuje. U tebe je chyba v definici cyklu while while ($obrazek = $soubor[$obrazek_cislo]) tento řádek znamená, že do proměnné $obrazek uložíš položku pole. Což funguje tak dlouho dokud máš v poli nějakou hodnotu. Ale v okamžiku kdy se dostaneš na index, který již v poli není, tak to vypíše ono hlášení. Řešení je několik, např while ($obrazek_cislo < count($soubor) ) { // jsem na indexu který je menší než počet řádků v tabulce $obrazek = $soubor[$obrazek_cislo] A v případě, že nevíš zda budou číselne indexy pole, můžeš použít foreach foreach ($soubor as $obrazek ) { // jsem na indexu který je menší než počet řádků v tabulce |
||
el_bunda Profil |
#5 · Zasláno: 3. 3. 2011, 16:55:57
Meris:
Zkusil jsem ten první způsob, akorát jsem tam musel přidal jeden středník. Teďka už frčí parádně a bez chyby. Dík |
||
Časová prodleva: 13 let
|
0