A jak wygląda problem?
@Pepek1989 chodzi o te warningi
@maychan programiści PHP (jak i w sumie pozostali) często nie zwracają uwagi na Warningi. Jeśli nie ma Error to jest ok - takie jest powszechne zdanie wśród wielu programistów. Czasem jest to wymuszone wymagającym deadline i takie ostrzeżenia są pomijane.
Ogólne rozwiązanie to wyłączenie opcji powiadamiania o ostrzeżeniach.
Co do problemu z foreach-em to rozwiązaniem może być dodanie w linii 129 coś takiego
$conf = array();
lub w linii 135
if (is_array($conf))
co do drugie błędu to poczytaj tutaj:
powodem tego ostrzeżenie jest wysłanie kodu HTML przed wywołaniem tego polecenia - innymi słowy, przed tym kodem już coś zostało wyświetlone - przyjrzyj się plikom php, które masz w warningu (szczególnie config.php). Być może błąd powoduje brak wywołania ob_start_flush(), bo na końcu pliku admin.php masz ob_end_flush()?
– Dodane 01.12.2012 (So) 22:31 –
Jeśli chodzi o linię 136 w theme2.php
Foreach($conf as $name => $value):
to może przerób ją na zwykły format (nawiasowy { }). Manual mówi
a Ty masz w tym Foreach jeszcze właśnie if (zwykły).
Dobra przestało mi wywalać błąd w momencie generowania opisu. Ale gdy loguję się w admin.php i chcę dodać nowy szablon dostaję :
Parse error: syntax error, unexpected '{', expecting '(' in /home/chomikuj/public_html/files/theme2.php on line 136
I nie pokazuje mi się ramka w której to ustawia się wzory
Pablo_Wawa widzę że masz wiedzę , super tłumaczysz
grzelix Twoje rozwiązanie … no nie wiem czy dodać to przed czy za …
To nie jest rocket science chwila zastanowienia i załapałbyś sam.
błąd mówi
Invalid argument supplied for foreach()
foreach potrzebuje tablicy po której może iterować, jeśli dostanie argument innego typu wtedy wyrzuca to ostrzeżenie. kod jest tak napisany że sprawdza dwa przypadki
if($typ == "gra")
i
elseif($typ == "film")
, jeśli żaden nie zajdzie to zmienna $conf nie jest poprawnie utworzona. Dlatego poradziłem dwie metody prewencji przed taką sytuacją. Pierwsza polega na obsłużenie pozostałych przypadków tzn kiedy nie zachodzi ani pierwszy ani drugi warunek, wówczas tworzymy pustą tablicę. Wówczas zmienna ma prawidłowy typ. Druga metoda to sprawdzenie przed forechem czy argument który podajemy rzeczywiście jest typu tablicowego. Czyli
if (is_array($conf)){
foreach($conf as $name => $value){
$i++;
if($i == "11" or $i == "18" or $i == "24") echo "
";
echo '{{'.$name.'}}';
}
}
[/code]
Przy rozwiązaniu 2 prawdopodobnie należy zmodyfikować również linie 236, 241 (analogicznie jak wyżej).
btw jakie modyfikacje wprowadziłeś?
O tym mówi komunikat błędu, jednak jak można przeczytać w podanym przeze mnie linku nie jest to precyzyjne. Podobny komunikat powstaje w przypadku BOM-u na początku pliku uft8. Także należy również sprawdzić pod tym kątem.
Twój wpis z
if (is_array($conf))
naprawił błąd na mojej stronie. Jeśli chcesz zobaczyć stronę PW - nie chcę robić reklamy , mam także coś dla Ciebie