Avatar billede blach Nybegynder
05. november 2003 - 20:36 Der er 19 kommentarer og
4 løsninger

Udtræk fra MySQL og sortering

Jeg har en database med feltet 'mappe' hvor jeg gerne vil udtrække en af hver forskellig mappe.
Disse forskellige mapper skal så udskrives på siden i rækker af 3 (alfabetisk orden) med mulighed for at indsætte link til mappen. Lige som neden for:

mappe1 mappe2 mappe3
mappe4 mappe5 mappe6
osv.
Avatar billede jakobclausen Nybegynder
05. november 2003 - 20:46 #1
//forbindelse til database
$query = mysql_query("SELECT DISTINCT * FROM mappe");

echo "<table width='100%'>";
while ($row = mysql_fetch_array($query))
{
    echo "<tr><td>$row[1]</td><td>$row[2]</td><td>$row[3]</td></tr>";
    echo "<tr><td>$row[4]</td><td>$row[5]</td><td>$row[6]</td></tr>";
}
echo "</table>";
Avatar billede rackbox Nybegynder
05. november 2003 - 20:48 #2
Jeg gætter, fordi jeg ikke forstår dit spørgsmål:

$query = "select * from mappe group by mappenavn order by mappenavn";
$result = mysql_query($query);
$num_of_rows=3;
$cur_row=0;
echo "<table><tr>";
while ($row=mysql_fetch_array($result)){
  if ($cur_row==$num_of_rows){
      echo "<tr>";
      $cur_row=0;
  }
  echo "<td>";
  echo $row['mappenavn'];
  $cur_row++;
}

Gætter jeg rigtigt?
Avatar billede jakobclausen Nybegynder
05. november 2003 - 20:50 #3
rackbox >> Mangler du ikke noget </td> </tr> </table> ?
Avatar billede rackbox Nybegynder
05. november 2003 - 20:58 #4
Joda ;-) Jeg er lidt sloppy, det indrømmer jeg.. Men det fungerer... Det er for at give princippet...
Avatar billede tipsen Nybegynder
05. november 2003 - 22:36 #5
jacob: Din fungerer da heller ikke - det er forkerte elementer der hives ud af tabellen...
Avatar billede rackbox Nybegynder
05. november 2003 - 22:38 #6
Er der nogen, der vil forklare mig spørgsmålet? Hvordan ser tabellen ud, og hvad skal der trækkes ud af dem?
Avatar billede blach Nybegynder
06. november 2003 - 14:44 #7
Jacobclusen --> dit virker i hvert fald ikke, for jeg ved jo ikke hvor mange forskellige mapper der er...

rockbox --> Det er tabellen 'mappe', feltet 'dir'. Disse 'dir' skal trækkes ud i kolonner af 3 som jeg beskrev. Men det svære består i, at den kun skal udtrække 1 af hver dir.
Altså må man gå ud fra, at man skal udtrække de forskellige dir i et array, og putte dem i kolonner af 3?
Avatar billede Slettet bruger
06. november 2003 - 14:53 #8
Jeg er ikke sikker på jeg forstår dit spørgsmål. Men så vidt jeg kan forstå skal du hente en række ud fra din database for at vise dem i en tabel. Derefter vil du have at når der har været 3 rækker i tabellen skal den smide de efterfølgende ned på næste linje. Altså får vi noget ala dette:

<?
// husk at lave forbindelse til databasen

$query = mysql_query("SELECT dir FROM mappe") or die(mysql_error());
while($row = mysql_fetch_array($query) {

  echo "<table border=\"0\"><tr>

  t++;
  if($t/3 == round($t/3)) { echo "</tr><tr>"; }

  echo "<td>$row[dir]</td>";
}

echo"</tr></table>";
?>
Avatar billede Slettet bruger
06. november 2003 - 14:54 #9
Var vist en anelse for hurtig og sjusket. Vi forsøger lige igen :)

<?

echo "<table border=\"0\"><tr>";
 
// husk at lave forbindelse til databasen

$query = mysql_query("SELECT dir FROM mappe") or die(mysql_error());
while($row = mysql_fetch_array($query) {
 

  t++;
  if($t/3 == round($t/3)) { echo "</tr><tr>"; }

  echo "<td>$row[dir]</td>";
}

echo"</tr></table>";
?>
Avatar billede blach Nybegynder
06. november 2003 - 15:03 #10
Det er rigtigt nok Cypermann, men jeg vil ikke have vist dubletter/2 ens i udtrækket - det skal kun være en af hver - også selvom at der ligger flere af samme slags i databasen...
nemmere at forstå?
Avatar billede tipsen Nybegynder
06. november 2003 - 16:16 #11
DISTINCT...
Avatar billede blach Nybegynder
06. november 2003 - 17:04 #12
Dvs. dette virker?

<?

echo "<table border=\"0\"><tr>";
 
// husk at lave forbindelse til databasen

$query = mysql_query("SELECT DISTINCT dir FROM mappe") or die(mysql_error());
while($row = mysql_fetch_array($query) {
 

  t++;
  if($t/3 == round($t/3)) { echo "</tr><tr>"; }

  echo "<td>$row[dir]</td>";
}

echo"</tr></table>";
?>
Avatar billede Slettet bruger
06. november 2003 - 17:07 #13
Det skulle det da gerne gøre :)
Avatar billede blach Nybegynder
06. november 2003 - 17:18 #14
Der er et eller andet af det som laver en "parse error"!
Avatar billede Slettet bruger
06. november 2003 - 17:24 #15
Det er fordi der mangler en ) i win while($row....
skal se sådan ud:
while($row = mysql_fetch_array($query))
Avatar billede blach Nybegynder
06. november 2003 - 17:29 #16
hmm, der er stadig parse error: parse error
Avatar billede blach Nybegynder
06. november 2003 - 17:30 #17
med denne linie:
  t++;
Avatar billede Slettet bruger
06. november 2003 - 17:31 #18
Er ked af koden var lidt sjusket.
$t++;
Avatar billede blach Nybegynder
06. november 2003 - 17:49 #19
Det ser bedre ud... men hvorfor er mangler mappe3 i første kolonne?
Avatar billede blach Nybegynder
06. november 2003 - 17:50 #20
Eller rettere sagt, der er bare et tomt felt...
Avatar billede blach Nybegynder
06. november 2003 - 17:56 #21
Og jeg har intet tomt felt i databasen, og det er også lige meget hvordan jeg udtrækker dir (ORDER BY), så er det tomme felt nr 3 i første række...
Avatar billede blach Nybegynder
06. november 2003 - 17:57 #22
koden er således nu:

echo "<table border=\"0\"><tr>";

open();
$query = mysql_query("SELECT DISTINCT dir FROM mappe ORDER BY dir") or die(mysql_error());
while($row = mysql_fetch_array($query)) {


  $t++;
  if($t/3 == round($t/3)) { echo "</tr><tr>"; }

  echo "<td><A HREF=$row[dir]>$row[dir]</A></td>";
}
close();
echo"</tr></table>";
Avatar billede blach Nybegynder
09. december 2003 - 18:09 #23
Får jeg ikke meget ud af...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester