Database gegevens in een array zetten
Ik heb een veld artikelen, en daar staat een record met: DVD, CD, LP.
Nu wil ik deze ophalen en apart plaatsen. Moet ik daar explode voor gebruiken?
Yep. Maar waarom heb je meerdere waarden in één column?
Heb je een voorbeeld hoe ik dat het beste kan ophalen?
Je zou een extra tabel kunnen maken welke je doormiddel van een relatie veld koppelt aan je hoofd tabel.
Gr. Robert
Maar hoe haal ik alles op uit die array? Ik krijg het resultaat van de array wel te zien, alleen niet op een aparte regel met foreach
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$array = array(
'Dvd',
'Cd',
'Nogiets'
);
//moet je er zo door heen loopen:
foreach ($array as $item){
echo $item . "<br />";
}
'Dvd',
'Cd',
'Nogiets'
);
//moet je er zo door heen loopen:
foreach ($array as $item){
echo $item . "<br />";
}
Gewijzigd op 20/03/2013 22:14:44 door Robert Wazzaa
Robert - op 20/03/2013 22:07:48:
Beste Donny,
Je zou een extra tabel kunnen maken welke je doormiddel van een relatie veld koppelt aan je hoofd tabel.
Gr. Robert
Je zou een extra tabel kunnen maken welke je doormiddel van een relatie veld koppelt aan je hoofd tabel.
Gr. Robert
nee, je MOET een extra tabel 'artikelen' aanmaken opdat je later ook daar veel info uit kunt putten.
daarna maak je bij elke SELECT een JOIN om de tabellen aan elkaar te koppelen:
Code (php)
1
SELECT tabel1.kolom1, artikelen.kolom1 FROM tabel1 LEFT JOIN artikelen AS tabel1.artikel_id = artikelen.artikel_id
Gewijzigd op 20/03/2013 22:14:57 door Frank Nietbelangrijk
Frank Nietbelangrijk op 20/03/2013 22:14:10:
nee, je MOET een extra tabel 'artikelen' aanmaken opdat je later ook daar veel info uit kunt putten.
daarna maak je bij elke SELECT een JOIN om de tabellen aan elkaar te koppelen:
daarna maak je bij elke SELECT een JOIN om de tabellen aan elkaar te koppelen:
Code (php)
1
SELECT tabel1.kolom1, artikelen.kolom1 FROM tabel1 LEFT JOIN artikelen AS tabel1.artikel_id = artikelen.artikel_id
'Moeten' is een groot woord haha.
Het blijft altijd een keuze, maar in principe als je een snel script wil kun je beter met een koppeltabel werken.
Gewijzigd op 20/03/2013 22:16:32 door Robert Wazzaa
Ik heb nu:
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
24
25
26
27
28
29
30
31
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
<?php
include ("settings/connect.php");
if (isset($_POST['watch_order']))
{
$get_order = $db -> prepare("SELECT COUNT(*) FROM orders WHERE order_number=:order_number");
$get_order -> bindparam(':order_number', $_POST['order_number']);
$get_order -> execute();
if ($get_order -> fetchColumn() == 1){
echo 'Er is een order gevonden!';
$show_order = $db->prepare("SELECT * FROM orders WHERE order_number=:order_number");
$show_order -> bindparam(':order_number',$_POST['order_number']);
$show_order -> execute();
$print_order = $show_order -> fetch(PDO::FETCH_ASSOC);
$order = array($print_order['order_article']);
echo 'Het bestel nummer van uw factuur: '.$print_order['order_number'].'<br />';
echo 'Uw bestelling wordt gebracht op: '.$print_order['order_date'].' tussen '. $print_order['order_timestart'].' en ' . $print_order['order_timeend'];
$articles = explode(',', $order);
foreach ($i = 0; $i < $articles; $i++){
echo 'U heeft besteld: '.$articles[$i].'<br />';
}
} else {
echo 'Uw order is helaas niet gevonden! Weet u zeker dat dit het juiste order nummer is?';
}
}
?>
include ("settings/connect.php");
if (isset($_POST['watch_order']))
{
$get_order = $db -> prepare("SELECT COUNT(*) FROM orders WHERE order_number=:order_number");
$get_order -> bindparam(':order_number', $_POST['order_number']);
$get_order -> execute();
if ($get_order -> fetchColumn() == 1){
echo 'Er is een order gevonden!';
$show_order = $db->prepare("SELECT * FROM orders WHERE order_number=:order_number");
$show_order -> bindparam(':order_number',$_POST['order_number']);
$show_order -> execute();
$print_order = $show_order -> fetch(PDO::FETCH_ASSOC);
$order = array($print_order['order_article']);
echo 'Het bestel nummer van uw factuur: '.$print_order['order_number'].'<br />';
echo 'Uw bestelling wordt gebracht op: '.$print_order['order_date'].' tussen '. $print_order['order_timestart'].' en ' . $print_order['order_timeend'];
$articles = explode(',', $order);
foreach ($i = 0; $i < $articles; $i++){
echo 'U heeft besteld: '.$articles[$i].'<br />';
}
} else {
echo 'Uw order is helaas niet gevonden! Weet u zeker dat dit het juiste order nummer is?';
}
}
?>
Waar gaat het mis?
database waarde voor articles: "DVD Speler","Koelkast","Vriezer",
foreach gebruik je alleen als je door alle items in een array loopt.
Wat jij nu doet wilt moet je zo doen:
Toevoeging op 20/03/2013 22:24:14:
@ Robert: die for gaat niet werken. $articles is niet het aantal, maar een array.
Robert - op 20/03/2013 22:15:27:
'Moeten' is een groot woord haha.
Het blijft altijd een keuze, maar in principe als je een snel script wil kun je beter met een koppeltabel werken.
Het blijft altijd een keuze, maar in principe als je een snel script wil kun je beter met een koppeltabel werken.
Natuurlijk, het is maar om even onze mening duidelijk neer te zetten.
een koppeltabel is alleen nodig naar een many to many relation.
Bij een one to many heb je dat niet nodig.
Ik zit nu te kijken en je hebt inderdaad gelijk jah, had even vluchtig gekeken.
Maar jou foreach is inderdaad een 'nettere' oplossing.
@donny Mijn manier werkt wel als je de $i < $articles vervangt door $i < count($articles)
Gr. Robert
Toevoeging op 20/03/2013 22:29:17:
Ik denk dat het komt omdat ik eerst explode gebruik, en daarna $order gebruik waarin de array staat, en dat de array de 2e parameter is?
Dat klopt, je moet deze:
vervangen voor dit:
Je kunt namelijk geen explode op een array doen.
Gr. Robert
Dus een dubbele paramater is een functie in een functie? En dat werkt niet?
Donny Wie weet op 20/03/2013 22:32:03:
Dus een dubbele paramater is een functie in een functie? En dat werkt niet?
Ik volg je even niet, kun je misschien laten zien wat je nu hebt?
En welke waarde precies staat in: $print_order['order_article']
Gr. Robert
Het is gelukt nu. Maar mijn foutmelding, dubbele parameter, dat is een functie in een functie en dat kan toch niet?
In principe kan je gewoon een functiein een functie gebruiken.
2 parameters in explode, door die array
Donny Wie weet op 20/03/2013 22:43:28:
2 parameters in explode, door die array
Sorry, ik snap echt even niet wat je nu bedoelt?
Kun je source posten?