Autor | Zpráva | ||
---|---|---|---|
quickspider Profil |
#1 · Zasláno: 13. 6. 2011, 15:58:47
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> </td>"; } echo "</tr>\n"; echo "<tr>\n"; } echo "</table>\n"; } |
||
Tori Profil |
#2 · Zasláno: 13. 6. 2011, 17:13:34
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 |
#3 · Zasláno: 13. 6. 2011, 20:24:16
Tori:
1. jedna série má jednu složku. 2. je to textový řetězec - název složky. |
||
Tori Profil |
#4 · Zasláno: 13. 6. 2011, 20:51:22 · Upravil/a: Tori
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>'; 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 |
#5 · Zasláno: 13. 6. 2011, 21:15:40 · Upravil/a: quickspider
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> </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"] |
||
Tori Profil |
#6 · Zasláno: 13. 6. 2011, 21:31:03 · Upravil/a: Tori
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 |
#7 · Zasláno: 13. 6. 2011, 22:00:58
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 |
#8 · Zasláno: 13. 6. 2011, 22:32:58 · Upravil/a: Tori
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 |
#9 · Zasláno: 13. 6. 2011, 23:31:27
tak pořád se zobrazuje jeden záznam
$dotaz ="SELECT figurka FROM kinder where serie='$serie[serie]' order by figurka"; |
||
quickspider Profil |
#10 · Zasláno: 13. 6. 2011, 23:46:34 · Upravil/a: quickspider
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 |
#11 · Zasláno: 14. 6. 2011, 00:34:58
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 |
#12 · Zasláno: 14. 6. 2011, 01:37:09
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 |
#13 · Zasláno: 14. 6. 2011, 20:43:23
Neporadil by mi někdo, proč se cyklus po první hodnotě zastaví?
|
||
Časová prodleva: 13 let
|
0