26. oktober 2004 - 20:57Der er
2 kommentarer og 1 løsning
Sortering af kommasepererede informationer fra MySQL
Lidt forhistorie:
Er ved at lave hjemmeside for en indkøbsforening. Indkøbsforeningen har aftaler med en mængde firmaer, som hver især tilbyder forskellige produkter til favorable priser til indkøbsforeningens medlemmer.
Har derfor hvert firma i en tabel med firmaoplysninger, herunder hvilke varer de tilbyder. Disse varer er indskrevet i en celle adskilt af et komma - alt skrevet med små bogstaver.
Nu vil jeg gerne have en oversigt over hvilke varer der tilbydes, og denne oversigt skal samtidig sorteres alfabetisk. Er der gengangere i varerne skal disse fjernes fra outputtet, i lighed med hvis man bruger DISTINCT i SQL SELECTEN. Dette kan blot ikke bruges her, da der kan værer forskellige varer i hver celle og ligeledes sammenfald. F.eks. hvis firma 1 leverer øl og sodavand men firma 2 leverer øl og vin. Her vil jeg så kun have outputtet til at være sodavand, vin, øl.
Har selv hekset følgende sammen, men kan det mon ikke laves kønnere og fiksere. Desuden fejler det også hvis sidste post i sidste celle har en genganger - så får jeg samme output 2 gange.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
jeg håber at grunden til at den ind imellem fejler er pga. din egen sortering af dubletter. Jeg har tidligere nørklet med noget tilsvarende, men fik senere kendskab til funktionen array_unique()
---- kode utestet ---- <?php include('../connect/connect.php');
($res = mysql_query("select * from aftaler")) || die(mysql_error()); while($data = mysql_fetch_array($res)) { if ($data['vare_nr']!=""){ $alle = explode(",",$data['vare_nr']); for ($i=0;$i<count($alle);$i++){ $sorterings_array[] = $alle[$i]; } } }
$sorteret_array = array_unique ($sorterings_array); // fjerner dubletter fra $sorterings_array sort($sorteret_array); // sorterer og giver array nye nøgler der starter med 0
for ($s=0;$s<count($sorteret_array);$s++){ echo $s." ".$sorteret_array[$s]."<br>"; }
($res = mysql_query("select * from aftaler")) || die(mysql_error()); while($data = mysql_fetch_array($res)) { if ($data['vare_nr']!=""){ $alle = explode(",",$data['vare_nr']); for ($i=0;$i<count($alle);$i++){ $sorterings_array[] = $alle[$i]; } } }
$sorteret_array = array_unique ($sorterings_array); // fjerner dubletter fra $sorterings_array sort($sorteret_array); // sorterer og giver array nye nøgler der starter med 0
($result = mysql_query("select * from aftaler where vare_nr LIKE '$sorteret_array[$s],%' OR vare_nr LIKE '%,$sorteret_array[$s]' OR vare_nr LIKE '%,$sorteret_array[$s],%' OR vare_nr = '$sorteret_array[$s]' ORDER BY lev_navn ")) || die(mysql_error()); while($dat = mysql_fetch_array($result)) {
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.