04. november 2003 - 17:35Der er
21 kommentarer og 2 løsninger
Mellemrum ved udtag af data
Hejsa,
Jeg har en database men noget input. Lad os bare sige at jeg har følgende:
id | brand | info | price
Jeg laver så en forespørgsel til databasen, og får den til at smide rækkerne ud. Jeg kunne godt tænke mig at den lavede et mellemrum mellem de forskellige brands (producenter) ... ala dette:
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Lav en 'ORDER BY brand' i din SQL I PHP laver du noget a'la: $lastBrand = ''; // løkken - for, while... if ($lastBrand!=$brand) { echo '<BR>'; echo $brand.'<BR>'; $lastBrand = $brand; }
...kan selvfølgelig laves om mht. layout (hvis du bruger en TABLE)
<? require ('connect.inc.php'); $str = ""; $sql = "SELECT id, brand FROM tabel ORDER BY brand"; $kat_res = mysql_query($sql) or die(mysql_error()); while ($kat_row = mysql_fetch_array($kat_res)) { $str .= "<b style='color:#039'>".$kat_row['brand']."</b><br />"; $sql = "SELECT info FROM tabel WHERE id = ".$kat_row['id']." ORDER BY info"; $res = mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_array($res)) { $str .= "- ".$row['info']."<br />"; } } echo $str; ?>
Ok, prøv det her. Du skal bytte: require 'connect.inc.php'; ud med din egen databaseforbindelse. Spørg, hvis du er i tvivl om noget.
<? require ('connect.inc.php');// Forbindelse til din database $str = ""; $sql = "SELECT id, brand FROM tabel ORDER BY brand"; $kat_res = mysql_query($sql) or die(mysql_error()); while ($kat_row = mysql_fetch_array($kat_res)) { $str .= "<b style='color:#039'>".$kat_row['brand']."</b><br />"; $sql = "SELECT info FROM tabel WHERE id = ".$kat_row['id']." ORDER BY info"; $res = mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_array($res)) { $str .= $row['info']."<br />"; } $str .= "<br />"; } ?> <table> <tr><td> <fieldset> <p style="color:blue;"><b>Overskrift:</b> <br /><?=$str?></p> </fieldset> </td></tr> </table>
<? require ('connect.inc.php');// Forbindelse til din database $str = ""; $sql = "SELECT brand FROM tabel GROUP BY brand ORDER BY brand"; $kat_res = mysql_query($sql) or die(mysql_error()); while ($kat_row = mysql_fetch_assoc($kat_res)) { $str .= "<b style='color:#039'>".$kat_row['brand']."</b><br />"; $sql = "SELECT info FROM tabel WHERE brand = '".$kat_row['brand']."' ORDER BY info"; $res = mysql_query($sql) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $str .= "- ".$row['info']."<br />"; } $str .= "<br />"; } ?> <table> <tr><td> <fieldset> <p style="color:blue;"><b>Overskrift:</b> <br /><?=$str?></p> </fieldset> </td></tr> </table>
Jeg vil til gengæld ikke mene mit forslag er brugbart til en større tabel. Der vil jeg derimod foreslå en normalisering af databasen. Altså producenter og produkter i hver sin tabel, for at undgå redundans.
Hvis jeg nu deler producenter og varer op i hver deres tabel, hvordan vil en søgning på alle produkter så se ud (query) ? og hvad vil fordelen være frem for sone's forslag?
Fordelen vil først og fremmest være, at du undgår de samme data står mange gange i den samme tabel. Du ville så skulle have et 'producent-id' istedet, som er lig med id i producent tabellen. Det vil jo gøre at du fx kunne hive alle producenterne ud i fx alfabetisk rækkefølge og derefter diverse tilhørende produkter ligeså. Det vil spare plads, gøre dine udtræk hurtigere og mere flexible.
Det er vi nok heller ikke. Hvis det virker, når jeg får det prøvet denne weekend, så kan jeg jo lige så godt acceptere svarene :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.