Diskuze: Vytvoření mezery mezi sloupci

PHP PHP Vytvoření mezery mezi sloupci American English version English version

Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Zdravím. Z vytvořené databáze jsem si vypsal data a rozdělil je do dvou sloupečků. Jenže ty jsou na sebe příliš nalepené a já bych chtěl, aby mezi nimi bylo místo. Na výstupu to vypadá tak, že je vypsané políčko s rozmezím 2 časů, poté políčko Volno/Obsazeno. Do níže přiloženého kódu vepíši slovo "SEM VLOŽIT MEZERU" na místo, kde chci udělat rozestup buněk na šířku alespoň jednoho stejně velkého políčka:

for($i=0;$i<count($terminy[0]);$i++)
 {

   echo "<tr>";

   echo "<td>".htmlspecialchars($terminy[0][$i]['cas']).
           "</td>";
   if ($terminy[0][$i]['obsazeno']) {
  echo '<td id="full">'. "Obsazeno"."</td>";
}
 if (!$terminy[0][$i]['obsazeno']) {
  echo '<td id="empty">'. "Volno"."</td>";
}
//SEM VLOŽIT MEZERU//
   echo isset($terminy[1][$i]) ? "<td>".htmlspecialchars($terminy[1][$i]['cas'])."</td>" : '';
   if ($terminy[1][$i]['obsazeno']) {
  echo '<td id="full">'. "Obsazeno"."</td>";
}
if (!$terminy[1][$i]['obsazeno']) {
  echo '<td id="empty">'. "Volno"."</td>";
}
   echo "</tr>";

 }
 
Odpovědět 22.10.2014 20:36
Avatar
Odpovídá na Michal Kuba
Martin Konečný (pavelco1998):

To je spíš záležitost CSS. Já to taky moc neumim, takže ti možná poradím špatně, ale zkus tomu dalšímu <td> hodit nějaký padding-left.
Nebo pokud chceš mezeru u všech sloupců a řádků, můžeš použít atributy cellpadding a cellspacing u <table>.

 
Nahoru Odpovědět  +1 22.10.2014 20:41
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Kuba:

padding mi na to vůbec nefunguje. Asi to je tím, že je to z databáze, nebo nevím. Chci právě jen udělat mezeru mezi druhým a třetím sloupcem políček, nikde jinde.. Mám nahrát i obrázek přímo z webu a naznačit, kde a jak to myslím?

 
Nahoru Odpovědět 22.10.2014 20:48
Avatar
Odpovídá na Michal Kuba
Martin Konečný (pavelco1998):

Je jedno, odkud to je, je to tag jako tag.

<td id="neco" style="padding-left:25px;">

by podle mě fungovat mělo.
Zkus se podívat na google, něco ve smyslu "space between table cells". Určitě najdeš něco na stackoverflow, kde maj podle mě dobré odpovědi.

 
Nahoru Odpovědět 22.10.2014 20:56
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Michal Kuba
Tonda Kozák:

Možná by bylo lepší dát sem odkaz na tu tvoji problematickou stránku.

 
Nahoru Odpovědět 22.10.2014 21:02
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Tonda Kozák
Michal Kuba:

Tady je přesně ta tabulka, kde chci mít mezeru, mezi Volno a třetím sloupcem:
http://brnenskymikulas.cekuj.net/objednavka.php

 
Nahoru Odpovědět 22.10.2014 21:10
Avatar
Odpovídá na Michal Kuba
Martin Konečný (pavelco1998):

Nedávej id="odrazeni", ale class="odrazeni" (v CSS místo tečky dej křížek #). Jedno ID lze použít jen jednou.

 
Nahoru Odpovědět 22.10.2014 21:20
Avatar
Richard
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Richard:

Dle specifikace možná, v praxi je to jedno.
Pokud chceš mít mezeru o velikosti buňky, co tam nacpat rovnou buňku?

Nahoru Odpovědět 22.10.2014 21:24
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Richard
Tonda Kozák:

Ani v praxi není dobré si na to zvykat. Jak pak budeš odkazovat na kotvu? Jak budeš vybírat JavaScriptem?

Ale myslím, že rada je správná. Dej tam mezi ty dva sloupce novou buňku, která nebude mít ohraničení. Margin na buňky nefunguje a vymýšlet nějaké složitosti nemá asi cenu.

 
Nahoru Odpovědět 22.10.2014 21:27
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Richard
Michal Kuba:

To jsem se snažil nějak takto:

echo "<td>" "</td>"

Ale nešlo to, NetBeans mi háže chybu syntaxe.

 
Nahoru Odpovědět 22.10.2014 21:27
Avatar
Odpovídá na Michal Kuba
Michal Štěpánek:

a takto

echo "<td>&nbsp;</td>";

by to nešlo?

Nahoru Odpovědět 22.10.2014 21:31
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Michal Kuba
Tonda Kozák:

Dej to

echo "<td class='mezera'></td>";

Třídu mezera si můžeš naformátovat jak chceš velkou.

To tvoje ti nefungovalo, protože tam máš 2 řetězce jen tak - žádné spojení, žádné středníky.

Editováno 22.10.2014 21:34
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 22.10.2014 21:32
Avatar
Odpovídá na Richard
Martin Konečný (pavelco1998):

Takže budeme nováčka učit špatné zvyky, aby v příštím vlákně bylo "Proč mi document.getE­lementById('ne­jakyId')" nevrací pole všech elementů :)
Ale je pravda, že jsem si myslel, že se ten styl použije jen jednou, takže se omlouvám, moje neznalost.

Editováno 22.10.2014 21:39
 
Nahoru Odpovědět  +1 22.10.2014 21:38
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Tonda Kozák
Michal Kuba:

Nechám si to tam takto. Mám akorát nastavený pro CELOU tabulku rámeček, takže i této buňce se to zobrazí, i když jsem v CSS určil:

border: none;

nebo:

border: 2px solid #(barva pozadí);

ale to je už docela drobnost. Lepší prázdné políčko než to mít tak naplácnutý.

 
Nahoru Odpovědět 22.10.2014 22:15
Avatar
Odpovídá na Michal Kuba
Martin Konečný (pavelco1998):

Zkus styl té buňky napsat jako

border: none !important;
Editováno 22.10.2014 22:36
 
Nahoru Odpovědět 22.10.2014 22:35
Avatar
Richard
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Richard:

Já mu neříkal ať to použije, jen jsem opravil tvůj výrok, který nebyl pravdivý.

Nahoru Odpovědět 23.10.2014 0:25
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Tonda Kozák
Člen
Avatar
Odpovídá na Michal Kuba
Tonda Kozák:

Nedoporučuji moc používat !important. Většinou je to důsledek špatně napsaného stylu a pak se blbě hledají chyby.

Nefunguje ti to proto, že

#vypis td {
}

přebije

.mezera {
}

protože ten styl definuje konkrétněji.
Když použiješ

#vypis .mezera {
 border: none;
}

bude ti to fungovat jak má.

 
Nahoru Odpovědět 23.10.2014 7:06
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Tonda Kozák
Michal Kuba:

Díky. Nevěděl jsem, jak přebít právě ten #vypis aniž bych ho musel upravovat.

 
Nahoru Odpovědět 23.10.2014 7:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.