Podmínka větší nebo menší – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmínka větší nebo menší – PHP – Fórum – Programujte.comPodmínka větší nebo menší – PHP – Fórum – Programujte.com

 

Pavel janec
~ Anonymní uživatel
5 příspěvků
3. 3. 2016   #1
-
0
-

Dobrý den, přiznám se, jsem úplný začátečník. Potřeboval bych jak podmínit hodnotu ve výpisu detailu produktu v eshopu

na stránce mám tento výpis skladu na jednotlivých prodejnách

<option value="">
Prodejna Praha 1. : <?php echo $this->product->sklad_praha_1; ?> ks  
</option> ks

,kde mi udává sklad sklad_praha_1 počet produktů skladem a já potřebuji, pokud bude např 0 aby to vyhodilo není skladem. Vím, že je to něco přes if ale zatím nevím jak to napsat. Díky moc za ochotu.

Nahlásit jako SPAM
IP: 89.102.173.–
Kit+15
Guru
3. 3. 2016   #2
-
0
-

#1 Pavel janec
Zkus tohle: 

<option value="">
Prodejna Praha 1. : <?= $this->product->sklad_praha_1?:"není skladem"; ?> ks  
</option> ks

Kdybys to měl jako objekt, bylo by to jednodušší.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Pavel janec
~ Anonymní uživatel
5 příspěvků
3. 3. 2016   #3
-
0
-

#2 Kit
Nefunguje, možná jsem to špatně napsal. To pole sklad_praha_1 je číselná hodnota aktuálního stavu skladu na dané prodejně, které se do db načítá pomocí Cronu z csv. Někdy se stane, že stav jde i do mínusu a to mi vadí, když se zobrazí třeba -5, nula by mi nevadila ale raději bych nahradil podmínkou, že pokud je nižší než 0 zobrazí se Není skladem. Jak jste to myslel s tím objektem? Každopádně díky za ochotu.

Nahlásit jako SPAM
IP: 89.102.173.–
Kit+15
Guru
3. 3. 2016   #4
-
0
-

#3 Pavel janec
S tím objektem jsem to myslel takto: 

<?php

class Stav {
    private $prodejna;
    private $stav;

    function __construct($prodejna, $stav) {
        $this->prodejna = $prodejna;
        $this->stav = $stav;
    }

    function __toString() {
        if ($this->stav > 0) {
            return "$this->prodejna: $this->stav ks";
        }
        return "$this->prodejna: není skladem";
    }
}

// naplnění
$this->product->sklad_praha_1 = new Stav("Prodejna Praha 1", 8);

// prezentace
echo <<<EOT
<option value="">$this->product->sklad_praha_1</option>
EOT;

Po drobné úpravě můžeš mít i jiné jednotky než kusy. Samozřejmě tu třídu můžeš použít pro všechny prodejny ve svém objektu.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Pavel janec
~ Anonymní uživatel
5 příspěvků
3. 3. 2016   #5
-
0
-

#4 Kit
Jsi hrozně hodnej ale tohle už je na mě fakt moc, na to prostě nemám. Jsem rád, že jsem udělal tohle. opravdu to neumím, teprve k tomu přičichávám:-)

<select name="Dostupnost" size=0>

<option value="">
Ihned pro odeslání: <?php echo $this->product->product_in_stock; ?> ks
</option> ks

<option value="">
Prodejna Praha 1.: <?php echo $this->product->sklad_praha_1; ?> ks  
</option> ks

<option value="">
Prodejna Praha 3.: <?php echo $this->product->sklad_praha_3; ?> ks
</option> ks

<option value="">
Prodejna Praha 6.: <?php echo $this->product->sklad_praha_6; ?> ks
</option> ks

</select>

Naprosto to pro moje potřeby vystačuje až na ty mínusové položky. Někde jsem naše tohle:

if ($a > 0) $a = cokoliv;

ale nevím jak to zakomponovat aby to fungovalo.

Nahlásit jako SPAM
IP: 89.102.173.–
Kit+15
Guru
3. 3. 2016   #6
-
+1
-
Zajímavé

#5 Pavel janec
Tak zkusím něco jednoduššího: 

<?php

function stav($prodejna, $stav) {
    if ($stav > 0) {
        return "<option value=''>$prodejna: $stav ks</option>";
    }
    return "<option value=''>$prodejna: není skladem</option>";
}
?>

<select name="Dostupnost" size="0">
<?php
echo stav("Ihned pro odeslání", $this->product->product_in_stock);
echo stav("Prodejna Praha 1", $this->product->sklad_praha_1);
echo stav("Prodejna Praha 3", $this->product->sklad_praha_3);
echo stav("Prodejna Praha 6", $this->product->sklad_praha_6);
?>
</select>
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Pavel janec
~ Anonymní uživatel
5 příspěvků
3. 3. 2016   #7
-
0
-

#6 Kit
Co dodat, moc děkuji funguje skvěle, přesně takhle mi to stačí. Smekám klobouk a jdu se učit:-)

Nahlásit jako SPAM
IP: 89.102.173.–
Pavel janec
~ Anonymní uživatel
5 příspěvků
3. 3. 2016   #8
-
0
-

#7 Pavel janec
Strašně nerad tě otravuju ale přece jen se ještě zeprám, nešlo by aby to není skladem bylo třeba tučné a červené. Opravdu se omlouvám a už dám pokoj, nastyloval bych si to v css ale nemá to žádnou třídu. moc děkuji!

Nahlásit jako SPAM
IP: 89.102.173.–
ondrej39+1
Věrný člen
3. 3. 2016   #9
-
0
-

#8 Pavel janec
Si kolem textu není skladem doplň div a tu třídu mu dej. Nastyluj třídu a máš hotovo.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Kit+15
Guru
3. 3. 2016   #10
-
0
-

#8 Pavel janec
Tu funkci si můžeš snadno upravit:

<?php

function stav($prodejna, $stav) {
    if ($stav > 0) {
        return "<option value=''>$prodejna: $stav ks</option>";
    }
    return "<option value=''>$prodejna: <span class='neni_skladem'>není skladem</span></option>";
}

a v CSS jen dopíšeš: 

.neni_skladem {
    color: red;
}
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
czsars0
Newbie
4. 3. 2016   #11
-
0
-

#10 Kit
Bohužel nefunguje, není to tím, že je to v tom selectu?

Nahlásit jako SPAM
IP: 89.102.173.–
czsars0
Newbie
4. 3. 2016   #12
-
0
-

#10 Kit
Chápu, že pro Vás jsou to asi banální věci ale jak jsem psal, teprve se učím a jak známo učenej z nebe nespadl. Proto se zeptám zkušených, tak mi to prosím promiňte!

Nahlásit jako SPAM
IP: 89.102.173.–
czsars0
Newbie
4. 3. 2016   #13
-
0
-

#10 Kit
Našel jsem přesně to jak bych si přál aby to vypadalo. viz http://www.vasecigareta.cz/produkt-1214-kangertech-subox-nano-kompletni-set.html

Nahlásit jako SPAM
IP: 89.102.173.–
peter
~ Anonymní uživatel
3981 příspěvků
4. 3. 2016   #14
-
0
-

Pavel janec

"Vím, že je to něco přes if ale zatím nevím jak to napsat. "
php.net/if
php.net/condition
google = php conditions simple example
https://www.google.cz/search?…
Zakladni znalost php.

"pole sklad_praha_1 je číselná hodnota ... z csv"
Z csv se nacitaji data obvykle jako string. Na cislo se to konvertuje treba pomoci nasobeni *1, tusim. Vis jiste, ze je to cislo?
var_dump($this->product->sklad_praha_1)

"nešlo by aby to není skladem bylo třeba tučné a červené"
"nastyloval bych si to v css ale nemá to žádnou třídu"
Zakladni znalost css.
Tak si tam tu tridu pridej?
A mozna, kdyz je to select, to nepujde nastylovat. Tak si to zmen na neco jineho, treba span, ne?
A treba by se dalo googlem zas najit reseni?

http://www.vasecigareta.cz/produkt-1214-kangertech-subox-nano-kompletni-set.html
Ta stranka nefunguje spravne. Pust si ve FF treba okenko 500x500 a zkus si zarolovat posuvniky treba doprava.
Taky musis rici, co na ni maji lide hledat.
"Toto zboží je skladem a můžete" - je skladem je zelene, ale je to text,

Toto zboží <strong class="green">je skladem</strong> a můžete

Jeden by mel pocit, ze se asni nesnazis ssam neco delat, pouze cekas, az ti nekdo udela hotove reseni a ty pak schrabnes od zakaznika treba 50.000 nebo od ucitele dostanes jednicku :)

Nahlásit jako SPAM
IP: 2001:718:2601:26c:6d69:f4...–
peter
~ Anonymní uživatel
3981 příspěvků
4. 3. 2016   #15
-
0
-

   

<?php
function jeSkladem($a) {
return $a>0
 ? '<span style="color:#080;">je skladem</span>'
 : '<span style="color:#d00;">neni skladem</span>';
}

$a = -5; echo jeSkladem($a).$a;
$a = 0; echo jeSkladem($a).$a;
$a = 5; echo jeSkladem($a).$a;
?>
Nahlásit jako SPAM
IP: 2001:718:2601:26c:6d69:f4...–
czsars0
Newbie
4. 3. 2016   #16
-
0
-

#14 peter
Asi mi nerozumíš viz Tvá poslední věta. Není tomu tak, opravdu se v PHP zatím jen rozkoukávám. leccos si umím udělat sám ale v PHP jsem naprostý zelenáč a proto se ptám lidí, kteří tomu rozumí. Věř mi, že kdybych věděl jak na to, neptám se! Jistě byla si taky doba, kdy jsi nevěděl a možná si se to naučil ve škole, já tu možnost neměl jsem naprostý samouk a nebojím se říct laik ale i přesto jsem se toho už dost naučil no a až se mě zeptáš za nějakej ten pátek, tak ti to vysypu z rukávu.  HTML i CSS zvládám, jen se teď tak nějak začínám seznamovat s PHP to je asi vše.

Mám to teď udělané tak jak mi poradil Kit a moc mu za to děkuji. a jediné co potřebuji je aby výsledné pole (není skaldem) bylo červené, případně tučné). Samozřejmě, že z hlediska konkurence by bylo lepší nahradit ještě že pokud je skladem třeba 5ks napsat jen skladem ale na to se raději ani neptám a v podstatě mi stačí, když to bude tak jak jsem psal. Ještě k těm 50.000:-) Ty stránky dělám pro sestru, která prodává svíčky a jestli myslíš, že je bohatá, že má tři prodejny, tak se tomu musím pousmát. ty prodejny jsou výdejní místa u známých, kteří tam nějakou prodejnu mají ale to je fuk. A poslední věc, ta výsledná hodnota načítaná z DB (sklad_praha_1) atd.  je skutečně číslo, které se DO DB importuje skrze CSV a já budu mít na tom webu v detailu produktu jen tohle rozbalovací pole s aktuálními stavy produktů na těch výdejních místech.

<?php

function stav($prodejna, $stav) {
    if ($stav > 0) {
        return "<option value=''>$prodejna: $stav ks</option>";
    }
    return "<option value=''>$prodejna: není skladem</option>";
}
?>

<select name="Dostupnost" size="0">
<?php
echo stav("Ihned pro odeslání", $this->product->product_in_stock);
echo stav("Prodejna Praha 1", $this->product->sklad_praha_1);
echo stav("Prodejna Praha 3", $this->product->sklad_praha_3);
echo stav("Prodejna Praha 6", $this->product->sklad_praha_6);
?>
</select>
Nahlásit jako SPAM
IP: 89.102.173.–
czsars0
Newbie
4. 3. 2016   #17
-
0
-

#15 peter
Jinak co co jsi poslal resp napsal nefunguje, asi si vycházel z toho odkazu co jsem poslal ale to jsem poslal jen pro inspiraci, já to mám tak jak jsem odpověděl naposled. každopádně všem moc děkuji za ochotu.

Nahlásit jako SPAM
IP: 89.102.173.–
peter
~ Anonymní uživatel
3981 příspěvků
4. 3. 2016   #18
-
0
-

"co jsi poslal resp napsal nefunguje"
Jsem toho poslal vic. Kdyz to napises takhle obecne, tak tezko rici, co jsi mel na mysli. Ani treba nereknes, co to zobrazovalo za chybu nebo, co se stalo, kdyz... Podobne jsi reagoval i na kohosi jineho.
Tak, ten posleni kod, s tim jeSkladem($a), funguje, ten jsem testoval. Pokud jsi to nejak zabudovaval do sveho kodu, tak to reseni nebylo zde zverejneno a neni mozne nad nim badat.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:6d69:f4...–
czsars0
Newbie
4. 3. 2016   #19
-
0
-

#18 peter
Jestli tě tedy můžu poprosit, vycházej z tohoto, co funguje

<?php

function stav($prodejna, $stav) {
    if ($stav > 0) {
        return "<option value=''>$prodejna: $stav ks</option>";
    }
    return "<option value=''>$prodejna: není skladem</option>";
}
?>

<select name="Dostupnost" size="0">
<?php
echo stav("Ihned pro odeslání", $this->product->product_in_stock);
echo stav("Prodejna Praha 1", $this->product->sklad_praha_1);
echo stav("Prodejna Praha 3", $this->product->sklad_praha_3);
echo stav("Prodejna Praha 6", $this->product->sklad_praha_6);
?>
</select>

To poslední co jsi zasílal mi rozhodilo totálně layout ale určutě to není tím že jsi to špatně napsal ale mou neznalostí o tom žádná. Tohle mi naprosto vyhovuje, jen potřebuji modifikovat písmo toho výsledku, to je vše. Moc díky za ochotu

Nahlásit jako SPAM
IP: 89.102.173.–
peter
~ Anonymní uživatel
3981 příspěvků
4. 3. 2016   #20
-
0
-
Nahlásit jako SPAM
IP: 2001:718:2601:26c:6d69:f4...–
Kit+15
Guru
4. 3. 2016   #21
-
0
-

#13 czsars
V uvedeném příkladu není použit <select>, ale <ul> a je s tím manipulováno Javascriptem. Není to úplně triviální, časem to určitě také zvládneš.

<select> <option> má jen omezené možnosti stylování. Můžeš však zkusit nedostupnou položku "zešedivět": 

<?php
function stav($prodejna, $stav) {
    if ($stav > 0) {
        return "<option value=''>$prodejna: $stav ks</option>";
    }
    return "<option value='' disabled='disabled'>$prodejna: není skladem</option>";
}
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
czsars0
Newbie
8. 3. 2016   #22
-
0
-

#21 Kit
Tohle taky funguje, nicméně bez zvýraznění položek skladem to není ono ale i tak moc díky. nechám to asi tak jak to je. Když ale mluvíš, že v tom selectu to nejde moc stylovat, jak je to tedy například udělané tady http://www.vasecigareta.cz/produkt-1317-clearomizer-joyetech-tron-s-4ml.html

Nahlásit jako SPAM
IP: 89.102.173.–
czsars0
Newbie
8. 3. 2016   #23
-
0
-

#20 peter
Nejspíše to asi určitě taky funguje, jinak by jsi to nepsal ale já bohužel nevím, jak to zakomponovat do mého kódu, aby to fungovalo i u mě. Každopádně taky dík za ochotu

Nahlásit jako SPAM
IP: 89.102.173.–
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, 11 hostů

 

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