Změna proměnné pro FOREACH – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Změna proměnné pro FOREACH – PHP – Fórum – Programujte.comZměna proměnné pro FOREACH – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Provox
~ Anonymní uživatel
3 příspěvky
25. 2. 2016   #1
-
0
-

Dobrý den,

předem bych chtěl říct, že prográmko není můj obor, prošel jsem hodně strohými základy a to navíc několik let zpět. Občas se pustím do nějakého webu av podstatě parazituji na free šablonách, které upravuji. Teď se potýkám s jednou situací, kdy potřebuji vypsat child hodnoty proměnné pomocí foreach:

foreach ($list_child as $term){

	echo '<a>vypíše všechny child odkazy</a>';

}

Vše funguje jak má. Vypíše veškeré child které zde najde. Problém však nastává, když kliknu na jeden z vygenerovaný odkazů, stejná funkce se logicky provede na novém ID. Rozhodl jsem se tedy zavést novou proměnnou pro foreach $list_parent_child . Ta má za úkol zavést nadřazené ID současné kategorie. Akorát nevím, jak pořádně tento kód zavést aby fungoval tak, že pokud SOUČASNÉ ID má dítě, provede se první foreach, pokud nemá, provede se druhé. Napsal jsem to nějak takhle:

if ():
	foreach($list_child as $term){
		echo '<a>vypíše všechny child odkazy</a>';
	}
else:
	foreach($list_parent_child as $term){
		echo '<a> vypíše všechny parent odkazy</a>';
	}
endif:

Tento kód mi tak nějak funguje, uvedu-li v if($term->name == 0), avšak zjistil jsem, že mi v podstatě funguje jen na jedné jediné kategorii, čemuž už vůbec nerozumím. Problém tedy pro mě je, jak definovat v IF, že pokud první FOREACH vyhodí prázdné ECHO, aby se provedl druhý.

Tento problém jsem chtěl ještě obejít jedním způsobem, kdy jsem do prvního foreach nechal vyspat $term->term_id, které vlastně u každého vygenerovaného dokazu ovedl jeho ID číslo. Trošku dětinsky jsem myslel, že když term_id zavedu do proměnné a v kategorii bez child nevyhodí nic, cyklus oblbnu a donutím pokračovat v novém cyklu, avšak bez úspěchu.

Děkuji všem alespoň za přečtení a doufám v případné rady.

P.S.: Ano jde o WORDPRESS (respektive WOOCOMMERCE)

Nahlásit jako SPAM
IP: 89.29.88.–
Reklama
Reklama
peter
~ Anonymní uživatel
2528 příspěvků
25. 2. 2016   #2
-
0
-

No potes :)
Pokud chces neco resit, je dobre dat sem kod, ktery si napises nekde bokem, ktery dela jen to jedine. Ten kod musi byt spustitelny, co sem das. Takhle v tom nelze hledat chyby. Jsou to jen naznaky neceho, co by, kdyby... a ono nezaprsi a nezaprsi :)

odkaz <a href="adresa?a=1&b=2">

(pripadne by se to dalo resit pres error404 jako <a rel="nofollow" href="adresa/1/2"> to presmeruje na index.php?url=1/2)
Z toho odkazu vydolujes urovne

$level0 = isset($_GET['a']) ? $_GET['a'] * 1 : -1;
$level1 = isset($_GET['b']) ? $_GET['b'] * 1 : -1;
A pak ty foeach jsou jasne.
if ($level0>0) ...
if ($level1>0) ...

Dalsi problem mozna je, co mas v tech polich, ze jo? Kdybys sem misto pohadek vypsal, co vypise php pred tim, nez kliknes na odkaz a pak, co kliknes na odkaz, tyto prikazy: 

print_r($list_child); // nebo var_dump
print_r($list_parent_child);
Nahlásit jako SPAM
IP: 2001:718:2601:26c:7cd1:a7...–
Provox
~ Anonymní uživatel
3 příspěvky
25. 2. 2016   #3
-
0
-

#2 peter
Odkaz určitě nepřiložím, jede mi to na domácím serveru. 100%ní kód dané funkce budu schopen zaslat až po osmé h., to co jsem zde napsal je až na echo přesné znění funkčního cyklu. Funkce na 90% vypadá takto s tím, že si nepamatuji příkaz pro získání current_term_id a parent_child_id 

function sub_sub_menu(){

$currrent_term_id = ;

$child_term = get_term($current_term_id, 'product_cat');
$terms = get_term('product_cat', $child_term);

$parent_child_id = ;

foreach ($terms as $term){
	$list_child = get_term( 'product_cat', 'parent' => $term->term_id );
	$list_parent_child = get_term( 'product_cat', 'parent' => $parent_child_id );

	if ($term->name == 0):
		foreach ($list_child as $term)
		{
			echo '<a href="' . get_term_link( $term->slug, $term->taxonomy ) . '">' . $term->name . '</a></br>';
		}

	else:
		foreach ($list_parent_child as $term)
		{
			echo '<a href="' . get_term_link( $term->slug, $term->taxonomy ) . '">' . $term->name . '</a></br>';
		}

	elseif;
}

}

Za pohádky se omlouvám, držel jsem se psaného pravidla tohoto fóra, co nejvíce popsat daný problém. V každém případě jako amatér jsem nečekal, že když řeším jeden cyklus, budu potřebovat k tomu celý kód.

Jinak kódy píšu přímo do zdrojáku, ukládám a zaktualizuji web, jedu pokus omyl. Kompilaci nerozumím, pořád mi píše, že vše proběhlo v pořádku.

Napsat kód tak, aby byl spustitelný zde, neumím. Jak jsem psal, nejsem kódér, kódy skládám z dotazů z fór a z návodů.

Ale děkuji za reakci.

Nahlásit jako SPAM
IP: 89.29.88.–
Provox
~ Anonymní uživatel
3 příspěvky
25. 2. 2016   #4
-
0
-

#3 Provox
Tak jsem si to nakonec vyřešil. Šlo celkem o hloupost.

Zavedl jsem novou proměnnou '$check_child = count($list_child);' a v IF definoval, že musí být větší než nula. Takže SOLVED.

Děkuji všem za účast a přihlížení. Provox

Nahlásit jako SPAM
IP: 86.49.147.–
peter
~ Anonymní uživatel
2528 příspěvků
26. 2. 2016   #5
-
0
-

Funkcni kod myslim tim, ze, kdyz to zkopiruji z fora do souboru a spustim, tak uvidim stejny vysledek jako ty.
Ukazalo se, ze cykly jsou spravne a chyba je v kodu, ktery jsi sem nedal. To jsem predpokladal uz na zacatku, proto jsem chtel videt vic.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:1886:41...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

Podobná vlákna

Zmena Proměnné — založil Killercek

Změna proměnné v cyklu — založil Keyzio

Změna proměnné v def — založil Pavel Kurc

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý