strippen en sorteren van array gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marc willemsen

Marc willemsen

27/07/2011 22:26:32
Quote Anchor link
Hallo allemaal,

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)
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
<?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);
?>


iemand een idee?
 
PHP hulp

PHP hulp

18/04/2024 20:01:30
 
The Force

The Force

28/07/2011 13:46:09
Quote Anchor link
Sla in een database nooit gegevens gescheiden door komma's op. Je zult dan ook niet tegen dergelijke problemen aanlopen. Om dit op een goede manier in je database op te slaan moet je twee tabellen aan elkaar koppelen. Neem de volgende twee tabellen:

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT kernwaarde FROM kernwaarden WHERE cf_id = 28 ORDER BY kernwaarde ASC


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
 
Marc willemsen

Marc willemsen

28/07/2011 15:05:12
Quote Anchor link
Bedankt voor je tips deze zal ik uiteraard bestuderen.

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
 
- SanThe -

- SanThe -

28/07/2011 15:25:08
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
<?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
?>
 
Marc willemsen

Marc willemsen

28/07/2011 16:03:54
Quote Anchor link
yes dank u - dat zocht ik.

alleen zelf nog even alle hoofdletters eruit proberen te krijgen.
want tis nog niet geheel alfabetisch.

mvgr mw
 
- SanThe -

- SanThe -

28/07/2011 16:14:30
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
<?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
?>
 



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.