Vraag over een function met een return

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan Sluit

Johan Sluit

31/10/2020 12:42:32
Quote Anchor link
Hallo Allemaal,

Ik heb de volgende code gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
    }
}

?>


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

https://i.ibb.co/BgJC5rf/Schermafbeelding-2020-10-31-om-12-29-47.png
Gewijzigd op 31/10/2020 13:04:55 door Johan Sluit
 
PHP hulp

PHP hulp

27/11/2020 12:20:12
 
Thomas van den Heuvel

Thomas van den Heuvel

31/10/2020 13:09:57
Quote Anchor link
Dit lijkt mij een opmaak-aangelegenheid en staat in principe verder los van de PHP-code.

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
 
Johan Sluit

Johan Sluit

31/10/2020 13:15:38
Quote Anchor link
Bedankt Thomas,

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

https://i.ibb.co/LQj5LW8/Schermafbeelding-2020-10-31-om-12-18-12.png

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
 
Thomas van den Heuvel

Thomas van den Heuvel

31/10/2020 13:22:25
Quote Anchor link
Ik kan mij zo voorstellen dat het gedeelte tussen #PRODUCTBLOC_PRODUCTS_START# en #PRODUCTBLOC_PRODUCTS_END# in een soort van lus wordt uitgevoerd. Er staat daar ook een <br /> in. Wat als je die <br /> nu eens weghaalt?

Ah je had het zelf ook al geconstateerd :p.
Gewijzigd op 31/10/2020 13:23:01 door Thomas van den Heuvel
 
Johan Sluit

Johan Sluit

31/10/2020 13:22:45
Quote Anchor link
https://i.ibb.co/X8vcCdd/Schermafbeelding-2020-10-31-om-13-21-31.png

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.