Autor Zpráva
matata8611
Profil
Zdravim pouzivam redakcni system WP. A v nem jeden plugin, kde mám napr. pri tvorbe nove stranky pole, ktere se jmenuje zamestanec a toto pole lze pomoci kliknuti na "duplicate" duplikovat, takze mi vzniknou napr. pole:
zamestnanec1
zamestnanec2
zamestnanec3
zamestnanec4
zamestnanec5


Do těchto poli napisi jmena 5 zamestnancu, a pote je zavolam v sablone timto kodem:

<?php $total = getFieldDuplicates('zamestnanec', 1);?> 
<?php for($i = 1; $i < $total+1; $i++):?>
<?php echo get 
('zamestnanec',1,$i)?>
<?php endfor;?>


Funguje to vyborne. Nejsem prebornik pres php, ale jak jsem pochopil, script nejprve zjisti, kolik existuje takovych duplikovaných polí jménem zaměstnanec(v nasem pripade to je 5) a pak za promennou $i dosazuje jejich index 1,2,3,4,5.

Problem ovsem nastava tehdy, kdyz jeden z 5 zamestnancu (napr. zamestnanec c.3) da vypoved. Pokud pole 3 odstranim, zbyde mi tedy toto:
zamestnanec1
zamestnanec2
zamestnanec4
zamestnanec5


A script postupuje stejnym zpusobem:
1) zjisti kolik je takovych duplikovanych poli jmenem zamestanec a zjisti ze uz jsou jen 4
2) pripravy si tedy potencionalne 4 tyto volane funkce <?php echo get
('zamestnanec',1,$i)?>, kde za i chce zase dosazovat postupne od jednicky.
3)Mame tedy
<?php echo get ('zamestnanec',1,$i)?> za $i dosadi 1 a zobrazi jmeno zamestnance cislo 1
<?php echo get ('zamestnanec',1,$i)?> za $i dosadi 2 a zobrazi jmeno zamestnance cislo 2
<?php echo get ('zamestnanec',1,$i)?> za $i dosadi 3 a zjisti ze pole zamestnanec 3 neexistujea dosadi tam opet jmeno zamestnance cislo 1
<?php echo get ('zamestnanec',1,$i)?> za $i dosadi 4 a zobrazi jmeno zamestnance cislo 4.
na jmeno zamestnance c. 5 se vubec nedostalo...

Nenapada Vas nekoho jak to vykoumat? Napadlo me ze by tam byla potreba dat podminka, mu nepovolit dat podruhy stejnou promennou $i, tj., aby php premyslelo takhle: pole zamestnanec3 neexistuje, dosadim tedy jednicku, ale tu nemuzu dosadit protoze jednicku uz jsem dosadil o dve pole vys, pokracuji tedy u zamestnance cislo tri dal a za $i ykusim dosadit 4....atd...

Dikz moc...

Myslite ze by to nejak slo, bohuzel nevim jak na to. :-( V php nejsem uplny odbornik.
fajzen
Profil
Dalo by sa to nejak takto:
<?php $total = getFieldDuplicates('zamestnanec', 1);?> 
<?php for($i = 1, $j = 1; $i < $total+1; $i++, $j++): ?>
<?php while(!get('zamestnanec',1,$j) $j++; ?>
<?php echo get ('zamestnanec',1,$j)?>
<?php endfor;?>

Podmienkou však je, aby funkcia get() vrátila false, prípadne niečo, čo sa na false pretypuje, ak pole zamestnanec s daným indexom neexistuje...

EDIT: teraz som si prečítal tvoj príspevok poriadne a zistil som, že to takto nepôjde... ale možno by to išlo
while(!get('zamestnanec',$j,$j) $j++;
avšak neviem ako sa funkcia zachová, keď jej podhodíš ako defaultný index, ktorý neexistuje, ťažko povedať... chcelo by to skôr postnúť kód funkcie get
Alphard
Profil
To nevypadá moc pěkně.
Jestliže je tam funkce getFieldDuplicates(), mohlo by tam být i něco, co dokáže vhodně iterovat. Pokud ne, bude lepší to dopsat. Vytvářet kopii $pole vytvořením $pole1 není moudré, od takového systému ruce pryč :-)

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: