strippen en sorteren van array gegevens
Net begonnen met php en heb mezelf een te lastige opdracht gegeven.
uit een tabel wil ik gegevens ophalen en deze sorteren.
In een bepaalde kolom komen steekwoorden voor. In sommige rijen gescheiden
met een komma.
voorbeeld:
zeil,boot,aap
zon
centrum
moet worden:
aap
boot
centrum
zeil
zon
maar script geeft:
aap
boot
zeil
centrum
zon
Ik wil graag van het geheel 1 lijst maken en dan op alfabet presenteren.
Echter krijg ik de regels met de komma's niet gesorteerd in het geheel.
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
32
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
<?php
$con = mysql_connect("localhost", "test", "test");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * FROM jos_values Where cf_id=28 ORDER BY value";
$result = mysql_query($sql);
while ($rijen = mysql_fetch_array($result))
{
$token = strtok($rijen['value'], ",");
while ($token != false)
{
echo $token . "<br />";
$token = strtok(",");
}
}
mysql_close($con);
?>
$con = mysql_connect("localhost", "test", "test");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * FROM jos_values Where cf_id=28 ORDER BY value";
$result = mysql_query($sql);
while ($rijen = mysql_fetch_array($result))
{
$token = strtok($rijen['value'], ",");
while ($token != false)
{
echo $token . "<br />";
$token = strtok(",");
}
}
mysql_close($con);
?>
iemand een idee?
jos_values
cf_id int()
kolomnaam varchar(10)
anderekolom text
kernwaarden
cf_id int()
kernwaarde varchar()
cf_id in de tabel kernwaarden verwijst naar cf_id in jos_values. Op die manier kan je aan een rij in jos_values 0 of meer kernwaarden toevoegen. Met een query als de onderstaande krijg je alle kernwaarden netjes gesorteerd terug:
Gebruik in de SELECT overigens nooit * maar geef gewoon op welke kolommen je wilt ontvangen.
Tip: verdiep je in database normalisatie, foreign keys en joins.
Gewijzigd op 28/07/2011 13:50:30 door The Force
mbt tot mijn vraag; Het is helaas een bestaand programma op een site
met ruim duizend entries. Ik wou derhalve niet gaan rommelen in databases.
Dan ben ik vooralsnog verder van huis denk ik.
mvgr
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// query uitvoeren
$woorden = array();
while ($rijen = mysql_fetch_array($result))
{
$add = explode(',', $rijen['value']);
$woorden = array_merge($woorden, $add);
}
sort($woorden);
// alle woorden staan gesorteerd in $woorden
?>
// query uitvoeren
$woorden = array();
while ($rijen = mysql_fetch_array($result))
{
$add = explode(',', $rijen['value']);
$woorden = array_merge($woorden, $add);
}
sort($woorden);
// alle woorden staan gesorteerd in $woorden
?>
alleen zelf nog even alle hoofdletters eruit proberen te krijgen.
want tis nog niet geheel alfabetisch.
mvgr mw
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// query uitvoeren
$woorden = array();
while ($rijen = mysql_fetch_array($result))
{
$add = explode(',', strtolower($rijen['value']));
$woorden = array_merge($woorden, $add);
}
sort($woorden);
// alle woorden staan gesorteerd in $woorden
?>
// query uitvoeren
$woorden = array();
while ($rijen = mysql_fetch_array($result))
{
$add = explode(',', strtolower($rijen['value']));
$woorden = array_merge($woorden, $add);
}
sort($woorden);
// alle woorden staan gesorteerd in $woorden
?>