Autor Zpráva
wolfik
Profil
Zdravíčko,

nevěděl jsem kam tento dotaz zařadit, protože se skládá z JS, PHP a MySQL. Ale nejvíc mi dělá potíž JS, takže jsem to dal sem.

background info:
vytvářím svoje foto portfolio ve Wordpressu. Zjistil sem, že pořadí fotek ve fotogalerii se nedá jednoduše změnit. Fotky se ukazují v pořadí, v jakém byly vytvořeny (vloženy do WP), což není ideální. Jediná možnost jak změnit pořadí fotek, je zfalšovat datum vytvoření příspěvku (fotky) přímo v databázi.

Čeho chci dosáhnout:
1. vypsat všechny fotky z dané galerie (selectem vypisuji ID a URL k obrázku)
2. pomocí javascriptu (jQuery .Sortable) změnit pořadí fotek
3. uložit do databáze nové (fiktivní) datumy pro jednotlivé fotky (dle ID)

Živá ukázka

Problém je v kroku 3, nevím jak v JS zjistit pořadí těch DIVů a jak je předat PHP abych je mohl updatovat v databázi.
To tvoření fiktivního datumu bych viděl nějak takto:
$s++;
$time = strtotime('2014-03-01 12:00:00') - $s;
$now = date("Y-m-d H:i:s", $time);
Takže každá další fotka bude mít datum starší o jednu sekundu.
Nezáleží mi na správnosti datumu, jde mi jen o to aby se mi fotky seřadili správně

Budu rád za každou radu či nasměrovaní.
aDAm
Profil
wtf?
Jediná možnost jak změnit pořadí fotek, je zfalšovat datum vytvoření příspěvku (fotky) přímo v databázi.

co takhle změnit select z db na konkrétní podmínku?
wolfik
Profil
Asi jsem to špatně formuloval. Vypisuji všechny fotky z dané kategorie (což mám ošetřené podmínkou). Ale to pořadí fotek chci dělat vizuálně, ne jen podle titulku fotky nebo URL obrázku, to je mi k ničemu.
"zfalšovat datum vytvoření příspěvku (fotky) přímo v databázi" Bylo myšleno, že to nejde (jednoduše a přehledně) udělat přímo v administraci WP. Datum příspěvku samozřejmě lze změnit v administraci WP, ale je to velmi komplikované. Představme si situaci, že chci zařadit fotku mezi další dvě fotky... Nejdříve bych si musel zjistit data fotek mezi které chci vložit novou fotku a té pak následně změnit datum tak, aby byl mladší než první fotka a starší než druhá fotka...
Nedokážu si představit toto praktikovat u větších galerií, proto jsem zvolil tuto vizuální formu.
aDAm
Profil
poskočil jsem si ale stále nechápu čeho se snažíš docílit, když nejde aplikovat order při selectu tak si přidat nějaký order sloupec ne?
wolfik
Profil
Už sem pochopil co se mi snažíš říct :-)
"tak si přidat nějaký order sloupec ne" Chtěl sem si vyhnout zásahům přímo ve zdrojovém kódu WP (měnění SQL příkazů a přidávání sloupců do DB).
A i kdyby se mi podařilo přidat tam sloupec order (integer), tak bych stále chtěl to pořadí fotek dělat vizuálně (vidět malé náhledy), takže by to bylo úplně stejné až po krok 3, kdy bych do databáze neupdatoval datum, ale číslo. Moje verze mi přijde jednoduší, protože nemusím zasahovat do zdrojového kódu WP a přidávat nový sloupec do DB.
peta
Profil
Ja bych take vytvoril sloupec poradi a ulozil to do db, upravil ten plugin.

Poradi
<script>
el = document.getElementById('galerie');
divy = el.getElementsByTagName('DIV'); // getElementByClassName('image') / el.getElementsByTagName('IMG');
for (i=0;i<divy.length;i++)
{
   alert(div.id.substr(3)); // pokud si do divu ulozis id 123 z db jako <div id="img123"> / <img id="img123">
    ...
}
...
</script>

Ale, ty si to muzes ocislovat. PHP posila seznam obrazku, ktery si das do pole a pak manipulujes jen s tim polem.
seznam = ['aa.jpg', 'bb.jpg', 'cc.jpg', 'dd.jpg', 'ee.jpg']
poradi = [5,2,3,1];
Pak mas funkci, ktera vypise z pole seznam divy s obrazky podle poradi.

"Moje verze mi přijde jednoduší" - s tim bych nesouhlasil, vysledek je vzdycky stejny, musis zasahovat do db. Upravovat v puvodnim kodu bude treba jen jeden sql prikaz a to budes muset udelat nejspis taky.
wolfik
Profil
peta:
Díky, to je přesně ono, co jsem potřeboval. Děkuji.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0