05.12.2021 16:14
1
Zdravím všechny, narazil jsem na překážku, se kterou si nevím rady...
  1. V PHP se provede výpis cen z databáze
  2. Ceny obsahují HTML tagy, mezery a Kč symboly
  3. Podařilo se mi vyčistit ceny od všech těchto věcí, aby bylo čistě jen číslo bez ničeho
  4. Jenže jsou tu 2 kategorie cen: 1) Původní cena 2)Cena po slevě
  5. Cena po slevě se zobrazuje všude a funguje jako numeric, zatím co původní cena se objeví jen několika "row" z databaze a proto php kod nenajde tu cenu jako numeric

Jak by bylo možné tuto záležitost vyřešit?
  • Aktuálně co mě napadá: funkce, pokud nalezne obsah v row[] tak ukáže hodnotu s numeric číslem
  • Jiná metoda: přehodit obsah jdoucí za sebou v kodu...
  • Zkoušel jsem různé metody, ale původní cena prostě nehodí numeric...

Zde je kód:

Kód:
$result = mysqli_query($conn,"SELECT * FROM produkty");
$row = mysqli_fetch_array($result);  

//Vytažení cen bez html tagu  a mezer - funguje  
$cena_produktu_sleva = strip_tags($row['Cena_produktu_sleva']);
$cista_cena_sleva = str_replace(" Kč","","$cena_produktu_sleva");
$cista_cena_sleva_vysledek = preg_replace('/\s+/', '', $cista_cena_sleva);


//tady to neni numeric...
$cena = strip_tags($row['cena_produktu']);//Odebrani html tagu v čisli
$cista_cena = str_replace(" Kč","","$cena");//Odebrani symbolu v čisli
$cista_cena2 = str_replace(",","","$cista_cena");//Odebrani čárky v čisli
$cista_cena_vysledek = preg_replace('/\s+/', '', $cista_cena2);//Odebrani mezer v čisli
  
  
while($row = mysqli_fetch_array($result)){

$cista_cena_vysledek;//Původní cena se objevuje jen par krat a nečte jako numeric
$cista_cena_sleva_vysledek;//Cena se slevou je uvedena všude a fungugje jako numeric

 //test zkouška
if (is_numeric($cista_cena_vysledek)) {
  echo "jecislo";
} else {
  echo "necislo";
}


    }//uzavření while loopu
Poradí prosím někdo?

Děkují
Vahan
05.12.2021 17:01
2
A kdyby jsi to zkusil natvrdo přetypovat? Co se týče získávání čísla tak by možná bylo vhodné použít regulární výrazy.
Kód:
$cena = strip_tags($row['cena_produktu']);//Odebrani html tagu v čisli
$cista_cena = str_replace(" Kč","","$cena");//Odebrani symbolu v čisli
$cista_cena2 = str_replace(",","","$cista_cena");//Odebrani čárky v čisli
$cista_cena_vysledek = preg_replace('/\s+/', '', $cista_cena2);//Odebrani mezer v čisli
$cista_cena_vysledek2 = (int)$cista_cena_vysledek;
05.12.2021 17:18
3
Původně odeslal Taps
A kdyby jsi to zkusil natvrdo přetypovat? Co se týče získávání čísla tak by možná bylo vhodné použít regulární výrazy.
Kód:
$cena = strip_tags($row['cena_produktu']);//Odebrani html tagu v čisli
$cista_cena = str_replace(" Kč","","$cena");//Odebrani symbolu v čisli
$cista_cena2 = str_replace(",","","$cista_cena");//Odebrani čárky v čisli
$cista_cena_vysledek = preg_replace('/\s+/', '', $cista_cena2);//Odebrani mezer v čisli
$cista_cena_vysledek2 = (int)$cista_cena_vysledek;
Diky moc :) taková jednoduchá věc a zabralo to... už je to numeric. Stačilo tam tedy přidat jen to (init) před hodnotou. 
Díky