Autor | Zpráva | ||
---|---|---|---|
Terina Profil * |
#1 · Zasláno: 22. 7. 2019, 14:51:21
Ahoj. Vypisuji obsah z DB (mysql) a mezi každým záznamem mám /. Oštřila jsem si aby lomítko bylo pouze pokud je více jak 1 záznam. Ale ještě bych potřebovala poradit jak ošetřit aby se lomítko už nepsalo po posledním záznamu z DB? Teď mi to vypíše např. : zlatá / červená / modrá /
No a zatím modrá už prostě nechci to lomítko... while($arbarva = mysql_fetch_array($prbarva)){ if($prbarvaPocet > 1){ $zapis.=" ".$arbarva[hodnota]." / "; }} Děkuji moc za radu |
||
Ikki Profil |
#2 · Zasláno: 22. 7. 2019, 14:57:49
$vysledek = rtrim($vypsany_obsah, ","); By mohlo stačit. |
||
Kajman Profil |
#3 · Zasláno: 22. 7. 2019, 15:04:59
Ikki:
Druhý parametr by měl být spíše něco jako " \t\n\r/" |
||
Ikki Profil |
#4 · Zasláno: 22. 7. 2019, 15:59:39
Omlouvám se, má chyba. Přehlédl jsem se. Díky za doplnění.
|
||
Terina Profil * |
#5 · Zasláno: 23. 7. 2019, 07:18:43
Toto mi ale odebere prázdné znaky a nebo řetězec na konci, já ale chci dosáhnout abych ty údaje z DB měla oddělené lomítkem (/) ale při výpisu toho posledního údaje aby tam lomítko už nebylo.
V DB mám uloženo první řádek: zlatá V DB mám uloženo druhý řádek: červená V DB mám uloženo třetí řádek: modrá a vypsat bych to chtěla takto: zlatá / červená / modrá while($arbarva = mysql_fetch_array($prbarva)){ if($prbarvaPocet > 1) { $vysledek = rtrim($arbarva[hodnota], " \t\n\r/"); $zapis.="$vysledek"; }} pokud použiju takto mám zápis: zlatá červená modrá |
||
Terina Profil * |
#6 · Zasláno: 23. 7. 2019, 07:18:43
Toto mi ale odebere prázdné znaky a nebo řetězec na konci, já ale chci dosáhnout abych ty údaje z DB měla oddělené lomítkem (/) ale při výpisu toho posledního údaje aby tam lomítko už nebylo.
V DB mám uloženo první řádek: zlatá V DB mám uloženo druhý řádek: červená V DB mám uloženo třetí řádek: modrá a vypsat bych to chtěla takto: zlatá / červená / modrá while($arbarva = mysql_fetch_array($prbarva)){ if($prbarvaPocet > 1) { $vysledek = rtrim($arbarva[hodnota], " \t\n\r/"); $zapis.="$vysledek"; }} pokud použiju takto mám zápis: zlatá červená modrá |
||
Kajman Profil |
#7 · Zasláno: 23. 7. 2019, 08:21:39
Odstranění zbytečného oddělovače na konci má být až po cyklu
while($arbarva = mysql_fetch_array($prbarva)){ $zapis.=" ".$arbarva[hodnota]." / "; } $zapis = rtrim($zapis, " \t\n\r/"); |
||
Terina Profil * |
Ale takto mi to vypíše pouze první údaj z DB a pak už nic
Zřejmě to tedy osekne hned za tím prvním lomítkem a mám potom vypsanou pouze první barvu Tak ne osekne to jenom lomítko, ale vypisuje to jenom tu první barvu když si za cyklem vypíšu hodnotu bez rtrim , tak je zde pouze první barva s lomítkem
|
||
Kajman Profil |
#9 · Zasláno: 23. 7. 2019, 08:47:24
Cyklus jsem použil Váš. Buď je chyba v něm, nebo v dotaze nebo v datech, ale nebude v řádku s rtrim, když to vypíše jednu barvu, i když rtrim zakomentujete.
|
||
Terina Profil * |
#10 · Zasláno: 23. 7. 2019, 08:59:54
Když to vypisuji v cyklu tak vidím vše bez problému, ale jakmile proměnou vypíši mimo cyklus tak vidím pouze tu první, takže cyklus by měl být v pořádku ne?
|
||
Kajman Profil |
#11 · Zasláno: 23. 7. 2019, 09:18:23
V uvedeném kódu nic v cyklu nevypisujete, jen rozšiřujete proměnnou. Napsala jste sem stejný kód, který zkoušíte?
|
||
blaaablaaa Profil |
#12 · Zasláno: 23. 7. 2019, 09:27:17
Terina:
Máte v cyklu opravdu $zapis.= (i s tou tečkou před rovnítkem)? |
||
Terina Profil * |
#13 · Zasláno: 23. 7. 2019, 09:45:22
Máte pravdu v cyklu to nevypisuji, pouze přiřazuji data k dalším datům, proto ta tečka. Celkový výpis je až na konci za všemi cykly
echo $zapis;
Zde je ořezaný kód pouze na ty barvy, když to mám až za tím cyklem tak vypíše pouze jednu barvu, když to dám do cyklu tak vypisuje vše: $zapis='<?xml version="1.0" encoding="utf-8"?>'; $zapis.='<SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0">'; $prProdukt=mysql_query("select * from ".$dbnazev."_produkty where nezobrazovat<1 and length(nazev)>0 order by id desc limit 10"); while($ar=mysql_fetch_array($prProdukt)){ list($ar[dodani_pocet_dnu])=@mysql_fetch_row(mysql_query("select dodani_pocet_dnu from ".$dbnazev."_produkty_sklad where id='$ar[sklad]' limit 1")); $prbarva = mysql_query("SELECT intelshop_produkty_parametry_barva.hodnota FROM intelshop_produkty_parametry_barva left join intelshop_produkty_parametry_barva_prirazeni on intelshop_produkty_parametry_barva.id=intelshop_produkty_parametry_barva_prirazeni.hodnota where intelshop_produkty_parametry_barva_prirazeni.produkt='$ar[id]'"); $prbarvaPocet=mysql_num_rows($prbarva); $zapis.="<SHOPITEM>"; if ($prbarvaPocet > 0){ $zapis.=" <PARAM> <PARAM_NAME>Barva</PARAM_NAME> <VAL>"; while($arbarva = mysql_fetch_array($prbarva)) { $z=" ".$arbarva[hodnota]." / "; } $zapis.= rtrim($z, " \t\n\r/"); $zapis.=" </VAL> </PARAM> "; } $zapis.="</SHOPITEM>"; } $zapis.="</SHOP>"; echo $zapis; |
||
blaaablaaa Profil |
#14 · Zasláno: 23. 7. 2019, 10:02:33
Terina:
Chtělo by to trochu zapracovat na čitelnosti kódu. Každopádně vy v cyklu si do proměnné $z uložíte barvu a v dalším kroku ji přepíšete. Správně tedy takto: $z = ""; while($arbarva = mysql_fetch_array($prbarva)) { $z .= $arbarva["hodnota"]." / "; } $zapis .= rtrim($z, " \t\n\r/"); |
||
Terina Profil * |
#15 · Zasláno: 23. 7. 2019, 10:08:33
Děkuji moc toho jsem si nevšimla.
|
||
Časová prodleva: 5 let
|
0