Autor Zpráva
quickspider
Profil
Zdravím Vás
potřeboval bych poradit jak postupně vypsat hodnoty pole, které budou součástí url obrázku.
v této verzi se vypisují všechna pole Podmínku if se mi nepodařilo sestavit.
Děkuju

pripojeni_db();
$dotaz = 'SELECT distinct serie FROM kinder join k_rok using(serie) where rok=2010 order by serie';
$vysledek = mysql_query($dotaz);

while ($dotaz = mysql_fetch_array($vysledek)) {
$pole1[]= $dotaz["serie"];
} 

$dotaz = 'SELECT slozka FROM kinder join k_rok using(serie) where rok=2010 order by serie';
$vysledek = mysql_query($dotaz);

while ($dotaz = mysql_fetch_array($vysledek)) {
$pole2[]= $dotaz["slozka"];
} 

define ("COLS", 4);  // počet sloupců
foreach ($pole1 as $serie) {
$dotaz ="SELECT figurka FROM kinder where serie='$serie' order by figurka";
$vysledek = mysql_query($dotaz);
if ($vysledek)
	 {
echo '<div class="titulek"><b>'.$serie."</b>".'</span></div>';
echo "<table align='center'>\n";



for ($i = 0; $dotaz = mysql_fetch_assoc($vysledek); $i++)
{
  if ($i % COLS == 0) echo "<tr>";
  echo '<td align="center"><img src="obr/';
  
  
 for ($i = 1; $i< count($pole2); $i++) {
echo  $pole2[$i];
}
  echo '/'.$dotaz["figurka"].'.gif" alt="'.$dotaz["figurka"].'"><br><center>'.$dotaz["figurka"].'</center></td>';}
 
  if ($i % COLS == COLS - 1) echo "</tr>\n";
}
if ($i != COLS - 1)
{
  while ($i++ % COLS != 0)
  {
    echo "<td>&nbsp;</td>";
  }
  echo "</tr>\n";
  echo "<tr>\n";
}
echo "</table>\n";
}
Tori
Profil
1. V jakém vztahu jsou série a složky? 1:1, 1:M ? Nemohly by se číst jedním dotazem obě zároveň? (místo DISTINCT použít GROUP BY)?

2. V jaké podobě jsou data ze sloupce složka, a jak přesně je chcete poskládat? Nemůžete místo označené části použít implode(), nebo GROUP_CONCAT na ř.9?
quickspider
Profil
Tori:
1. jedna série má jednu složku.
2. je to textový řetězec - název složky.
Tori
Profil
Něco takového by tedy nešlo?
// místo řádků 1-18:
define ("COLS", 4);
$dotaz = 'SELECT serie, slozka FROM kinder join k_rok using(serie) where rok=2010 group by serie';
$vysledek = mysql_query($dotaz);

while ($serie = mysql_fetch_array($vysledek)) {
    $dotaz ="SELECT figurka FROM kinder where serie='$serie[serie]' order by figurka";

// místo řádků 30-36:
    echo '<td align="center"><img src="obr/'.$serie['slozka'].'/'.$dotaz["figurka"].'.gif" 
        alt="'.$dotaz["figurka"].'"><br><center>'.$dotaz["figurka"].'</center></td>';

(Ten cyklus for, co začíná na ř.27 sice nějak nechápu, ale jestli to funguje tak jak chcete, tak to neřešte.) :)
Btw, recyklace proměnných je sice fajn, ale když pod názvem $dotaz je jednou SQL, jindy řádek dat z DB, to už se trochu hůř orientuje.
quickspider
Profil
pripojeni_db();
define ("COLS", 4);
$dotaz = 'SELECT serie, slozka FROM kinder join k_rok using(serie) where rok=2010 group by serie';
$vysledek = mysql_query($dotaz);

while ($serie = mysql_fetch_array($vysledek)) {
    $dotaz ="SELECT figurka FROM kinder where serie='$serie[serie]' order by figurka";

$vysledek = mysql_query($dotaz);
if ($vysledek)
	 {
echo '<div class="titulek"><b>'.$serie."</b>".'</span></div>';
echo "<table align='center'>\n";



for ($i = 0; $dotaz = mysql_fetch_assoc($vysledek); $i++)
{
  if ($i % COLS == 0) echo "<tr>";
  echo '<td align="center"><img src="obr/'.$serie['slozka'].'/'.$dotaz["figurka"].'.gif" 
        alt="'.$dotaz["figurka"].'"><br><center>'.$dotaz["figurka"].'</center></td>';
 
  if ($i % COLS == COLS - 1) echo "</tr>\n";
}
if ($i != COLS - 1)
{
  while ($i++ % COLS != 0)
  {
    echo "<td>&nbsp;</td>";
  }
  echo "</tr>\n";
  echo "<tr>\n";
}
echo "</table>\n";


někde tam chybí ukončovací závorka nebo jsem to špatně nakopíroval

ten kód jsem zkopíroval a "upravil" ze sekce FAQ

potom bych ještě potřeboval vědět jak
$dotaz["figurka"]
převedu na text bez diakritiky kvůli url na serveru?
Tori
Profil
quickspider:
někde tam chybí ukončovací závorka
Jestli dobře počítám, tak chybí dvě: ta označená + z toho while na ř.6.

Odstranění diakritiky se řešilo naposled tady, určitě najdete další možnosti.
quickspider
Profil
Tori:
tak jsem je doplnil asi blbě, protože mi se místo názvu na 12. řádku zobrazuje jen Array a cyklus se projde jen jednou. První jsem dal na 14. řádek a druhou na konec.
Tori
Profil
Mají být obě na konci, jestli správně rozumím logice. Stačí důsledně odsazovat každý nový blok, a hned uvidíte, odkud kam jsou jaké závorky a jestli to dává smysl.
Na ř.12 jsem přehlédla, že se tam taky používají data z DB, mělo to samozřejmě být:
echo '<div class="titulek"><b>'.$serie['serie'].'</b></span></div>';
quickspider
Profil
tak pořád se zobrazuje jeden záznam
   $dotaz ="SELECT figurka FROM kinder where serie='$serie[serie]' order by figurka";
quickspider
Profil
s tou diakritikou si taky nevím rady - není mi jasné jak dostat dát funkci hodnotu a pak vypsat výsledek.
použil jsem funkci:
function a($s)
{
    static $tbl = array("\xc3\xa1"=>"a","\xc3\xa4"=>"a","\xc4\x8d"=>"c","\xc4\x8f"=>"d","\xc3\xa9"=>"e","\xc4\x9b"=>"e","\xc3\xad"=>"i","\xc4\xbe"=>"l","\xc4\xba"=>"l","\xc5\x88"=>"n","\xc3\xb3"=>"o","\xc3\xb6"=>"o","\xc5\x91"=>"o","\xc3\xb4"=>"o","\xc5\x99"=>"r","\xc5\x95"=>"r","\xc5\xa1"=>"s","\xc5\xa5"=>"t","\xc3\xba"=>"u","\xc5\xaf"=>"u","\xc3\xbc"=>"u","\xc5\xb1"=>"u","\xc3\xbd"=>"y","\xc5\xbe"=>"z","\xc3\x81"=>"A","\xc3\x84"=>"A","\xc4\x8c"=>"C","\xc4\x8e"=>"D","\xc3\x89"=>"E","\xc4\x9a"=>"E","\xc3\x8d"=>"I","\xc4\xbd"=>"L","\xc4\xb9"=>"L","\xc5\x87"=>"N","\xc3\x93"=>"O","\xc3\x96"=>"O","\xc5\x90"=>"O","\xc3\x94"=>"O","\xc5\x98"=>"R","\xc5\x94"=>"R","\xc5\xa0"=>"S","\xc5\xa4"=>"T","\xc3\x9a"=>"U","\xc5\xae"=>"U","\xc3\x9c"=>"U","\xc5\xb0"=>"U","\xc3\x9d"=>"Y","\xc5\xbd"=>"Z");
    return strtr($s, $tbl);
} 

pak jsem si myslel, že když ji předám nějaký řetězec místo proměnné, tak to provede fci.
echo (a(ččč));
echo $s;

tak vůbec nevím jak na to?

Díky a omlouvám se za banální problémy.
Dědek
Profil
Něco o uživatelských funkcích najdeš třeba v dokumentaci k PHP user functions.

Takže volání bude dané funkce vypadat následovně:
<?php
function a($s) {
  static $tbl = array("\xc3\xa1"=>"a","\xc3\xa4"=>"a","\xc4\x8d"=>"c","\xc4\x8f"=>"d","\xc3\xa9"=>"e","\xc4\x9b"=>"e","\xc3\xad"=>"i","\xc4\xbe"=>"l","\xc4\xba"=>"l","\xc5\x88"=>"n","\xc3\xb3"=>"o","\xc3\xb6"=>"o","\xc5\x91"=>"o","\xc3\xb4"=>"o","\xc5\x99"=>"r","\xc5\x95"=>"r","\xc5\xa1"=>"s","\xc5\xa5"=>"t","\xc3\xba"=>"u","\xc5\xaf"=>"u","\xc3\xbc"=>"u","\xc5\xb1"=>"u","\xc3\xbd"=>"y","\xc5\xbe"=>"z","\xc3\x81"=>"A","\xc3\x84"=>"A","\xc4\x8c"=>"C","\xc4\x8e"=>"D","\xc3\x89"=>"E","\xc4\x9a"=>"E","\xc3\x8d"=>"I","\xc4\xbd"=>"L","\xc4\xb9"=>"L","\xc5\x87"=>"N","\xc3\x93"=>"O","\xc3\x96"=>"O","\xc5\x90"=>"O","\xc3\x94"=>"O","\xc5\x98"=>"R","\xc5\x94"=>"R","\xc5\xa0"=>"S","\xc5\xa4"=>"T","\xc3\x9a"=>"U","\xc5\xae"=>"U","\xc3\x9c"=>"U","\xc5\xb0"=>"U","\xc3\x9d"=>"Y","\xc5\xbd"=>"Z");
  return strtr($s, $tbl);
} 

echo a('ččč'); //vypíše ccc
$text = a('ččč'); //v proměnné text bude ccc
?>

Pozor, tahle funkce bude fungovat pouze tehdy, pokud bude text v kódováni UTF8.
quickspider
Profil
Dědek:
snad jsem toto už vyřešil. psal jsem to možná dobře, ale chyba byla v kódování. Uvidím jak to bude vypadat na serveru. Díky
quickspider
Profil
Neporadil by mi někdo, proč se cyklus po první hodnotě zastaví?

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:

0