[PHP] po prostu problem - nie wiem jak go opisac :P

0
<?php	
	$plik=fopen("kg.db.php","r") or
	die ("Error opening file kg.db.php...");
	$tpl=fopen("kg.tpl.php","r") or
	die ("Error opening templates file...");
	$templ=fread($tpl,filesize("kg.tpl.php"));
	fclose($tpl);
	while ($linia=@fgets($plik,1024)) {
	list($imie,$email,$data,$tresc,$strona) = explode("|",$linia);
	//$templ=str_replace("{imie}","$imie",$templ);
	print "$imie";
 	}		
	fclose($plik);

?>

Jak widac sa dwa pliki: jeden z danymi, drugi z kodem html do ustawiania wygladu. Problem w tym ze jak uzywam danych z kodem html (tak jak to widac w instukcji w komentarzu w kodzie) to mi wyswietala tylko pierwszy wpis tyle razy ile jest wpisow wszystkich. "Print" wyswietla wszystko ladnie pokolei ale nie mam formatowania takiego jakbym chcial. Ktos potrafilby mi pomoc?

// edit ***********************************
juz znalazlem blad :> teraz niech ktos mi powie dlaczego ten kod:

<?php	
	$plik=fopen("kg.db.php","r") or
	die ("Error opening file kg.db.php...");
	$tpl=fopen("kg.tpl.php","r") or
	die ("Error opening templates file...");
	$templ=fread($tpl,filesize("kg.tpl.php"));
	fclose($tpl);
	$help=$templ;
	while ($linia=@fgets($plik,1024)) {
	list($imie,$email,$data,$tresc,$strona) = explode("|",$linia);
	if (!empty($email)) $templ=str_replace("{imie}","<a href=\"mailto:$email\">$imie</a>",$templ);
	  else $templ=str_replace("{imie}","$imie",$templ);
	$templ=str_replace("{data}","$data",$templ);
	$templ=str_replace("{tresc}","$tresc",$templ);
	if (!empty($strona)) $templ=str_replace("{strona}","<a href=\"http://$strona\" target=\"_blank\">$strona</a>",$templ);
         else <font color="red">$templ=str_replace("{strona}","brak",$templ);</font>
	print "$templ";
	$templ=$help;
	}	
	
	fclose($plik);

?>

nie wyswietla napisu "brak" gdy nie ma podanej strony chociaz dobrze zamienia podane adresy na linki...

0

Formatuj jakoś swój kod, nie jesteśmy debugerami!

<?php        
        
  $plik = fopen ("kg.db.php","r") or die ("Error opening file kg.db.php...");   
  $tpl = fopen ("kg.tpl.php","r") or die ("Error opening templates file...");

  $templ = fread ($tpl,filesize("kg.tpl.php"));

  fclose ($tpl);

  $help = $templ;

  while ($linia = @fgets($plik,1024)) 
  {
        list ($imie,$email,$data,$tresc,$strona) = explode("|",$linia);
        
        if (!empty($email)) 
              $templ = str_replace("{imie}","<a href=\"mailto:$email\">$imie</a>",$templ);
        else 
              $templ = str_replace("{imie}","$imie",$templ);

        $templ = str_replace("{data}","$data",$templ);
        $templ = str_replace("{tresc}","$tresc",$templ);

        if (!empty($strona)) 
              $templ = str_replace("{strona}","<a href=\"http://$strona\" target=\"_blank\">$strona</a>",$templ);
        else 
              $templ = str_replace("{strona}","brak",$templ);
        
        print "$templ";
        $templ=$help;
  }        
        
  fclose($plik);

?>

A błedu imo tutaj nie widać, pokaż te pliki z danymi to może sie coś wymyśli :P

0

Zamień:

if (!empty($strona))

na:

if (!empty(trim($strona)))

Bo z tego co widzę to jedyny problem mogą sprawiać znaki nowego wiersza, które ładowane są do zmiennej $strona, przez co ta nigdy nie jest pusta

0

przycinam trim() wartosci przy zapisywaniu i przycinam przy odczytywaniu, brak efektu [sciana] , badam jeszcze problem, jak cos wymysle to napisze....

0

zamień na:

$strona = trim($strona);
if (!empty($strona)){ ...

w empty nie może być trim bo:

manual php napisał(a)

Notatka: Ponieważ jest to element składni języka a nie funkcja, nie może być on wywoływany używając zmiennych funkcji

Notatka: empty() only checks variables as anything else will result in a parse error. In otherwords, the following will not work: empty(addslashes($name)).

a jeszcze:
$strona = trim($strona);
if (!empty($strona))
$templ = str_replace("{strona}","<a href="http://$strona" target="_blank">$strona</a>",$templ);
else
$templ = str_replace("{strona}","brak",$templ);

można chyba zastąpić:

$strona = trim($strona);
$templ = str_replace('{strona}', empty($strona) ? 'brak' : ''.$strona.'', $templ);

1 użytkowników online, w tym zalogowanych: 0, gości: 1