Avatar billede artico Novice
13. maj 2003 - 02:09 Der er 4 kommentarer og
1 løsning

Henter forkert i database ?

Hvad er der forkert ? nedenstående kode laver outputtet:

7042 010; 1; 20.000; Stk.; 29.00; .. osv
men der hvor der står 1 skal der stå en produktnavn ??

Her kommer koden --»

  $item_res = db_query("select item.*,iteminfo.* from item, iteminfo where iteminfo.langID='$nlangID' and item.ID=iteminfo.itemID") or db_die();
  $cur_res = db_query("select keysign from currency where ID='$ncurID'") or db_die();
  $cur_row = db_fetch_row($cur_res);
  $comment = "## number; name; quantity; packinfo.name; price [ $cur_row[0] ]; sizes; stock; expiration; itemgrID; orderby; visible; thumbnail; detail; keywords; longdescr\n";
  $fw = fwrite($fp,$comment);
  while ($item_row = db_fetch_row($item_res)) {
    $pack_res = db_query("select name from packinfo where packID='$item_row[10]' and langID='$nlangID'") or db_die();
    $pack_row = db_fetch_row($pack_res);
    $price_res = db_query("select price.value,currency.keysign from price,currency where price.itemID='$item_row[0]' and currency.ID='$ncurID' and price.curID=currency.ID") or db_die();
    $price_row = db_fetch_row($price_res);
    $sizeinfo_res = db_query("select size.ID, sizeinfo.value from size,sizeinfo where size.itemID='$item_row[0]' and sizeinfo.langID='$nlangID' and size.ID=sizeinfo.sizeID") or db_die();
    $sizesstring ="";
    while ($sizeinfo_row = db_fetch_row($sizeinfo_res)) {
      $sizesstring = $sizeinfo_row[1].",".$sizesring;
    }
    $size_res = db_query("select stock,expiration from size where itemID='$item_row[0]'") or db_die();
    $size_row = db_fetch_row($size_res);
    $export_array = array ($item_row[1], $item_row[14], $item_row[6], $pack_row[0], $price_row[0], $sizesstring, $size_row[0], $size_row[1], $item_row[2], $item_row[8], $item_row[9], $item_row[4], $item_row[5], $item_row[3], $item_row[16]);
    $export_string = implode("; ", $export_array);
    $export_string = $export_string;
    $fw = fwrite($fp,$export_string);
    echo "<li>$item_row[14] ($item_row[1]; $price_row[0] $price_row[1])\n";

«-- kode slut

Databasen med produktnavnet ser sådan du:

CREATE TABLE iteminfo (
  ID int(8) unsigned NOT NULL auto_increment,
  itemID int(8) unsigned NOT NULL default '1',
  langID int(8) unsigned NOT NULL default '1',
  name varchar(30) NOT NULL default '',
  keywords varchar(50) default NULL,
  longdescr text,
  div0 tinyint(1) default NULL,
  PRIMARY KEY  (ID),
  KEY ID (ID)
) TYPE=MyISAM;

--- ??
Avatar billede Slettet bruger
13. maj 2003 - 02:21 #1
Skal jeg være ærlig så er det kaos at kigge i den kode!
I stedet for at bruge:
while ($item_row = db_fetch_row($item_res))
burde du bruge noget i stil med
while ($item_row = db_fetch_array($item_res))
hvor funktionen db_fetch_array() er identisk med db_fetch_row() med den ene undtagelse at db_fetch_array() bruger funktionen mysql_fetch_array() i stedet for mysql_fetch_row().
Så ville du ikke skulle bruge $item_row[1] men $item_row['name'], hvilket giver en langt mere gemmenskuelig kode...
Desuden er $item_row[1] ikke første række i tabellen iteminfo men første række i tabellen item.... nu ved jeg jo ikke hvor mange rækker der er i item for ellers kunne jeg give dig det rigtige svar! :(
Avatar billede artico Novice
13. maj 2003 - 02:36 #2
Så kom item....

CREATE TABLE item (
  ID int(8) unsigned NOT NULL auto_increment,
  number varchar(16) NOT NULL default '',
  itemgrID int(8) unsigned NOT NULL default '1',
  keywords varchar(150) default NULL,
  picname1 varchar(50) default NULL,
  picname2 varchar(50) default NULL,
  quantity decimal(10,3) unsigned NOT NULL default '1.000',
  newid varchar(32) NOT NULL default '1',
  orderby int(8) default NULL,
  visible tinyint(1) NOT NULL default '1',
  packID int(8) NOT NULL default '1',
  vatID int(8) NOT NULL default '2',
  PRIMARY KEY  (ID)
) TYPE=MyISAM;
Avatar billede Slettet bruger
13. maj 2003 - 02:39 #3
prøv med $item_row[13]
Avatar billede artico Novice
13. maj 2003 - 02:43 #4
1000 Tak... det var [15].. TAK :-))
Avatar billede Slettet bruger
13. maj 2003 - 02:46 #5
jeg smider lige et svar... hvis du er tilfreds!?
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