| 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: 15 let
|
|||
0