Avatar billede cdygaard Nybegynder
09. juni 2004 - 13:01 Der er 6 kommentarer og
1 løsning

Problem med fetch_row.

Jeg er ved at forsøge at lave en php fil som skal ind i en IFRAME. I filen laver jeg et kald til en database, hvor jeg henter alt hvad der står under Kategori_vc feltet, hvorefter jeg laver en mysql_fetch_row, og udskriver rækkerne til browseren, der hvor der forekommer en ny værdi. Der er i alt tre rækker i databasen, hvor der i de første to står 'Ordbøger', og i den sidste står der 'Anden Faglitteratur'. Problemet er så at den ikke udskriver de rigtige værdier tilsidst men laver et mellemrum istedet for at skrive 'Anden Faglitteratur'. Til at starte med udskriver den rigtig nok 'Ordbøger'. Her er min kode:

<?php
print ("<HTML><HEAD><TITLE></TITLE></HEAD><BODY>");
print ("<CENTER><TABLE CELLPADDING='0' CELLSPACING='0' BORDER='0' WIDTH='120' HEIGHT='120'></CENTER>");
print ("<TR><TD CLASS='std' WIDTH='120' HEIGHT='120'>");
//print ("some text");
  $conn = mysql_connect("localhost", "databasemaster", "lacd2004") or die ("Could not connect: ".mysql_error());
  $sql = "SELECT Kategori_VC FROM bibliotek.Bøger_T";
  $result = mysql_query($sql, $conn) or die(mysql_error());
  $row = mysql_fetch_row($result);
  $i = 0;
  $ii = 1;
  $kategorier = array();
  $iResult = mysql_num_rows($result);
  while($i < $iResult) {
    $test = $row[$i];
    if(!$kategorier) {
        $kategorier[0] = $test;
    }
    if(in_array($test, $kategorier)) {
    } else {
        $kategorier[$ii] = $test;
    print ("kategorier = " . $kategorier[$ii] . "<BR>test = " . $test . "<BR>");
    $ii++;
    }
    $i++;
    print ("i = " . $i . "<BR>");
  }
 
  $iRow = count($row);
  print ($iRow . "<BR>" . $row . "<BR>");
  $iKategorier = count($kategorier);
  print ($iKategorier . "<BR>");
  for ($i = 0; $i <= $iKategorier; ++$i) {
      print ("<A HREF='title.php?kategori=" . $kategorier[$i] . "' TARGET='title'>");
      print ($kategorier[$i]);
      print ("</A>");
      print ("<BR>");
  }

print ("</TD></TR></TABLE>");
print ("</BODY></HTML>");

mysql_close;
?>

Hvad kan der være galt?
Avatar billede erikjacobsen Ekspert
09. juni 2004 - 13:06 #1
Du siger kun mysql_fetch_row($result);  een gang - og ser derfor kun første række
Avatar billede chries Nybegynder
09. juni 2004 - 13:09 #2
du anvender mydql_fetch_row/mysql_num_rows forkert.

mysql_fetch_row henter du den første række, den skal klades igen for næste række.

while( $row = mysql_fetch_row($result) ) {
  echo $row[0]; // print første kolonne værdi i række x
}

eller

while( $row = mysql_fetch_assoc($result) ) {
  echo $row['kolonnenavn']; // print kolonne værdi i række x med navn 'kolonnenavn'
}
Avatar billede cdygaard Nybegynder
09. juni 2004 - 14:39 #3
Nu ser mit script sådan her ud:

  $conn = mysql_connect("localhost", "databasemaster", "lacd2004") or die ("Could not connect: ".mysql_error());
  $sql = "SELECT Kategori_VC FROM bibliotek.Bøger_T";
  $result = mysql_query($sql, $conn) or die(mysql_error());

  $i = 0;
  $kategorier = array();

  while($row = mysql_fetch_row($result)){
    $test = $row[$i];
    if(in_array($test, $kategorier)) {
    } else {
      print ("<A HREF='title.php?kategori=" . $test . "' TARGET='title'>");
      print ($test);
      print ("</A>");
      print ("<BR>");
    }
    $i++;
  }

men det udskriver stadigvæk det samme; 'Ordbøger' og to mellemrum.
Avatar billede chries Nybegynder
09. juni 2004 - 14:45 #4
du skal bruge 0 i row:

  $conn = mysql_connect("localhost", "databasemaster", "lacd2004") or die ("Could not connect: ".mysql_error());
  $sql = "SELECT Kategori_VC FROM bibliotek.Bøger_T";
  $result = mysql_query($sql, $conn) or die(mysql_error());

  $kategorier = array();

  while($row = mysql_fetch_row($result)){
    $test = $row[0];
    if(in_array($test, $kategorier)) {
    } else {
      print ("<A HREF='title.php?kategori=" . $test . "' TARGET='title'>");
      print ($test);
      print ("</A>");
      print ("<BR>");
    }
  }
Avatar billede cdygaard Nybegynder
09. juni 2004 - 14:48 #5
Tak for det chries, det virkede. Jeg fandt lige nogle andre fejl, nu ser det færdige script sådan her ud:

  $conn = mysql_connect("localhost", "databasemaster", "lacd2004") or die ("Could not connect: ".mysql_error());
  $sql = "SELECT Kategori_VC FROM bibliotek.Bøger_T";
  $result = mysql_query($sql, $conn) or die(mysql_error());

  $i = 0;
  $ii = 0;
  $kategorier = array();

  while($row = mysql_fetch_row($result)){
    $test = $row[0];
    if(!in_array($test, $kategorier)) {
      $kategorier[$ii] = $test;
      print ("<A HREF='title.php?kategori=" . $test . "' TARGET='title'>");
      print ($test);
      print ("</A>");
      print ("<BR>");
      $ii++;
    }
    $i++;
  }

Skriv lige et svar, så får du point.
Avatar billede cdygaard Nybegynder
15. juni 2004 - 13:11 #6
Vil du ikke have point Chries.
Avatar billede cdygaard Nybegynder
30. juni 2004 - 19:38 #7
Nå, point retur.
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
Computerworld tilbyder specialiserede kurser i database-management

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