ugrás a tartalomhoz

Táblázatba tördelés - nem mindenhol működik

RandolF · 2005. Már. 29. (K), 18.41
Sziasztok!
Van egy érdekes problémám, nevezetesen tömbből kéne elválasztó karakterhármasokat tartalmazó stringekből azok alapján újabb tömböket létrehozva táblázatcellákba tördelni azok tartalmát.
Nem is a megvalósítással van a gondom, hanem azzal, hogy míg nálam, localhoston minden gond nékül műküdik, (nem ingyenes) szerverre feltöltve nem.

Eredetileg külső fájlból olvastam file() függvénnyel a tömbbe, de mivel gondoltam, hogy biztos azért nem működik, mert a szerveren tiltva van a függvény, így egyszerűen beírtam az értékeket (az ezeket tartalmazó file praktikus okokból valójában include-olva van, csak itt az egszerűség kedvéért egyesítettem a "végrehajtó" file-lal). A kód:

<?php

     $partners = array();

     //A megjelenő, képpel ellátott linkek listája
     //Megadási mód: $partners[] = "kép elérési útja (célszerű ékezet-mentes nevet adni neki)|*|oldal elérési útja|*|oldal leírása|*|kép vízszintes mérete|*|kép függőleges mérete";
     $partners[] = "partners/kep.jpg|*|http://oldal.hu|*|Oldal1 leírás|*|120|*|30";
     $partners[] = "partners/kep2.jpg|*|http://oldal2.com|*|Oldal2 leírása|*|100|*|30";
     
  function piclinker_into_td($lines, $afterpic)
  {
  	$result = "<td>";
  	//foreach ($lines as $line_num => $line)
  	reset($lines);
  	while (list($line_num, $line) = each($lines)) {
  		$line_array = explode("|*|", $line);
  		if ((bcmod($line_num, 4) == 0) and ($line_num != 0)) {
  			if ($line_num <= 8) {
  				if (bcmod($line_num, 8) == 0) {
  					$result .= "</tr><tr>\n<td>";
  					$result .= "<a href='".((isset($line_array[1])) ? $line_array[1] : "#")."' title='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'><img src='".((isset($line_array[0])) ? $line_array[0] : e_BASE."partners/noadpic.png")."' class='contpic' alt='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'".((isset($line_array[3])) ? "width='".$line_array[3]."'" : "").((isset($line_array[4])) ? "height='".$line_array[4]."'" : "")." /></a>".$afterpic."\n";
  				}
  				else {
  					$result .= "</td><td>";
  					$result .= "<a href='".((isset($line_array[1])) ? $line_array[1] : "#")."' title='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'><img src='".((isset($line_array[0])) ? $line_array[0] : e_BASE."partners/noadpic.png")."' class='contpic' alt='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'".((isset($line_array[3])) ? "width='".$line_array[3]."'" : "").((isset($line_array[4])) ? "height='".$line_array[4]."'" : "")." /></a>".$afterpic."\n";
  				}
  			}
  			else {
  				if (bcmod(($line_num-8), 12) == 0) {
  					$result .= "</tr><tr>\n<td>";
  					$result .= "<a href='".((isset($line_array[1])) ? $line_array[1] : "#")."' title='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'><img src='".((isset($line_array[0])) ? $line_array[0] : e_BASE."partners/noadpic.png")."' class='contpic' alt='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'".((isset($line_array[3])) ? "width='".$line_array[3]."'" : "").((isset($line_array[4])) ? "height='".$line_array[4]."'" : "")." /></a>".$afterpic."\n";
  				}
  				else {
  					$result .= "</td><td>";
  					$result .= "<a href='".((isset($line_array[1])) ? $line_array[1] : "#")."' title='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'><img src='".((isset($line_array[0])) ? $line_array[0] : e_BASE."partners/noadpic.png")."' class='contpic' alt='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'".((isset($line_array[3])) ? "width='".$line_array[3]."'" : "").((isset($line_array[4])) ? "height='".$line_array[4]."'" : "")." /></a>".$afterpic."\n";
  				}
  			}
  		}
  		else {
  			$result .= "<a href='".((isset($line_array[1])) ? $line_array[1] : "#")."' title='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'><img src='".((isset($line_array[0])) ? $line_array[0] : e_BASE."partners/noadpic.png")."' class='contpic' alt='".((isset($line_array[2])) ? $line_array[2] : $line_array[1])."'".((isset($line_array[3])) ? "width='".$line_array[3]."'" : "").((isset($line_array[4])) ? "height='".$line_array[4]."'" : "")." /></a>".$afterpic."\n";
  		}
  	}
  	if (count($lines) < 5) {
  		$result .= "<td></td>";
  	}
  	$result .= "</td>";
  	return $result;
  }
  
  echo "<table>\n<tr>\n<td>Szöveg</td>".piclinker_into_td($partners, "<br />")."</tr>\n</table>";

?>
Mi lehet ennek a jelenségnek az oka? Mert szerintem semmi nincs a függvényben, aminek egy fizetős szerveren tiltva kéne lennie (kínomban már azt a foreachet is lecseréltem while-os párjára -- azért van kikommentelve).
Kérem, segítsetek, mert már ez az egész kezd az agyamra menni. Nem mintha nem lenne más megoldás, de érdekel, hogy ez így miért nem működik.
 
1

Szerintem ezt csak a szerveren tudják

tiny · 2005. Már. 30. (Sze), 15.11
Én is csak tippelgetek. Ugyanaz a PHP verzió? Nem újítottak be egy PHP5-re vagy valami? Ha fizetős a szerver, akkor szerintem annyit nyugodtan megtehetnek a felhasználóért, hogy megmondják, hogy mi a baja ennek a dolognak. Ha valaki mást gondol, s tudja a választ, akkor arra én is kíváncsi vagyok... Egy e-mailt szerintem nekik(szerver) mindenképp megér. Üdv:
Mr.Tiny :: MRT Site
2

Nincsenek nagy verzió eltérések

RandolF · 2005. Már. 30. (Sze), 16.00
Köszönöm válaszodat. Localhoston a PHP verzió, amit használok: 4.3.9; a szerveren: 4.3.10. Úgy gondolom, a kettő között nincs akkora különbség, hogy egy ilyen egyszerű függvény (if-eken és egy while-on kívül szinte semmi más nincs is benne) ne működhessen rendesen; úgy tünik, marad az általad is javasolt "mail a szervereseknek" megoldás.
Mindegy, megnézem hogy ha egy, többdimenziós tömbbel csinálom, és így kihagyom az explode()-os részt, mit reagál.

Azért, ha valakinek van még valami ötlete, kérem ne tartsa magában!
3

Megoldódott

RandolF · 2005. Ápr. 24. (V), 00.48
Közlöm, hátha valakinek hasznára válik...
Kiderült, hogy a bcmod() függvény használatával volt a baj (de hogy miért nem tudom); úgy jöttem rá, hogy mikor kínomban már azt is lecseréltem hasonló feladatokat ellátó saját függvényre, gond nélkül működött (elég meglepett voltam).