Undefined offset: 1 en Invalid argument supplied for foreach()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

28/04/2015 08:04:14
Quote Anchor link
Ik heb de volgende twee methods voor een prijs overzicht van services:

//method voor de services

$sql = "SELECT service_id
, service
, omschijving
, footnote
FROM services
ORDER BY service_id, service";

$stmt = $this->pdo->query($sql);

return $stmt->fetchAll();

//method voor service omschrijvingen en prijzen

$sql = "SELECT *
FROM services_prijzen
ORDER BY service_id, service_omschrijving";

$stmt = $this->pdo->query($sql);

$prices = $stmt->fetchAll();
$prices = array();

foreach ($prices as $row) {
if (!is_array($prices[$row['service_id']])) {
$prices[$row['service_id']] = array();
}
$prices[$row['service_id']] = $row;
}
return $prices;

En dit heb ik in de View:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php foreach ($services as $service): ?>

<h2>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $service['service']; ?>
</h2>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php foreach ($prijzen[$service['service_id']] as $prijs): ?>

<p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $prijs['service_omschrijving']; ?>
<span>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $prijs['service_prijs']; ?>
</span></p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php endforeach; ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php endforeach; ?>


Maar daar krijg ik dis de volgende foutmeldingen bij

Undefined offset: 1 en Invalid argument supplied for foreach() on line 6

Ik kan niet ontdekken wat ik fout doe?
 
PHP hulp

PHP hulp

29/03/2024 01:46:00
 
Thomas van den Heuvel

Thomas van den Heuvel

28/04/2015 13:28:54
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$prices
= $stmt->fetchAll();
$prices = array();
?>

Je kiepert $prices meteen leeg...
 
Donald Boers

Donald Boers

29/04/2015 12:12:55
Quote Anchor link
Hi Thomas. Ik heb de tweede statement

$prices = array();

eruit gehaald, maar nog steeds het zelfde probleem.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/04/2015 12:51:25
Quote Anchor link
Het lijkt mij eenvoudiger om de database dit te laten afhandelen met een join:
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
<?php

// method om services en prijzen op te halen

$sql = "SELECT
        s.service_id,
        s.service,
        s.omschrijving,
        s.footnote,
        p.service_prijs,
        p.service_omschrijving
    FROM
        services s
    LEFT JOIN
        services_prices p
        ON s.service_id = p.service_id
    ORDER BY s.service_id, p.service_omschrijving"
;
return $this->pdo->query($sql)->fetch_all(PDO_FETCH_ASSOC);
?>
 



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.