Empty check

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Infrastructure Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 12945 Introductie Our client is one of the most innovative companies within the Netherlands. Currently we are looking for an Infrastructure Platform Engineer. Within this role you will be developing the infrastructure. Functieomschrijving Within this role you are responsible in the development of our distributed data and compute platform infrastructure. You will design, develop and implement new features and fixes. Next to this you will integrate and configurate other packages that supports the development of tuning applications within the organisation. You will support customer sites remotely. Design and implement the

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

Frontend Developer Vue Nuxt HBO Javascript

Samengevat: Deze werkgever levert elke dag betere digitale gebruikerservaringen. Ben jij geschikt als frontend Developer? Heb je ervaring met Vue en Nuxt? Vaste baan: Front-End Developer HBO €3.100 - €4.600 Zij bieden opdrachtgevers een complete dienstverlening op gebied van ontwerpen en ontwikkelen van websites, zoekmachine optimalisatie, online adverteren, content marketing en conversie verbetering. Zij werken met een eigen ontwikkeld CMS. Bij bij hun werk je aan onze eigen bedrijfsapplicaties. Je ontwikkelt met ons de meest nieuwe software. Wij blinken uit als het gaat om de inzet van technologie. Deze werkgever staat open voor elke nieuwe trend. Onze systemen zijn groot

Bekijk vacature »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Opleveren van mooie eindproducten, middels de Agile methodiek; Samenwerken in een team van 10 collega's; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven. De

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

Bekijk vacature »

Medior/senior Python developer

Functie Bedrijven komen bij deze organisatie om technische vraagstukken op te lossen en hierin ook tot oplossingen te komen waar ze zelf misschien niet aan gedacht hadden. Jij gaat vanuit je ervaring dus niet alleen hands-on aan de slag met het ontwikkelen, maar zult ook zeker adviseren en proactief meedenken met de klant. Er zijn meerdere lange en/of korte projecten en het type klanten is heel uiteenlopend. Zo kun je terecht komen in een multidisciplinair scrumteam waarin je als Python developer meewerkt, of juist voor een kleiner (Greenfield) project aan de slag gaan waarin je veel breder bezig bent. Door

Bekijk vacature »

Embedded Software Developer Games

Functie omschrijving Heb jij affiniteit met hardware en wil jij kleuren binnen een Qt framework? Spreek jij de talen C en of C ++? Dan ben ik wellicht opzoek naar jou! Voor een super gave opdrachtgever in omgeving Delft is er namelijk plek voor een nieuwe kracht! Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke game industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen en buitenland? Je zult in een team, samen met vier ontwikkelaars, de mooiste

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar start jij in één van onze vier scrumteams. Met 30 ontwikkelaars werk jij aan de doorontwikkeling van ons core product. Ook werkt jouw team aan maatwerkoplossingen op aanvraag van de klant en op projectbasis. Wij vinden het erg belangrijk dat onze ontwikkelaars met plezier naar werk gaan. Een deel hiervan ligt uiteraard bij jezelf, als jij ontwikkelen niet leuk vindt, ben jij bij ons echt aan het verkeerde adres. Jouw team bestaat namelijk uit een groep gepassioneerde vakidioten die dit werk doen omdat dit eerst een hobby was! Daarnaast wordt er intern rekening gehouden met

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Low Code Developer - Consultant

Functie omschrijving Wil jij fungeren als een spin in het web en samenwerken met klanten? Voor een leuke en interessante opdrachtgever in omgeving Leiden zijn wij op zoek naar een Low Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten en het leiden van projecten. Ben jij toe aan een nieuwe uitdaging en heb jij verstand van datamodellering en NO CODE Platformen? Lees dan snel verder! Bij deze rol horen de volgende werkzaamheden: Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform,

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »
Thierry  Vredeveld

Thierry Vredeveld

25/10/2010 20:16:26
Quote Anchor link
Hallo iedereen, ik ben net nieuw op het forum en begin net met php, dus hoop dat dit ik dit topic op de goeie plek post.

Ik ben bezig om een factuur systeem te maken, waarin je naam, bedrijfsnaam en adres kunt invullen, en hij deze waardes kopieert naar een pdf bestand.

Dat is mij al gelukt, echter is het ook mogelijk om werkzaamheden,kosten en aantal toe te voegen.

Nu wil ik dat, mijn script alleen de velden kopieer naar de pdf, waar ook daadwerkelijk iets ingevuld is. Zodat ik geen witregels in mijn pdf krijg.

Hoop dat ik het zo goed mogelijk heb omschreven en dat iemand mij even op weg kan helpen, alvast bedankt!

Groeten, Thierry
 
PHP hulp

PHP hulp

26/04/2024 09:12:39
 
Pim -

Pim -

25/10/2010 20:20:59
Quote Anchor link
Kan je de code geven waarmee je de velden in de PDF zet?

Een leeg-check:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function isEmpty($val)
{

    return $val === '';
}

?>

Niet empty() gebruiken, want 0 is dan ook leeg
 
Thierry  Vredeveld

Thierry Vredeveld

25/10/2010 20:24:11
Quote Anchor link
Dat kan ik wel :), ik heb alleen paar aanpassingen gedaan hoor.
Het script waar hij alles naar pdf kopieert, komt ergens anders vandaan.

Alvast bedankt!


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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
// variables
$bedrijfsnaam = $_POST["bedrijfsnaam"];
$naam = $_POST["naam"];
$adres = $_POST["adres"];
$postcode = $_POST["postcode"];
$plaats = $_POST["plaats"];
$refNummer = $_POST["refNummer"];

//arrays
$product[0] = $_POST["product[0]"];
$product[1] = $_POST["product[1]"];
$product[2] = $_POST["product[2]"];
$product[3] = $_POST["product[3]"];
$product[4] = $_POST["product[4]"];
$product[5] = $_POST["product[5]"];
$product[6] = $_POST["product[6]"];
$product[7] = $_POST["product[7]"];
$product[8] = $_POST["product[8]"];
$product[9] = $_POST["product[9]"];
$product[10] = $_POST["product[10]"];
$product[11] = $_POST["product[11]"];
$product[12] = $_POST["product[12]"];
$product[13] = $_POST["product[13]"];
$product[14] = $_POST["product[14]"];
$product[15] = $_POST["product[15]"];
$product[16] = $_POST["product[16]"];
$product[17] = $_POST["product[17]"];
$product[18] = $_POST["product[18]"];
$product[19] = $_POST["product[19]"];
$product[20] = $_POST["product[20]"];
$product[21] = $_POST["product[21]"];
$product[22] = $_POST["product[22]"];
$product[23] = $_POST["product[23]"];
$product[24] = $_POST["product[24]"];
$product[25] = $_POST["product[25]"];
$product[26] = $_POST["product[26]"];
$product[27] = $_POST["product[27]"];
$product[28] = $_POST["product[28]"];
$product[29] = $_POST["product[29]"];

$aantal[0] = $_POST["aantal[0]"];
$aantal[1] = $_POST["aantal[1]"];
$aantal[2] = $_POST["aantal[2]"];
$aantal[3] = $_POST["aantal[3]"];
$aantal[4] = $_POST["aantal[4]"];
$aantal[5] = $_POST["aantal[5]"];
$aantal[6] = $_POST["aantal[6]"];
$aantal[7] = $_POST["aantal[7]"];
$aantal[8] = $_POST["aantal[8]"];
$aantal[9] = $_POST["aantal[9]"];
$aantal[10] = $_POST["aantal[10]"];
$aantal[11] = $_POST["aantal[11]"];
$aantal[12] = $_POST["aantal[12]"];
$aantal[13] = $_POST["aantal[13]"];
$aantal[14] = $_POST["aantal[14]"];
$aantal[15] = $_POST["aantal[15]"];
$aantal[16] = $_POST["aantal[16]"];
$aantal[17] = $_POST["aantal[17]"];
$aantal[18] = $_POST["aantal[18]"];
$aantal[19] = $_POST["aantal[19]"];
$aantal[20] = $_POST["aantal[20]"];
$aantal[21] = $_POST["aantal[21]"];
$aantal[22] = $_POST["aantal[22]"];
$aantal[23] = $_POST["aantal[23]"];
$aantal[24] = $_POST["aantal[24]"];
$aantal[25] = $_POST["aantal[25]"];
$aantal[26] = $_POST["aantal[26]"];
$aantal[27] = $_POST["aantal[27]"];
$aantal[28] = $_POST["aantal[28]"];
$aantal[29] = $_POST["aantal[29]"];

$prijs[0] = $_POST["prijs[0]"];
$prijs[1] = $_POST["prijs[1]"];
$prijs[2] = $_POST["prijs[2]"];
$prijs[3] = $_POST["prijs[3]"];
$prijs[4] = $_POST["prijs[4]"];
$prijs[5] = $_POST["prijs[5]"];
$prijs[6] = $_POST["prijs[6]"];
$prijs[7] = $_POST["prijs[7]"];
$prijs[8] = $_POST["prijs[8]"];
$prijs[9] = $_POST["prijs[9]"];
$prijs[10] = $_POST["prijs[10]"];
$prijs[11] = $_POST["prijs[11]"];
$prijs[12] = $_POST["prijs[12]"];
$prijs[13] = $_POST["prijs[13]"];
$prijs[14] = $_POST["prijs[14]"];
$prijs[15] = $_POST["prijs[15]"];
$prijs[16] = $_POST["prijs[16]"];
$prijs[17] = $_POST["prijs[17]"];
$prijs[18] = $_POST["prijs[18]"];
$prijs[19] = $_POST["prijs[19]"];
$prijs[20] = $_POST["prijs[20]"];
$prijs[21] = $_POST["prijs[21]"];
$prijs[22] = $_POST["prijs[22]"];
$prijs[23] = $_POST["prijs[23]"];
$prijs[24] = $_POST["prijs[24]"];
$prijs[25] = $_POST["prijs[25]"];
$prijs[26] = $_POST["prijs[26]"];
$prijs[27] = $_POST["prijs[27]"];
$prijs[28] = $_POST["prijs[28]"];
$prijs[29] = $_POST["prijs[29]"];


class MYPDF extends TCPDF {
    public function Header() {
        $this->setJPEGQuality(90);
        $this->Image('logo.png', 120, 10, 75, 0, 'PNG', 'adres van het logo(logo verplicht) zonder www&http');
 
    }

    public function Footer() {
        $this->SetY(-15);
        $this->SetFont(PDF_FONT_NAME_MAIN, 'I', 8);
        $this->Cell(0, 10, '©2010 innovative-webdesign.nl', 0, false, 'C');
    }

    public function CreateTextBox($textval, $x = 0, $y, $width = 0, $height = 10, $fontsize = 10, $fontstyle = '', $align = 'L') {
        $this->SetXY($x+20, $y); // 20 = margin left
        $this->SetFont(PDF_FONT_NAME_MAIN, $fontstyle, $fontsize);
        $this->Cell($width, $height, $textval, 0, false, $align);
    }
}


// create a PDF object
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 
// set document (meta) information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Henk Schepers');
$pdf->SetTitle('Facturatiescript v0.22 pre pre-beta');
 
// add a page
$pdf->AddPage();
 
// create address box
$pdf->CreateTextBox($bedrijfsnaam, 0, 55, 80, 10, 10, 'B');
$pdf->CreateTextBox($naam, 0, 60, 80, 10, 10);
$pdf->CreateTextBox($adres, 0, 65, 80, 10, 10);
$pdf->CreateTextBox($postcode . $plaats, 0, 70, 80, 10, 10);
 
// invoice title / number
$pdf->CreateTextBox('Factuur #1337', 0, 90, 120, 20, 16);
 
// date, order ref
$pdf->CreateTextBox('Datum: '.date('Y-m-d'), 0, 100, 0, 10, 10, '', 'R');
$pdf->CreateTextBox('ref.: #2674', 0, 105, 0, 10, 10, '', 'R');

// list headers

$pdf->CreateTextBox('Aantal', 0, 120, 20, 10, 10, 'B', 'C');
$pdf->CreateTextBox('Product(en) en\of Services', 20, 120, 90, 10, 10, 'B');
$pdf->CreateTextBox('Prijs', 110, 120, 30, 10, 10, 'B', 'R');
$pdf->CreateTextBox('Bedrag', 140, 120, 30, 10, 10, 'B', 'R');
 
$pdf->Line(20, 129, 195, 129);
 
// some example data
$orders[] = array('quant' => 1, 'descr' => 'Facturatiesysteem', 'price' => 75);
$orders[] = array('quant' => 40, 'descr' => 'Uurloon', 'price' => 10.45);
$orders[] = array('quant' => 3, 'descr' => 'Garantie eventuele fouten\bugs 1jaar', 'price' => 9.95);
 
$currY = 128;
$total = 0;
foreach ($orders as $row) {
    $pdf->CreateTextBox($row['quant'], 0, $currY, 20, 10, 10, '', 'C');
    $pdf->CreateTextBox($row['descr'], 20, $currY, 90, 10, 10, '');
    $pdf->CreateTextBox('€'.$row['price'], 110, $currY, 30, 10, 10, '', 'R');
    $amount = $row['quant']*$row['price'];
    $pdf->CreateTextBox('€'.$amount, 140, $currY, 30, 10, 10, '', 'R');
    $currY = $currY+5;
    $total = $total+$amount;
}

$pdf->Line(20, $currY+4, 195, $currY+4);

// output the total row
$pdf->CreateTextBox('Totaal', 20, $currY+5, 135, 10, 10, 'B', 'R');
$pdf->CreateTextBox('€'.number_format($total, 2, '.', ''), 140, $currY+5, 30, 10, 10, 'B', 'R');
 
// some payment instructions or information
$pdf->setXY(20, $currY+30);
$pdf->SetFont(PDF_FONT_NAME_MAIN, '', 10);
$pdf->MultiCell(175, 10, '<em>Gelieve het bovengenoemde totaalbedrag binnen 10 dagen over te maken op rekening nummer 0000000
(Rabobank) t.n.v. innovative-webdesign, onder vermelding van het factuurnummer</em>. <br />'
, 0, 'L', 0, 1, '', '', true, null, true);
 
//Close and output PDF document
$pdf->Output('wip.pdf', 'F');
[
/code]
 
SilverWolf NL

SilverWolf NL

25/10/2010 21:46:59
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?PHP
$product
[0] = $_POST["product[0]"];
...

$product[29] = $_POST["product[29]"];

$aantal[0] = $_POST["aantal[0]"];
...

$aantal[29] = $_POST["aantal[29]"];

$prijs[0] = $_POST["prijs[0]"];
...

$prijs[29] = $_POST["prijs[29]"];
?>


Werkt dit niet gewoon?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?PHP
$product
=$_POST["product"];
$aantal=$_POST["aantal"];
$prijs=$_POST["prijs"];
?>
 
Thierry  Vredeveld

Thierry Vredeveld

25/10/2010 21:48:24
Quote Anchor link
Maar als ik hem dan $prijs en $product en $aantal dan door laat geven aan de pdf, geeft ie dat ook niet alle lege velden mee?
 
Pim -

Pim -

25/10/2010 22:02:10
Quote Anchor link
Doet hij nu ook hoor.
En als je van de names van de velden 'orders[n][price]', 'orders[n][quant]' en 'orders[n][descr]', met n als 'hoeveelste', heb je meteen de array in elkaar zoals je die later ook gebruikt.

Welk van de drie wil je op leegheid testen?
Stel dat dat aantal/quant is, gebruik dan het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$orders
= array_filter($orders,
     function(
$item) {
        return (ctype_digit($item['quant']) && $item['quant'] !== 0);
    }
);

?>

Deze haalt alle items weg die geen getal zijn of 0
Gewijzigd op 25/10/2010 22:02:49 door Pim -
 
Thierry  Vredeveld

Thierry Vredeveld

26/10/2010 17:39:49
Quote Anchor link
Ik moet ze allemaal op leeg checken :)

ik snap die functie die je gemaakt hebt wel redelijk, alleen snap ik deze zin niet helemaal:
En als je van de names van de velden 'orders[n][price]', 'orders[n][quant]' en 'orders[n][descr]', met n als 'hoeveelste', heb je meteen de array in elkaar zoals je die later ook gebruikt.

sorry :p
Gewijzigd op 26/10/2010 17:40:01 door Thierry Vredeveld
 
Arjan -

Arjan -

26/10/2010 17:45:59
Quote Anchor link
Als je een formulier hebt kan je het volgende doen:

<input type="text" name="product[]" value="" />
<input type="text" name="product[]" value="" />
<input type="text" name="product[]" value="" />
<input type="text" name="product[]" value="" />
<input type="text" name="product[]" value="" />
<input type="text" name="product[]" value="" />

Je ziet bij de naam "product[]" staan. Hiermee geef je aan dat je na je request een array terug wilt krijgen met daarin, in dit geval, 6 keys (van 0 t/m 5) met elk hun eigen waarde.

Dus als je dan dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {

echo '<pre>';
print_r($_POST['product']);
echo '</pre>';

}

?>


zal je zien dat je een array geprint krijgt met de ingevoerde waarden.

Omdat in dit geval $_POST['product'] een array is, kan je met een foreach door de array wandelen en controleren of de waarden zijn ingevuld, dus zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
foreach($_POST['product'] AS $key => $value) {

if(trim($value) != '')
echo $key.' is niet ingevuld';

}

?>


(wel even controleren of $_POST['product'] wel echt een array is en of die wel één of meerdere waarden bevatten (want een foreach gaat in de fout als ie niet kan loopen))
Gewijzigd op 26/10/2010 17:50:33 door Arjan -
 
Pim -

Pim -

26/10/2010 17:48:09
Quote Anchor link
Dus als je van het eerste item van het prijs veld de naam 'orders[0][price]' maakt, bij de hoeveelheid 'orders[0][quant]' en bij de beschrijving 'orders[0][descr]'. Voor het tweede item vervang je de 0 voor een 1, voor het derde item de 0 voor een 2 enz.

Als ze alle niet leeg mogen zijn, wordt de filter zo:
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
<?php
$orders
= array_filter($_POST['orders'],
     function(
$item) {
        return (
        ctype_digit($item['quant']) &&
        $item['quant'] !== '0' &&

        $item['price'] !== '' &&

        $item['descr'] !== ''
    );
    }
);

?>

Array filter heelt dus de items weg, waarbij de functie true geeft. Die functie (een Closure in dit geval) controleert dus of de hoeveelheid een nummer is en niet nul en of de prijs en beschrijving velden niet leeg zijn.
 
Thierry  Vredeveld

Thierry Vredeveld

26/10/2010 17:50:21
Quote Anchor link
Ja zo word het al stuk duidelijker :D

Kan het nu niet toepassen, maar ga het zometeen sowieso proberen, bedankt alvast!
 
Arjan -

Arjan -

26/10/2010 17:53:14
Quote Anchor link
En toch is dit erg omslachtig. Je wilt gewoon rechtstreeks een array terug krijgen uit je request lijkt mij. Je moet nu alle getallen handmatig invoeren.

Je kan toch veel beter zoiets doen:

<input type="text" name="product[]" value="" />
<input type="text" name="price[]" value="" />
<input type="text" name="descr[]" value="" />

<input type="text" name="product[]" value="" />
<input type="text" name="price[]" value="" />
<input type="text" name="descr[]" value="" />

<input type="text" name="product[]" value="" />
<input type="text" name="price[]" value="" />
<input type="text" name="descr[]" value="" />

<input type="text" name="product[]" value="" />
<input type="text" name="price[]" value="" />
<input type="text" name="descr[]" value="" />

Zo krijg je dus bij elkaar horende keys in zowel product, price en descr en zit je niet te kloten met alle getallen handmatig invoeren.

Edit: Eigenlijk dus hetgeen wat SilverWolf NL al aan het begin aangaf. Het gaat er om dat je die onhandige $product[0] = $_POST['product[0]']; kwijt bent, want dat is zeer omslachtig. Daarna kan je heel simpel alles doen met de arrays wat je wilt.
Gewijzigd op 26/10/2010 17:58:59 door Arjan -
 
Pim -

Pim -

26/10/2010 18:21:51
Quote Anchor link
Ja dit is idd wel wat makkelijker, hoewel de velden waarschijnlijk toch dynamisch gemaakt worden.

Dan wordt de code:
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
<?php
$count
= (isset($_POST['descr']) && is_array($_POST['descr'])) ? count($_POST['descr']) : 0;
$orders = array();
for($i = 0; $i < $count; ++$i) {
    if (ctype_digit($_POST['quant'][$i]) &&
        $_POST['quant'][$i] !== '0' &&
        $_POST['price'][$i] !== '' &&
        $_POST['descr'][$i] !== ''
    )
        $orders[] = array(
            'quant' => $_POST['quant'][$i],
            'price' => $_POST['price'][$i],
            'descr' => $_POST['descr'][$i],
        );
}


print_r($orders);
?>

Fouten worden zo genegeerd. Als ze ze bij wil houden, moet je de if splitsen en een array met de fouten vullen.
Gewijzigd op 26/10/2010 18:23:44 door Pim -
 
Thierry  Vredeveld

Thierry Vredeveld

26/10/2010 21:02:20
Quote Anchor link
Ok dit is nu mijn code:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
// variables
$bedrijfsnaam = $_POST["bedrijfsnaam"];
$naam = $_POST["naam"];
$adres = $_POST["adres"];
$postcode = $_POST["postcode"];
$plaats = $_POST["plaats"];
$refNummer = $_POST["refNummer"];
$descr = $_POST["descr"];
$quant = $_POST["quant"];
$price = $_POST["price"];


class MYPDF extends TCPDF {
    public function Header() {
        $this->setJPEGQuality(90);
        $this->Image('logo.png', 120, 10, 75, 0, 'PNG', 'adres van het logo(logo verplicht) zonder www&http');
 
    }

    public function Footer() {
        $this->SetY(-15);
        $this->SetFont(PDF_FONT_NAME_MAIN, 'I', 8);
        $this->Cell(0, 10, '©2010 innovative-webdesign.nl', 0, false, 'C');
    }

    public function CreateTextBox($textval, $x = 0, $y, $width = 0, $height = 10, $fontsize = 10, $fontstyle = '', $align = 'L') {
        $this->SetXY($x+20, $y); // 20 = margin left
        $this->SetFont(PDF_FONT_NAME_MAIN, $fontstyle, $fontsize);
        $this->Cell($width, $height, $textval, 0, false, $align);
    }
}


// create a PDF object
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 
// set document (meta) information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Henk Schepers');
$pdf->SetTitle('Facturatiescript v0.22 pre pre-beta');
 
// add a page
$pdf->AddPage();
 
// create address box
$pdf->CreateTextBox($bedrijfsnaam, 0, 55, 80, 10, 10, 'B');
$pdf->CreateTextBox($naam, 0, 60, 80, 10, 10);
$pdf->CreateTextBox($adres, 0, 65, 80, 10, 10);
$pdf->CreateTextBox($postcode . $plaats, 0, 70, 80, 10, 10);
 
// invoice title / number
$pdf->CreateTextBox('Factuur #1337', 0, 90, 120, 20, 16);
 
// date, order ref
$pdf->CreateTextBox('Datum: '.date('Y-m-d'), 0, 100, 0, 10, 10, '', 'R');
$pdf->CreateTextBox('ref.: #2674', 0, 105, 0, 10, 10, '', 'R');

// list headers
$pdf->CreateTextBox('Aantal', 0, 120, 20, 10, 10, 'B', 'C');
$pdf->CreateTextBox('Product(en) en\of Services', 20, 120, 90, 10, 10, 'B');
$pdf->CreateTextBox('Prijs', 110, 120, 30, 10, 10, 'B', 'R');
$pdf->CreateTextBox('Bedrag', 140, 120, 30, 10, 10, 'B', 'R');
 
$pdf->Line(20, 129, 195, 129);
 
// some example data
$count = (isset($_POST['descr']) && is_array($_POST['descr'])) ? count($_POST['descr']) : 0;
$orders = array();
for($i = 0; $i < $count; ++$i)
{

    if (ctype_digit($_POST['quant'][$i]) &&
        $_POST['quant'][$i] !== '0' &&
        $_POST['price'][$i] !== '' &&
        $_POST['descr'][$i] !== ''
    )
        $orders[] = array(
            'quant' => $_POST['quant'][$i],
            'price' => $_POST['price'][$i],
            'descr' => $_POST['descr'][$i],
        );
}


print_r($orders);
 
$currY = 128;
$total = 0;
foreach ($orders as $row) {
    $pdf->CreateTextBox($row['quant'], 0, $currY, 20, 10, 10, '', 'C');
    $pdf->CreateTextBox($row['descr'], 20, $currY, 90, 10, 10, '');
    $pdf->CreateTextBox('€'.$row['price'], 110, $currY, 30, 10, 10, '', 'R');
    $amount = $row['quant']*$row['price'];
    $pdf->CreateTextBox('€'.$amount, 140, $currY, 30, 10, 10, '', 'R');
    $currY = $currY+5;
    $total = $total+$amount;
}

$pdf->Line(20, $currY+4, 195, $currY+4);

// output the total row
$pdf->CreateTextBox('Totaal', 20, $currY+5, 135, 10, 10, 'B', 'R');
$pdf->CreateTextBox('€'.number_format($total, 2, '.', ''), 140, $currY+5, 30, 10, 10, 'B', 'R');
 
// some payment instructions or information
$pdf->setXY(20, $currY+30);
$pdf->SetFont(PDF_FONT_NAME_MAIN, '', 10);
$pdf->MultiCell(175, 10, '<em>Gelieve het bovengenoemde totaalbedrag binnen 10 dagen over te maken op rekening nummer 0000000
(Rabobank) t.n.v. innovative-webdesign, onder vermelding van het factuurnummer</em>. <br />'
, 0, 'L', 0, 1, '', '', true, null, true);
 
//Close and output PDF document
$pdf->Output('wip.pdf', 'F');
[
/code]

Maar ik krijg niks te zien in mijn pdf, heb ik iets fout?
Gewijzigd op 26/10/2010 23:39:12 door Thierry Vredeveld
 

06/11/2010 16:27:44
Quote Anchor link
Heeft iemand hier nog een toevoeging aan? Ik ben samen met Thierry aan dit script bezig, alleen het posten van die producten werkt nog niet..
 



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.