Autor | Zpráva | ||
---|---|---|---|
bajola Profil |
#1 · Zasláno: 1. 8. 2013, 15:25:13
Mám pouze minimální základy PHP a potřebovala bych poradit se správným zapisem PHP.
Potřebuji vypisovat na stránce soubory, které v backendu vkládám do vytvořených uživatelských polí. Udělala jsem si uživatelská pole pro název souboru a pro cestu k souboru. Souborů může být libovolný počet. Už 2 dny zkoumám, jak správně vypsat pole, aby se z nich tvořil odkaz v neuspořádaném seznamu. Výsledek má vypadat takto: <ul> <li><a href="cesta-k-souboru1">Název souboru 1</a></li> <li><a href="cesta-k-souboru2">Název souboru 2</a></li> <li><a href="cesta-k-souboru3">Název souboru 3</a></li> </ul> Ale vypisuje se to takto: <ul> <li><a href="cesta-k-souboru1"></a></li> <li><a href="cesta-k-souboru2"></a></li> <li><a href="cesta-k-souboru3">Název souboru 1</a></li> Název souboru2Název souboru3 </ul> Můj PHP zápis je takový: <?php $prilohy = get_post_meta($post->ID, "wpcf-priloha"); // toto vypisuje array - URL souboru $nazvypriloh = get_post_meta($post->ID, "wpcf-nazev-prilohy"); // toto vypisuje array - názvy souboru ?> <ul> <?php $vypis=''; foreach ($prilohy as $priloha => $hodnota) { $vypis.= '<li><a href="' . $hodnota . '">'; } foreach ($nazvypriloh as $nazevprilohy => $hodnota) { $vypis.= $hodnota . '</a></li>'; } echo $vypis; ?> </ul> Může mi někdo poradit, jak má být ten zápis správně? Předem děkuji. |
||
Chro Profil |
#2 · Zasláno: 1. 8. 2013, 17:02:41
Přílohy a názvy příloh sluč do jednoho pole jako klíč a hodnotu, pak vypiš.
<ul> <?php $prilohy = array('a_1.jpg', 'b-2.jpg'); $nazvypriloh = array('nazev 1', 'nazev 2'); $slouceni = array_combine($prilohy, $nazvypriloh); $zaznamy = ''; foreach ($slouceni as $priloha => $nazevprilohy) { $zaznamy.= '<li><a href="'.$priloha.'">'.$nazevprilohy."</a></li>\n"; } echo $zaznamy; ?> </ul> |
||
bajola Profil |
#3 · Zasláno: 1. 8. 2013, 19:37:09 · Upravil/a: bajola
Diky moc, funguje to, konecne se dnes vyspim :-)
Mohl bys mi akorát ještě poradit, jak seřadit ty pole, např. dle data vložení? |
||
Alphard Profil |
#4 · Zasláno: 1. 8. 2013, 22:25:46
Datum uložení (změny) zjistíte pomocí filemtime(), ukládal bych to s dalšími údaji do vícerozměrného pole a pak řadil. To znamená pole, které máte, projít cyklem, zjistit data změny, vytvořit nové pole, seřadit ho, vypsat.
|
||
Chro Profil |
#5 · Zasláno: 2. 8. 2013, 17:27:00
bajola:
Skript dle doporučeného postupu od Alpharda se základním ošetřením možných chyb. <?php $prilohy = array(); //vstup pole $nazvypriloh = array(); //vstup pole $chyba = FALSE; if (is_array($prilohy) && is_array($nazvypriloh)) //kontrola, zda jsou vstupy pole { $prilohypocet = count($prilohy); $nazvyprilohpocet = count($nazvypriloh); if (($prilohypocet === $nazvyprilohpocet) && (($prilohypocet + $nazvyprilohpocet) > 0)) //kontrola, zda jsou počty položek v polích rovny a nenulové { $slouceni = array_combine($prilohy, $nazvypriloh); $novepole = array(); foreach ($slouceni as $priloha => $nazevprilohy) { if (file_exists($priloha)) //kontrola, zda soubor existuje { $datum = filemtime($priloha); } else { continue; } $novepole[$datum] = array($priloha, $nazevprilohy); } } else { $chyba = TRUE; } } else { $chyba = TRUE; } if (!$chyba && count($novepole) > 0) //kontrola, zda nenastala chyba a je co vypisovat { //ok, výpis položek ksort($novepole); //nebo krsort($novepole), třídit od nejstarších po nejnovější $zaznamy = ''; foreach ($novepole as $polozky) { $zaznamy.= <<<EOT <li><a href="{$polozky[0]}">{$polozky[1]}</a></li> EOT; } echo <<<EOT <ul> {$zaznamy} </ul> EOT; } else { //chyba, hlášení echo <<<EOT <div class="chyba"> Litujeme, tato část stránky není momentálně dostupná. </div> EOT; } ?> |
||
Časová prodleva: 11 let
|
0