Array met while loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Ham

Dennis Ham

12/07/2016 03:38:30
Quote Anchor link
Ik haal gegevens uit mijn database op deze manier:

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
<?php
$SQL
="select * from factuurbouw where sessieid='".$factuursessie."' order by fbid";
  $zoekresultaten=$zoekresultaten_query=mysql_query(($SQL),$eaccesDB);  
  $zoekresultaten=mysql_fetch_array($zoekresultaten_query);

  if (!($zoekresultaten==0))
  {

    while(!($zoekresultaten==0))
    {

      $prijs=$zoekresultaten["productprijs"];
      $aantal=$zoekresultaten["productaantal"];
      $naam=$zoekresultaten["productnaam"];
      $ean=$zoekresultaten["productean"];
      $serienr=$zoekresultaten["productserienr"];
      $pid=$zoekresultaten["productid"];
?>

Nu wil ik deze gegevens in de array hier onder plaatsen dmv een while of foreach loop maar ik blijf fouten krijgen. De bedoeling is dus dat ik alleen voor de lines een loop maak, de lines zijn factuur regels en kan per factuur verschillen
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
<?php
// build the post body we are going to submit
$request->buildPostBody(array(
    'clientnr' => $klantid,
    'reference' => array(
        'line1' => '',
        'line2' => 'Hartelijk dank voor uw order',
        'line3' => 'Vermeld altijd uw factuurnummer bij een betaling'
    ),
    'lines' => array(
        array('amount' => $aantal,
            'amount_desc' => 'x',
            'description' => $naam,
            'tax_rate' => 21,
            'price' => $prijs
        ),
        array('amount' => 1,
            'amount_desc' => '',
            'description' => 'Wooden case',
            'tax_rate' => 21,
            'dicount_pct' => 25,
            'price' => 500
        ),
        array('amount' => 10,
            'amount_desc' => 'hours',
            'description' => 'Support',
            'tax_rate' => 6,
            'price' => 62.5
        ),
        array('description' => 'This is a textline')),
    'discount' => 10,
    'discounttype' => 'percentage',
    'action' => 'send',
    'sendmethod' => 'email'
));
?>

Ward:
Graag voortaan bij code de [code][/code]-tags gebruiken.
Hier kun je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 12/07/2016 06:26:23 door Ward van der Put
 
PHP hulp

PHP hulp

22/11/2024 12:31:48
 
Obelix Idefix

Obelix Idefix

12/07/2016 07:56:45
Quote Anchor link
Dennis Ham op 12/07/2016 03:38:30:
maar ik blijf fouten krijgen.

En wat zijn die fouten dan?
 
Dennis Ham

Dennis Ham

12/07/2016 11:55:28
Quote Anchor link
Ik heb geprobeerd de while code voor de 'lines' => array te zetten maar dat breekt de hele code. Ik heb van alles geprobeerd maar kan ook geen voorbeeld op internet vinden van hoe ik een loop maak in een array dat ik dus die 3 lines array vervang met iets als foreach om iedere product regel uit mijn database te halen en te versturen via deze array.
 
- SanThe -

- SanThe -

12/07/2016 12:28:26
Quote Anchor link
Wat is de bedoeling van twee keer = in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$zoekresultaten
=$zoekresultaten_query=mysql_query(($SQL),$eaccesDB);  
?>


$zoekresultaten is een array(), waarom check je dan op 0 (nul)?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (!($zoekresultaten==0))
?>


Wat is het nut van al deze nieuwe variabelen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$prijs
=$zoekresultaten["productprijs"];
$aantal=$zoekresultaten["productaantal"];
$naam=$zoekresultaten["productnaam"];
$ean=$zoekresultaten["productean"];
$serienr=$zoekresultaten["productserienr"];
$pid=$zoekresultaten["productid"];
?>


En waar komt $klantid vandaan?
 
Dennis Ham

Dennis Ham

12/07/2016 12:39:06
Quote Anchor link
Met deze gegevens wordt een factuur aangemaakt in mijn eigen factuur systeem dat werkt prima. Ik wil deze factuur nu ook via een API naar een ander systeem sturen. Dat werkt als ik de tweede array script laat uitvoeren met dummy data. De enigste probleem is dus dat ik niet weet hoe om $aantal,$prijs en $naam voor iedere regel uit mijn database moet halen en in de tweede array script moet plaatsen, een keer werkt maar de aantal regels verschillen dus heb iets nodig wat de 3 variabelen in lines array meer of minder dan 3 keer kan toevoegen afhangende van hoe veel product regels er in de database staan.:

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
'lines' => array(
        array('amount' => $aantal,
            'amount_desc' => 'x',
            'description' => $naam,
            'tax_rate' => 21,
            'price' => $prijs
        ),
        array('amount' => 1,
            'amount_desc' => '',
            'description' => 'Wooden case',
            'tax_rate' => 21,
            'dicount_pct' => 25,
            'price' => 500
        ),
        array('amount' => 10,
            'amount_desc' => 'hours',
            'description' => 'Support',
            'tax_rate' => 6,
            'price' => 62.5
        ),
 
- SanThe -

- SanThe -

12/07/2016 13:06:32
Quote Anchor link
Je hebt geen enkele vraag uit mijn vorig topic beantwoord.

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
<?php
$sql
= "SELECT * FROM factuurbouw WHERE sessieid='".$factuursessie."' ORDER BY fbid";
$zoekresultaten = mysql_query($sql, $eaccesDB);  
$lines = array();
while($row = mysql_fetch_array($zoekresultaten))
{

    $lines[] = array('amount'        => $row['productaantal',
                    'amount_desc'    => 'x',
                    'description'    => $row['productnaam'],
                    'tax_rate'        => 21,
                    'price'            => $row['productprijs']
                    );
}

$request->buildPostBody(array(
    'clientnr' => $klantid,
    'reference' => array(
        'line1' => '',
        'line2' => 'Hartelijk dank voor uw order',
        'line3' => 'Vermeld altijd uw factuurnummer bij een betaling'
    ),
    'lines' => $lines,
    'discount' => 10,
    'discounttype' => 'percentage',
    'action' => 'send',
    'sendmethod' => 'email'
));
?>
 
Thomas van den Heuvel

Thomas van den Heuvel

12/07/2016 13:11:16
Quote Anchor link
@topicstarter: Je haalt denk ik een aantal dingen door elkaar.

Allereerst, zou $SQL meerdere records moeten retourneren?

mysql_fetch_array() haalt slechts een enkel record op uit je database en retourneert deze zowel als een numeriek alsook een associatief array. Maar deze opdracht retourneert dus niet alle records in één keer.

Waar je naar op zoek bent is (abstract genomen) waarschijnlijk zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$lines
= array();

$res = mysql_query('je query', $eaccessDB);
while ($row = mysql_fetch_assoc($res)) {
    // creeer een nieuwe array-entry in $lines en vul deze met data uit $row
    $lines[] = array(
        'kolomnaam' => $row['whatever'],
        // ...
    );
}

?>

Je doet er trouwens verstandiger aan om over te stappen op MySQLi of PDO want de standaard MySQL-driver (dit omvat alle mysql_-functies) is in PHP 7 verdwenen.

(meh, SanThe was me voor)
Gewijzigd op 12/07/2016 13:14:39 door Thomas van den Heuvel
 
Dennis Ham

Dennis Ham

12/07/2016 15:07:51
Quote Anchor link
Bedankt voor de reacties. SanThe daar kan ik wat mee, heb nu een idee hoe het er uit moet zien. Ik ga het vanavond uitproberen.
 



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.