Vraag over een function met een return
Ik heb de volgende code gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
if (!function_exists('Labelprinter')) {
function Labelprinter($ordernummer , $contact , $productnaam , $sku , $aantalpakken, $doos, $aantal) {
if (empty($doos)) {
$var = '<div style="float:left;position:relative;width:100px;border:1px solid #000;">'. $ordernummer .'</div>';
} else {
$aantalpakkenint = str_replace(',', '.', $aantalpakken);
$aantalstickers = ceil($aantalpakkenint / $doos);
$aantal = (int)$aantalstickers;
$aantalnog = str_replace(',', '.', $aantalpakken);
$doos = str_replace(',', '.', $doos);
for ($x = 1; $x <= $aantal; $x+=1) {
if ($aantalnog <= $doos){$aantalnog2 = $aantalnog;} else { $aantalnog2 = $doos;}
$y = $y . '<div style="float:left;position:relative;width:100px;border:1px solid #000;">'. $ordernummer .'</div>';
$aantalnog = $aantalnog - $doos;
}
$var = $y;
}
return $var;
}
}
?>
if (!function_exists('Labelprinter')) {
function Labelprinter($ordernummer , $contact , $productnaam , $sku , $aantalpakken, $doos, $aantal) {
if (empty($doos)) {
$var = '<div style="float:left;position:relative;width:100px;border:1px solid #000;">'. $ordernummer .'</div>';
} else {
$aantalpakkenint = str_replace(',', '.', $aantalpakken);
$aantalstickers = ceil($aantalpakkenint / $doos);
$aantal = (int)$aantalstickers;
$aantalnog = str_replace(',', '.', $aantalpakken);
$doos = str_replace(',', '.', $doos);
for ($x = 1; $x <= $aantal; $x+=1) {
if ($aantalnog <= $doos){$aantalnog2 = $aantalnog;} else { $aantalnog2 = $doos;}
$y = $y . '<div style="float:left;position:relative;width:100px;border:1px solid #000;">'. $ordernummer .'</div>';
$aantalnog = $aantalnog - $doos;
}
$var = $y;
}
return $var;
}
}
?>
Hier print ik via een crm pakbon stickers, maar de code is nog niet af, ik print nu alleen het order nummer. Alleen ik heb een probleem, na elke return plaats php een soort line break waardoor ik na de return altijd een enter krijg en dus een regel boven de sticker en de uitlijning dus niet meer past, kunnen je mij helpen
Gewijzigd op 31/10/2020 13:04:55 door Johan Sluit
Interessanter is de (volledige) HTML die met behulp van deze code wordt gegenereerd. In bovenstaande code passeren alleen de gefloate divs de revu maar hoe ziet de rest van de code er uit en hoe/waar/wanneer wordt Labelprinter() aangeroepen? De code in jouw bericht geeft geen inzicht hoe de verdere HTML-structuur er uitziet.
Oftewel: toon ons de relevante HTML-broncode en bijbehorende CSS, de code die dit genereert is niet zo relevant want het is het resultaat (HTML+CSS) wat er niet goed uitziet.
Mijn vermoeden is dat de container-elementen om deze gefloate divs te smal zijn. Dit kan te maken hebben met de border, want deze wordt bij de (inhoudelijke) breedte opgeteld. De totale breedte van een gefloate div is 102 pixels, terwijl er mogelijk maar rekening gehouden wordt met 100 pixels per div.
Sidenote: indien je $aantalpakken, $aantal etc. on-the-fly moet repareren dan hadden deze variabelen van oorsprong niet echt handige waarden. Zorg dat je deze in een voor code hanteerbaar formaat opslaat. Het betreft hier getallen die een komma als decimaal scheidingsteken hebben, maar het is niet handig om dit zo op te slaan omdat je er dan (intern) niet (direct) mee kunt rekenen. Daarbij wordt je code onwijs wollig door elke keer van dit soort onnodige reparaties in te voegen.
Indien je deze waarden ergens weer wilt geven met een komma, dan kun je hier prima de standaard PHP-functie number_format() op loslaten. Maar hoe je iets weergeeft staat in principe ook compleet los van hoe je iets intern opslaat.
Gewijzigd op 31/10/2020 13:11:05 door Thomas van den Heuvel
ja het is een beetje apart, het systeem haal de waarde uit dit:
(ik gebruik vtiger CRM)
<html>
<head>
<title></title>
</head>
<body>#PRODUCTBLOC_PRODUCTS_START# [CUSTOMFUNCTION|Labelprinter|$INVOICE_SUBJECT$|$INVOICE_CONTACT_ID$|$PRODUCTS_PRODUCTNAME$|$PRODUCTS_VENDOR_PART_NO$|$PRODUCT_AANTAL_PAKKEN$|$PRODUCTS_CF_1224$|$PRODUCTQUANTITY$|CUSTOMFUNCTION]<br />
#PRODUCTBLOC_PRODUCTS_END#</body>
</html>
Als ik de opmaak weghaal en puur de waarde return krijg ik dit
hij doorloopt de function per order regel, en plaatst naar elke order een enter, maar dat wil ik niet
Toevoeging op 31/10/2020 13:20:58:
NEEEEEEEEEEEEE....
super bedankt, goed dat iemand anders even naar kijkt. ik zie bij het plakken dat er een BR staat, die heeft WYZIWY editor geplaatst
Gewijzigd op 31/10/2020 13:17:34 door Johan Sluit
Ah je had het zelf ook al geconstateerd :p.
Gewijzigd op 31/10/2020 13:23:01 door Thomas van den Heuvel
Toevoeging op 31/10/2020 13:23:10:
NEEEEEEEEEEEEE....
super bedankt, goed dat iemand anders even naar kijkt. ik zie bij het plakken dat er een BR staat, die heeft WYZIWY editor geplaatst
Toevoeging op 31/10/2020 13:23:29:
Zo lang in de code zitten klieren dat het gewoon niet daar aan lag :S