Avatar billede artico Novice
09. marts 2006 - 10:29 Der er 14 kommentarer og
1 løsning

Hente keys i Array

Jeg har nedenstående, meeeen der kommer intet ud af arrayet, men session viser at der er noget i arrayet, Hvad gør jeg forkert?

if(isset($_SESSION['shopcart']) ) {
  $ids = array_keys($_SESSION['shopcart']);

  $sql = "SELECT id, varenavn, vorpris FROM vare WHERE id IN (" . join(',',$ids) . ") ORDER BY varenavn";
  $res = mysql_query($sql);
  while($row = mysql_fetch_row($res)) {
 
echo "<pre>";
print_r($row);
echo "</pre>";

}
}
Avatar billede Slettet bruger
09. marts 2006 - 10:31 #1
Hvad ligger der i din sql-streng?

echo $sql;
Avatar billede barklund Nybegynder
09. marts 2006 - 10:34 #2
Og måske en var_dump($_SESSION['shopcart']) - bare fordi den er sat, så er den jo ikke nødvendigvis et array (endsige et med indhold).
Avatar billede artico Novice
09. marts 2006 - 10:38 #3
Når jeg køre en >> var_dump($_SESSION['shopcart']) får jeg :

array(1) { [""]=> int(0) }

Der er intet i $sql
Avatar billede barklund Nybegynder
09. marts 2006 - 10:43 #4
Så er det jo også et tomt array? Så kan du vel ikke forvente, at der kommer output fra din sql? :)
Avatar billede artico Novice
09. marts 2006 - 10:49 #5
Men når jeg kører en:
echo "<pre>";
print_r($_SESSION['shopcart']);
echo "</pre>";

så viser den:
Array
(
    [] => 0
    [19] => 1
)
Avatar billede barklund Nybegynder
09. marts 2006 - 10:53 #6
Og når den har det indholdet, hvad er indholdet af $sql så? (altså efter du har defineret $sql)
Avatar billede artico Novice
09. marts 2006 - 11:00 #7
så sker der noget
$sql er lige med:
SELECT id, varenavn, vorpris FROM vare WHERE id IN (,13,12,9,1) ORDER BY varenavn
Avatar billede artico Novice
09. marts 2006 - 11:09 #8
Der må gå noget galt efter $sql, for der kommer ikke noget ud som følger:

if(isset($_SESSION['shopcart']) ) {
  $ids = array_keys($_SESSION['shopcart']);

  $sql = "SELECT id, varenavn, vorpris FROM vare WHERE id IN (" . join(',',$ids) . ") ORDER BY varenavn";
  $res = mysql_query($sql);
  while($row = mysql_fetch_row($res)) {
 
print stripslashes($row['varenavn']) . ': ' . $_SESSION[$row['id']] . ' stk<br/>';
  }
}
else {
  print "Tom";
}
Avatar billede barklund Nybegynder
09. marts 2006 - 11:16 #9
Der er sgu nok en sql-fejl, for:

SELECT id, varenavn, vorpris FROM vare WHERE id IN (,13,12,9,1) ORDER BY varenavn

Er ikke gyldig sql. Du kan ikke have et tomt element forrest i dit array :)

Prøv med:

$ids = array_filter(array_keys($_SESSION['shopcart']), create_function('$a','return !empty($a);');
$sql = "SELECT id, varenavn, vorpris FROM vare WHERE id IN (" . join(',',$ids) . ") ORDER BY varenavn";
print "SQL-sætningen er: '".$sql."'<br>";
$res = mysql_query($sql) or die("Mysql-fejl: ".mysql_error());
while($row = mysql_fetch_row($res)) {
  print stripslashes($row['varenavn']) . ': ' . $_SESSION[$row['id']] . ' stk<br/>';
}

:)

--
Morten Barklund
Avatar billede artico Novice
09. marts 2006 - 11:28 #10
Hmm nu kommer der intet på hele siden ? :-)

er det noget med tuborghattene ?
Avatar billede barklund Nybegynder
09. marts 2006 - 11:33 #11
Noget output kommer der vel - der er jo nok en sql-fejl, som fanges af die - kig på kilden til din side?
Avatar billede artico Novice
09. marts 2006 - 11:44 #12
Det er kilden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>
Avatar billede barklund Nybegynder
09. marts 2006 - 11:57 #13
Det har din browser selv lavet - det kan vel ikke være det eneste output? I så fald prøv at fjerne min linje ($ids = ...) og erstatte den med din egen.
Avatar billede artico Novice
16. november 2006 - 12:58 #14
send et svar ...
Avatar billede barklund Nybegynder
17. november 2006 - 00:18 #15
Oki
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Driftsstærk IT-profil til Forsvarsministeriets Materiel- og Indkøbsstyrelse