Generator w PHP

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:

http://forum.webhelp.pl/php-i-bazy-dany … 85864.html

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 :slight_smile:

Pablo_Wawa widzę że masz wiedzę , super tłumaczysz :smiley:

grzelix Twoje rozwiązanie … no nie wiem czy dodać to przed czy za … :frowning:

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 :wink: , mam także coś dla Ciebie :slight_smile: