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:
  1. <?php  
  2.   
  3.      $partners = array();  
  4.   
  5.      //A megjelenő, képpel ellátott linkek listája  
  6.      //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";  
  7.      $partners[] = "partners/kep.jpg|*|http://oldal.hu|*|Oldal1 leírás|*|120|*|30";  
  8.      $partners[] = "partners/kep2.jpg|*|http://oldal2.com|*|Oldal2 leírása|*|100|*|30";  
  9.        
  10.   function piclinker_into_td($lines$afterpic)  
  11.   {  
  12.     $result = "<td>";  
  13.     //foreach ($lines as $line_num => $line)  
  14.     reset($lines);  
  15.     while (list($line_num$line) = each($lines)) {  
  16.         $line_array = explode("|*|"$line);  
  17.         if ((bcmod($line_num, 4) == 0) and ($line_num != 0)) {  
  18.             if ($line_num <= 8) {  
  19.                 if (bcmod($line_num, 8) == 0) {  
  20.                     $result .= "</tr><tr>\n<td>";  
  21.                     $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";  
  22.                 }  
  23.                 else {  
  24.                     $result .= "</td><td>";  
  25.                     $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";  
  26.                 }  
  27.             }  
  28.             else {  
  29.                 if (bcmod(($line_num-8), 12) == 0) {  
  30.                     $result .= "</tr><tr>\n<td>";  
  31.                     $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";  
  32.                 }  
  33.                 else {  
  34.                     $result .= "</td><td>";  
  35.                     $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";  
  36.                 }  
  37.             }  
  38.         }  
  39.         else {  
  40.             $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";  
  41.         }  
  42.     }  
  43.     if (count($lines) < 5) {  
  44.         $result .= "<td></td>";  
  45.     }  
  46.     $result .= "</td>";  
  47.     return $result;  
  48.   }  
  49.     
  50.   echo "<table>\n<tr>\n<td>Szöveg</td>".piclinker_into_td($partners"<br />")."</tr>\n</table>";  
  51.   
  52. ?>  
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).