Autor Zpráva
Mr.Sammet
Profil
Zdravím. Potřeboval bych poradit ohledně CSS v PHP. Mám za úkol propojit MySQL s PHP a vytvořit formulář, pomocí kterého se budou do databáze vkládat prvky. Ve výpisu databáze je jedna z proměnných, která se nazývá pohlaví. Úkoly zní:

Pomocí CSS stylů zajistěte následující vlastnosti:

1, řádek tabulky, v němž je muž, bude mít světle modrou barvu,
2, řádek tabulky, v němž je žena, bude mít světle červenou barvu,
3, tabulka bude mít samozřejmě rastr.

Se souborem CSS bych si poradil, vytvořil bych třídu muž a žena, které bych nastavil určité formátování. Ale kde a co mám vložit v tom php soboru? Díky

KÓD VÝPISU:

<?php
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
 <head><!--  ščřžýŠČŘŽÝ -->
  <meta name="generator" content="PSPad editor, www.pspad.com" />
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="mysql.css" type="text/css">
  
  
  <title></title>
  
 </head>
 <body>


  

  
  <?php

 include "propojeni.php";
 $sql="SELECT * FROM tabulka";
 $pole=MySQL_Query($sql);
  echo "<table border=’5’ cellpadding=’5’ align=’left’>";
  echo "<tr><td><b>Jméno</b></td><td><b>Příjmení</b></td><td><b>E-Mail</b></td><td><b>Věk</b></td><td><b>Pohlaví</b></td></tr>";
  
  while($zaznam=MySQL_Fetch_Array($pole)) {
  echo "<tr>";
  
  echo  "<td>".$zaznam[jmeno]."</td><td>".$zaznam[prijmeni]."</td><td>".$zaznam[email]."</td><td>".$zaznam[vek]."</td><td>".$zaznam[pohlavi]."</td>";
  echo "</tr>";

         
  }
  echo "</table>";

  ?>
  
  

 </body>
</html>
Joker
Profil
Mr.Sammet:
PHP samo se uživateli nezobrazuje, takže tam nějaké formátování nemá smysl.
V daném případě PHP generuje HTML… no a nastylovat HTML pomocí CSS už umíte.
Mr.Sammet
Profil
Joker:

Proč ne? pomocí echo mi šlo naformátovat text spojený s css.

př.
echo "<p class=\"cervena\">Ahoj</p>";
DarkMeni
Profil
Tak to udělej podobně, jen ještě použij podmínku
if ($zaznam["pohlavi"] == "muz")
{
  echo "<tr class=\"muz\">";
}
else
{
  echo "<tr class=\"zena\">";
}

//Nebo ternární operátor

echo "<tr class=\"" . ($zaznam["pohlavi"] == "muz" ? "muz" : "zena") . "\">";
peta
Profil
Za predpokladu, ze ti tam nikdo nepodstrci php/js kod, to jde napsat i takto:
echo '<tr class="{$zaznam['pohlavi']}">';
Mr.Sammet
Profil
Tak jsem to zkusil a háže mi to chybu
Parse error: syntax error, unexpected T_IF, expecting ',' or ';' in /home/free/ic.cz/m/motuzm/root/www/vybrat.php on line 36

  <?php

 include "propojeni.php";
 $sql="SELECT * FROM tabulka";
 $pole=MySQL_Query($sql);
  echo "<table border=’5’ cellpadding=’5’ align=’left’>";
  echo "<tr><td><b>Jméno</b></td><td><b>Příjmení</b></td><td><b>E-Mail</b></td><td><b>Věk</b></td><td><b>Pohlaví</b></td></tr>";
  
  while($zaznam=MySQL_Fetch_Array($pole)) {
  echo "<tr>";
  
  echo  "<td>".$zaznam[jmeno]."</td><td>".$zaznam[prijmeni]."</td><td>".$zaznam[email]."</td><td>".$zaznam[vek]."</td><td>".$zaznam[pohlavi]."</td>"
  
  if ($zaznam["pohlavi"] == "muz")
{
  echo "<tr class=\"muz\">";
}
else
{
  echo "<tr class=\"zena\">";
}
  
  echo "</tr>";
         
  }
  echo "</table>";

  ?>
blaaablaaa
Profil
Mr.Sammet:
Zkousels tu chybu precist? na konci 12.radku ti chybi strednik
Mr.Sammet
Profil
blaaablaaa:

a jo, díky :)
ale i tak mi ta kaskáda nefunguje ...

.muz{
color: red;
}

.zena{
color: blue;
}

zatím jsem tam dal provizorně jen změnu barvy ...
blaaablaaa
Profil
Mr.Sammet:
Protoze ty podminky a vypis mas na spatnem miste. Zkus se podivat na vygenerovany html kod.
Mr.Sammet
Profil
blaaablaaa:

A jak to má být správně? Ať zkouším, co zkouším, tak výsledek je pořád špatný.
Kubo2
Profil
Mr.Sammet:
Tak napíš, čo skúšaš, nech ti môžme poradiť. Hotový kód tu zadarmo nedostaneš, ale veľmi radi ti pomôžeme (predpokladám, že ostatní máte podobný názor).
peta
Profil
radek 10: echo "<tr>";
radek 12: echo "<td>...data..."
radek 16: echo "<tr class=\"muz\">";
z hlediska html ti to vygeneruje kod o dvou tr
<tr>
  <td>...data...</td>
</tr>
<tr class=\"muz\">
</tr>
Na tom druhem tr ti je ten class zbytecny, kdyz tam neni td, ktere by se obarvilo. Navic v css je problem obarvit tr, spravne to funguje obvykle az u td, takze si sprav i css.

Html kod se v prohlizeci zjistuje pres menu zobrazit zdrojovy kod, ve FF je to navazane tez na zkratku ctrl+u. Tez muzes stranku zobrazit ve validatoru a najit dalsi chyby.
juriad
Profil
Já se nad ním smiluji; když uvidí hotový kód, snad jej to trkne.
<?php

include "propojeni.php";

$sql = "SELECT * FROM tabulka";
$vysledek = mysql_query($sql);

echo "<table border='5' cellpadding='5' align='left'>
    <thead>
        <tr>
            <th>Jméno</th>
            <th>Příjmení</th>
            <th>E-Mail</th>
            <th>Věk</th>
            <th>Pohlaví</th>
        </tr>
    </thead>
    <tbody>";
 
while ($zaznam = mysql_fetch_assoc($vysledek)) {
    if ($zaznam["pohlavi"] == "muz") {
        echo "<tr class=\"muz\">";
    } else {
        echo "<tr class=\"zena\">";
    }
  
    echo "<td>" . $zaznam['jmeno'] . "</td>";
    echo "<td>" . $zaznam['prijmeni'] . "</td>";
    echo "<td>" . $zaznam['email'] . "</td>";
    echo "<td>" . $zaznam['vek'] . "</td>";
    echo "<td>" . $zaznam['pohlavi'] . "</td>";
    echo "</tr>";
}

echo "</tbody></table>";

?>

peta:
Color se normálně dědí (tam problém nehrozí); jiné to je s background-color; tam je třeba zacílit přímo buňky (.pohlavi td).
Mr.Sammet
Profil
juriad:

Díky moc! :-) Už mi je to jasné
DarkMeni
Profil
Jestli máš v tabulce nějaký jednoduchý hodnoty bez diakritiky (a sloupec třeba typu enum nebo nějak jinak ošetřený to, aby se tam neobjevilo nic jinýho než ty dvě možnosti), tak bude efektivnější řešení od peti v [#5] - můžeš vynechat podmínku a do atributu class rovnou dosadit to, co vytáhneš z db
juriad
Profil
DarkMeni:
Jelikož tady rozhodně nejde o výkon, je lepší to napsat tak, aby to bylo čitelné.

U toho petova řešení jsou blbě vnější uvozovky.
peta
Profil
juriad: To je mozne, ze to s jednoduchymi nejde, netestoval jsem to.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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