Autor Zpráva
lacek
Profil
zdravím Vás,
potřeboval bych prosím pomoct s nastavením šířky sloupce tabulky,
pro zobrazení tabulky se využívá script a ie11 ignoruje nastavenou šířku sloupce

http://www.gastrosluzby.cz/jidelnicek-zdb/

a zde kód
                                  <?php
//správné načtení CSV souboru s českými znaky
function getCsv($fh, $len=255, $delim=';', $newline="n")
{
  if (!$fh || feof($fh)) return false;
  $ret = false;
  $buffer = '';
  $inquote = false;
  while(!feof($fh)) {
    $s = chop(fgets($fh, $len));

    if ($s != '') for ($i=0; $i<strlen($s); $i++) {
      switch($char = substr($s,$i,1)) {
      case '"':
        if (substr($s,$i+1,1) == '"') {
          $i++;
        } else {
          $inquote = !$inquote;
          continue 2;
        }
        break;
      case $delim:
        if (!$inquote) {
          $ret[] = $buffer;
          $buffer = '';
          continue 2;
        }
        break;
      }
      $buffer .= $char;
    }

    if (!$inquote || feof($fh)) {
      if (!feof($fh)) $ret[] = $buffer;
      $buffer = '';
      break;
    } else {
      $buffer .= $newline;
    }
  }

  return $ret;
}
//***************
$weekday = Date('w');
//NOVINKA       ve stredu i podle casu
 $hodinna = Date("H", Time()); 
 
/////////////////////////////////////
   // get url
   $instance =& JURI::getInstance();
   $url = JURI::getInstance()->toString();
if ((($weekday >= 3)  && ($hodinna >= 15)) ||(($weekday >= 4) ||($weekday == 0) )  ) {
//***************
print '<p>přejít na : <a href="'.JRoute::_($url).'#next">jídelní lístek pro následující týden</a></p>';
//***************
} else {
}
//***************
//cteni csv souboru
    $fh = fopen("CSV/ZDB.csv","r") or die('err');
////////vykonna cast programu
        while(!feof($fh)) {
      $x = getcsv($fh,999999,';','n');
      if ($x) $bunka=$x;
                }
    fclose($fh);
    $oddata = explode ("-", $bunka[0]);
    $dodata = explode ("-", $bunka[1]);
print "<table cellpadding='2'width='900'layout='fixed' >";
    print "<th colspan='10'>pro týden od $oddata[2].$oddata[1].$oddata[0] do $dodata[2].$dodata[1].$dodata[0]</th><tr class='tableFrame' bgcolor='#c8c8c8'>";
     print "<td>DRUH JÍDLA<br>gramáž<br>zvýhodněná</td><td width='150' align='center'>PONDĚLÍ</td><td  width='150' align='center'>ÚTERÝ</td><td  width='150' align='center'>STŘEDA</td><td  width='150' align='center'>ČTVRTEK</td><td  width='150' align='center'>PÁTEK</td><td align='center'>1)SOBOTA<BR>2)NEDĚLE</td>";
    print "</tr><tr class='jidel1row'>";
    print "<td>POLÉVKY<BR>0,3 l</td><td>$bunka[2]<br><div class='textGreen'>$bunka[3]</div></td><td>$bunka[4]<br><div class='textGreen'>$bunka[5]</div></td><td>$bunka[6]<br><div class='textGreen'>$bunka[7]</div></td><td>$bunka[8]<br><div class='textGreen'>$bunka[9]</div></td><td>$bunka[10]<br><div class='textGreen'>$bunka[11]</div></td><td>$bunka[12]<BR>$bunka[12]</td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>KLASICKÁ JÍDLA<BR>100 g</td><td>$bunka[14]<br><div class='textBlue'>$bunka[15]</div></td><td>$bunka[16]<br><div class='textBlue'>$bunka[17]</div></td><td>$bunka[18]<br><div class='textBlue'>$bunka[19]</div></td><td>$bunka[20]<br><div class='textBlue'>$bunka[21]</div></td><td>$bunka[22]<br><div class='textBlue'>$bunka[23]</div></td><td>$bunka[24]<BR>$bunka[25]</td>";
    print "</tr><tr class='jidel1row'>";
    print "<td>VÝBĚROVÁ JÍDLA<BR>120 g</td><td>$bunka[26]</td><td>$bunka[27]</td><td>$bunka[28]</td><td>$bunka[29]</td><td>$bunka[30]</td><td>$bunka[31]<BR>$bunka[32]</td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>SPECIALITY<BR>150 g</td><td>$bunka[33]</td><td>$bunka[34]</td><td>$bunka[35]</td><td>$bunka[36]</td><td>$bunka[37]</td><td></td>";
    print "</tr><tr class='jidel1row'>";
//   print "<td>ŽLUČNÍKOVÁ DIETA<BR>80 g</td><td>$bunka[106]<br><div class='textBlue'>$bunka[107]</div></td><td>$bunka[109]<br><div class='textBlue'>$bunka[110]</div></td><td>$bunka[112]<br><div class='textBlue'>$bunka[113]</div></td><td>$bunka[115]<br><div class='textBlue'>$bunka[116]</div></td><td>$bunka[118]<br><div class='textBlue'>$bunka[119]</div></td><td></td>";
    //print "</tr><tr class='jidel2row'>";
    //print "<td>DIABETICKÁ DIETA<BR>100 g</td><td>$bunka[69]</td><td>$bunka[70]</td><td>$bunka[71]</td><td>$bunka[72]</td><td>$bunka[73]</td><td></td>";
   //print "</tr><tr class='jidel2row'>";
   print "<td>MOUČNÉ JÍDLO</td><td>$bunka[38]</td><td>$bunka[39]</td><td>$bunka[40]</td><td>$bunka[41]</td><td>$bunka[42]</td><td>$bunka[43]<br>$bunka[44]</td>";
  //  print "</tr><tr class='jidel1row'>";
 //   print "<td>ZELENINOVÝ TALÍŘ</td><td>$bunka[141]</td><td>$bunka[143]</td><td>$bunka[145]</td><td>$bunka[147]</td><td>$bunka[149]</td><td></td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>ZELENINOVÝ TALÍŘ</td><td>$bunka[45]</td><td>$bunka[46]</td><td>$bunka[47]</td><td>$bunka[48]</td><td>$bunka[49]</td><td></td>";
    print "</tr><tr class='textBlackMini'>";
  //  print "<td>KLASICKÉ JÍDLO<BR>2. SMĚNA<BR>100 g</td><td>$bunka[171]</td><td>$bunka[172]</td><td>$bunka[173]</td><td>$bunka[174]</td><td>$bunka[175]</td><td></td>";
  //  print "</tr><tr class='jidel2row'>";
  //  print "<td>VÝBĚROVÉ JÍDLO<BR>2. SMĚNA<BR>120 g</td><td>$bunka[176]</td><td>$bunka[177]</td><td>$bunka[178]</td><td>$bunka[179]</td><td>$bunka[180]</td><td></td>";
  //  print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Poznámky k jídelnímu lístku:&nbsp;$bunka[50]</td>";
    print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Vyhotovil:&nbsp;$bunka[52]</td>";
    print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Datum:&nbsp;$bunka[51]</td>";
    print "</tr></table>";
///////////////////////////////////
//uprava ifu !!!!!!!!!!!!!!!!!!!!!!!!!!!! pridani hodina a weekday >=4
 if ((($weekday >= 3)  && ($hodinna >= 15)) ||(($weekday >= 4) ||($weekday == 0) )  ) {
//***************
print '<a name="next">&nbsp;</a>';
//***************
//cteni csv souboru
    $fh = fopen("CSV/ZDB-next.csv","r") or die('err');
////////vykonna cast programu
        while(!feof($fh)) {
      $x = getcsv($fh,999999,';','n');
      if ($x) $bunka=$x;
                }
    fclose($fh);
     $oddata = explode ("-", $bunka[0]);
    $dodata = explode ("-", $bunka[1]);
print "<table cellpadding='2' >";
    print "<th colspan='10'>pro týden od $oddata[2].$oddata[1].$oddata[0] do $dodata[2].$dodata[1].$dodata[0]</th><tr class='tableFrame' bgcolor='#c8c8c8'>";
    print "<td>DRUH JÍDLA<br>gramáž<br>zvýhodněná</td><td width='150' align='center'>PONDĚLÍ</td><td  width='150' align='center'>ÚTERÝ</td><td  width='160' align='center'>STŘEDA</td><td  width='160' align='center'>ČTVRTEK</td><td  width='160' align='center'>PÁTEK</td><td align='center'>1)SOBOTA<BR>2)NEDĚLE</td>";
    print "</tr><tr class='jidel1row'>";
    print "<td>POLÉVKY<BR>0,3 l</td><td>$bunka[2]<br><div class='textGreen'>$bunka[3]</div></td><td>$bunka[4]<br><div class='textGreen'>$bunka[5]</div></td><td>$bunka[6]<br><div class='textGreen'>$bunka[7]</div></td><td>$bunka[8]<br><div class='textGreen'>$bunka[9]</div></td><td>$bunka[10]<br><div class='textGreen'>$bunka[11]</div></td><td>$bunka[12]<BR>$bunka[12]</td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>KLASICKÁ JÍDLA<BR>100 g</td><td>$bunka[14]<br><div class='textBlue'>$bunka[15]</div></td><td>$bunka[16]<br><div class='textBlue'>$bunka[17]</div></td><td>$bunka[18]<br><div class='textBlue'>$bunka[19]</div></td><td>$bunka[20]<br><div class='textBlue'>$bunka[21]</div></td><td>$bunka[22]<br><div class='textBlue'>$bunka[23]</div></td><td>$bunka[24]<BR>$bunka[25]</td>";
    print "</tr><tr class='jidel1row'>";
    print "<td>VÝBĚROVÁ JÍDLA<BR>120 g</td><td>$bunka[26]</td><td>$bunka[27]</td><td>$bunka[28]</td><td>$bunka[29]</td><td>$bunka[30]</td><td>$bunka[31]<BR>$bunka[32]</td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>SPECIALITY<BR>150 g</td><td>$bunka[33]</td><td>$bunka[34]</td><td>$bunka[35]</td><td>$bunka[36]</td><td>$bunka[37]</td><td></td>";
    print "</tr><tr class='jidel1row'>";
//   print "<td>ŽLUČNÍKOVÁ DIETA<BR>80 g</td><td>$bunka[106]<br><div class='textBlue'>$bunka[107]</div></td><td>$bunka[109]<br><div class='textBlue'>$bunka[110]</div></td><td>$bunka[112]<br><div class='textBlue'>$bunka[113]</div></td><td>$bunka[115]<br><div class='textBlue'>$bunka[116]</div></td><td>$bunka[118]<br><div class='textBlue'>$bunka[119]</div></td><td></td>";
    //print "</tr><tr class='jidel2row'>";
    //print "<td>DIABETICKÁ DIETA<BR>100 g</td><td>$bunka[69]</td><td>$bunka[70]</td><td>$bunka[71]</td><td>$bunka[72]</td><td>$bunka[73]</td><td></td>";
   //print "</tr><tr class='jidel2row'>";
   print "<td>MOUČNÉ JÍDLO</td><td>$bunka[38]</td><td>$bunka[39]</td><td>$bunka[40]</td><td>$bunka[41]</td><td>$bunka[42]</td><td>$bunka[43]<br>$bunka[44]</td>";
  //  print "</tr><tr class='jidel1row'>";
 //   print "<td>ZELENINOVÝ TALÍŘ</td><td>$bunka[141]</td><td>$bunka[143]</td><td>$bunka[145]</td><td>$bunka[147]</td><td>$bunka[149]</td><td></td>";
    print "</tr><tr class='jidel2row'>";
    print "<td>ZELENINOVÝ TALÍŘ</td><td>$bunka[45]</td><td>$bunka[46]</td><td>$bunka[47]</td><td>$bunka[48]</td><td>$bunka[49]</td><td></td>";
    print "</tr><tr class='textBlackMini'>";
  //  print "<td>KLASICKÉ JÍDLO<BR>2. SMĚNA<BR>100 g</td><td>$bunka[171]</td><td>$bunka[172]</td><td>$bunka[173]</td><td>$bunka[174]</td><td>$bunka[175]</td><td></td>";
  //  print "</tr><tr class='jidel2row'>";
  //  print "<td>VÝBĚROVÉ JÍDLO<BR>2. SMĚNA<BR>120 g</td><td>$bunka[176]</td><td>$bunka[177]</td><td>$bunka[178]</td><td>$bunka[179]</td><td>$bunka[180]</td><td></td>";
  //  print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Poznámky k jídelnímu lístku:&nbsp;$bunka[50]</td>";
    print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Vyhotovil:&nbsp;$bunka[52]</td>";
    print "</tr><tr class='textBlackMini'>";
    print "<td colspan='7'>Datum:&nbsp;$bunka[51]</td>";
    print "</tr></table>";
///////////////////////////////////
  }
  
 
  
?>

děkuji
Tomáš123
Profil
lacek:
Kód, ktorý si sem dal, je nanič. Trochu so hľadal príčinu tvojho problému a vyplynulo, že problém nie je v tom, že IE nerešpektuje stanovenú šírku stĺpca, ale v tom, že nezalamuje riadky v bunkách nižšie. To stĺpec roztiahne a spôsobuje popísaný problém.

Príčina by teoreticky mohla byť v pixelovom nastavení veľkosti písma. Toto podozrenie sa ale nepotvrdilo, nehovoriac o tom, že problémy s absolútnymi jednotkami veľkostí písma už v novších IE nepretrvávajú.

Možno to naberie nový smer a možno niekto dokáže odhaliť príčinu problému zalomenia riadku.
Davex
Profil
lacek:
Souhlasím s Tomášem123. Problém bude asi tom, že Explorer neochotně zalamuje před delší skupinou slov, které jsou oddělené pouze čárkou bez mezery a ty se pak nevejdou na požadovanou šířku sloupce. IE se potom snaží šířku sloupců optimálně rozložit, aby obsah nepřesahoval. Zkus přidat za všechny čárky mezeru, aby se text zalamoval.

Kromě toho to nevypadá, že by HTML atribut layout='fixed' měl nějaký vliv na zobrazení a ve specifikacích HTML 4.01 a HTML 5 jsem ho nenašel, takže není jasné, co by měl přesně dělat. Nechtěl jsi raději použít CSS vlastnost table-layout?

Pak už je tam jenom taková drobnost, kdy první řádek je roztažený přes víc sloupců než obsahuje zbytek tabulky.
lacek
Profil
děkuji Vám oběma

to dravex: CSS vlastnost table-layout jsem tam pak dal ale bez výsledju.......
print "<table cellpadding='2'width='900'table-layout='fixed' >";
    print "<th colspan='7'>pro týden od $oddata[2].$oddata[1].$oddata[0]
................

taky jsem už vzkazoval těm, kteří píší jídelníčky ať mezi slovy vkládají mezery
jinak díky za počet sloupců :)


tak nevím co dál
juriad
Profil
table-layout je CSS vlastnost, nikoli atribut elementu table:
print "<table cellpadding='2' width='900' style='table-layout: fixed' >";
Pak by se ti mohla hodit vlastnost word-wrap.
print "<table cellpadding='2' width='900' style='table-layout: fixed; word-wrap: break-word' >";

Nebo bys mohl chtít text opravit v PHP (nahradit každou čárku za čárku následovanou mezerou):
print str_replace(',', ', ', $text);
Bubák
Profil
juriad:
nahradit každou čárku za čárku následovanou mezerou
Pokud v textu nejsou desetinná čísla, jinak by funkce musela být složitější.
lacek
Profil
děkuji juriade,

pomohla mi tvoje rada s
print "<table cellpadding='2' width='900' style='table-layout: fixed; word-wrap: break-word' >";

premává :)

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0