Avatar billede artico Novice
16. marts 2006 - 19:46 Der er 24 kommentarer og
1 løsning

Vis array udenfor tuborghattene?

Hvorfor kan jeg ikke vise/udskrive alle værdier udenfor arrayet ?????


$key_array = array_keys($_SESSION["shopcart"]);
$hent_vorpris = "SELECT id, vorpris FROM vare WHERE id IN (" . join(',',$key_array) . ") ORDER BY id";

$res = mysql_query($hent_vorpris);
  while($row = mysql_fetch_row($res)) {

$vorpriser[$row['id']] = $row['1'];


echo "<pre>"; // Virker fint her indenfor tuborghannene
print_r($vorpriser);
echo "</pre>";
}
echo "vis vorpriser....<br>"; // Her vises kun en værdi nemlig den sidste i arrayet ??
echo "<pre>";
print_r($vorpriser);
echo "</pre>";
Avatar billede jakobdo Ekspert
16. marts 2006 - 20:20 #1
Uden for dine tuborgklammer, lav da i toppen: $vorpriser = array();
Avatar billede artico Novice
16. marts 2006 - 20:54 #2
øhh..

print_r ser således ud indenfor:

Array
(
    [] => 200.25
)

Array
(
    [] => 10.50
)

Array
(
    [] => 123.00
)

Array
(
    [] => 10.00
)

Array
(
    [] => 100.00
)

Array
(
    [] => 86.25
)

Array
(
    [] => 100.00
)

men stadig kun 1 værdi udenfor:

Array
(
    [] => 100.00
)

Koden ser nu sådan ud:
$key_array = array_keys($_SESSION["shopcart"]);
$hent_vorpris = "SELECT id, vorpris FROM vare WHERE id IN (" . join(',',$key_array) . ") ORDER BY id";

$res = mysql_query($hent_vorpris);
  while($row = mysql_fetch_row($res)) {

$vorpriser = array();
$vorpriser[$row['id']] = $row['1'];


echo "<pre>"; // Virker fint her indenfor tuborghannene
print_r($vorpriser);
echo "</pre>";
}
echo "vis vorpriser....<br>"; // Her vises kun en værdi nemlig den sidste i arrayet ??
echo "<pre>";
print_r($vorpriser);
echo "</pre>";
Avatar billede jakobdo Ekspert
16. marts 2006 - 20:59 #3
Der er noget helt galt i din kode.
Men prøv lige at ryk: $vorpriser = array(); ovenover while, altså ovenover { og }

Sikker på din $row['id'] indeholder noget?

For den ser tom ud i dit output.
Avatar billede artico Novice
16. marts 2006 - 21:02 #4
Så kom outputtet inden for {} til at se sådan ud:
Array
(
    [] =>
)

Array
(
    [] =>
)

Array
(
    [] =>
)

Array
(
    [] =>
)

Array
(
    [] =>
)

Array
(
    [] =>
)

Array
(
    [] =>
)


:-(
Avatar billede plx Nybegynder
16. marts 2006 - 21:04 #5
Det ligner en fejl, at du benytter mysql_fetch_row

hvis du vil trække data ud ved at benytte både index og navn, skal du benytte mysql_fetch_array
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:09 #6
plx har ret, test denne kode:


$key_array = array_keys($_SESSION["shopcart"]);
$hent_vorpris = "SELECT id, vorpris FROM vare WHERE id IN (" . join(',',$key_array) . ") ORDER BY id";
$vorpriser = array();
$res = mysql_query($hent_vorpris);
while($row = mysql_fetch_assoc($res))
{
    $vorpriser[$row['id']] = $row['vorpris'];
}
echo "vis vorpriser....<br>"; // Her vises kun en værdi nemlig den sidste i arrayet ??
echo "<pre>";
print_r($vorpriser);
echo "</pre>";
Avatar billede artico Novice
16. marts 2006 - 21:11 #7
Ok : plx nu er det udskiftet og output ser fint ud:
200.25
10.50
123.00
10.00
100.00
86.25
100.00
vis vorpriser uden for tuborghattene....

Array
(
    [23] => 100.00
)




nyeste:
$key_array = array_keys($_SESSION["shopcart"]);
$hent_vorpris = "SELECT id, vorpris FROM vare WHERE id IN (" . join(',',$key_array) . ") ORDER BY id";
$res = mysql_query($hent_vorpris);
while($row = mysql_fetch_array($res)) {

$vorpriser = array();
$vorpriser[$row['id']] = $row['vorpris'];

echo "<pre>";
print_r($row[vorpris]);
echo "</pre>";
}
echo "vis vorpriser....<br>"; // Her vises kun en værdi nemlig den sidste i arrayet ??
echo "<pre>";
print_r($vorpriser);
echo "</pre>";
Avatar billede artico Novice
16. marts 2006 - 21:12 #8
Jeps!!!  jakobdo: din kode virker FINT!!
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:21 #9
Et svar, og husk at del med PLX.
Avatar billede artico Novice
16. marts 2006 - 21:26 #10
Øhh lige et lille tillægs spm...

Jeg ville gerne putte værdierne i en DB og forsøger med
'".$vorpriser[$row['id']]."' // Men der kommer intet ind
Hvis jeg forsøger med $vorpriser står der Array i DBén ?
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:27 #11
Hvordan skal de gemmes i DB'en?
Avatar billede artico Novice
16. marts 2006 - 21:29 #12
$values="";
foreach($_SESSION["shopcart"] as $key => $value)
{
$values.="( '".$_POST['id']."',
            '".$sidsteId."',
            '".$ordre_nr."',
            '".$_SESSION['kundeId']."',
            '".$key."',
            '".$value."',
            '".$vorpriser[$row['id']]."',
            NOW()),";
}
Lige før NOW() ... vil jeg gerne have $vorpriser ind....
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:36 #13
Men $vorpriser er jo også et array.
Vil du gemme hele arrayet?
Avatar billede artico Novice
16. marts 2006 - 21:40 #14
Nej det er fordi salgsprisen mangler i $_SESSION["shopcart"] og den skal nu tilføres i en database der hedder ordre_linier ...
Avatar billede artico Novice
16. marts 2006 - 21:41 #15
sammen med ordre_nr og øvrige ordre data...
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:43 #16
Det giver ikke mening i mit hoved.
Du har et array du vil gemme i en DB?
$vorpriser er jo et array vi lige har lavet.
Avatar billede artico Novice
16. marts 2006 - 21:49 #17
når man "shopper" bliver "varekurven" som er $_SESSION["shopcart"] fyldt med vareID,vareAntal når man så vælger at gøre sin ordre færdig hentes varens "dags-aktuelle-pris" ind og når kunden acceptere bliver alle data lagt i en database med ordrelinierne til denne ordre, og det er denne sidste del med at få $vorpriser ind i databasen som her:

$values="";
foreach($_SESSION["shopcart"] as $key => $value)
{
$values.="( '".$_POST['id']."',
            '".$sidsteId."',
            '".$ordre_nr."',
            '".$_SESSION['kundeId']."',
            '".$key."',
            '".$value."',
            '".$vorpriser[$row['id']]."',
            NOW()),";
}

$values=substr($values,0,-1); // to remove last comma
$query="insert into kunde_ordre_linier (id,
                                        ordre_id,
                                        ordre_nr,
                                        kunde_id,
                                        vare_id,
                                        vare_antal,
                                        salgspris,
                                        ordre_dato

                                  )  values $values";
$result=mysql_query($query);


Det virker fint.. Bortset fra salgsprisen :-)
Avatar billede jakobdo Ekspert
16. marts 2006 - 21:51 #18
Hvorfor ikke trække prisen med ud når produktet bliver købt, tilføjet indkøbskurven?
Der har du alligevel fat i kurven. Prisen ændres vel ikke minut for minut.
Avatar billede artico Novice
16. marts 2006 - 21:55 #19
Næ det er rigtigt... men det kunne jeg ikke finde ud af :-) uden at det skulle gennem adreselinien som GET og så kunne der jo "tuskes" med priserne..

Handels linket der tilfører vare ser således ud:
<a href='$_PHP_SELF?vid=$row[id]&stk=1&nx=shop/plus'>

men jeg er åben for et forslag :-)
Avatar billede jakobdo Ekspert
16. marts 2006 - 22:16 #20
Jeg bruger gerne funktionen: action.php?action=buy&id=1
På siden action.php fanger jeg så buy og id 1
Trækker pris, navn, og evt andre ting ud af db.
opretter en session
$_SESSION['varer'][$id] = array("navn" => "Hvid Tiger", "pris" => "1000,95", "farve" => "Hvid");
Avatar billede artico Novice
16. marts 2006 - 22:23 #21
OK.. jeg bruger : plus.php men det var her filmen knækkede.. hvor placerer jeg DB udtrækket ?

$vid = $_GET['vid'];
$stk = $_GET['stk'];

if(!isset($_SESSION['shopcart']) || !isset($_SESSION['shopcart'][$vid])) {
  $_SESSION['shopcart'][$vid] = 0;
}
$_SESSION['shopcart'][$vid] += $stk;
Avatar billede artico Novice
16. marts 2006 - 22:42 #22
Ser dette ikke rigtigt ud ? ... det putter i sessionet...
$vid = $_GET['vid'];
$stk = $_GET['stk'];

if(!isset($_SESSION['shopcart']) || !isset($_SESSION['shopcart'][$vid])) {
  $_SESSION['shopcart'][$vid] = 0;
}

  $_SESSION['shopcart'][$vid] += $stk;

$result = mysql_query("SELECT id, varenavn, vorpris FROM vare WHERE id ='".$_GET['vid']."'                        ");

if (mysql_num_rows($result) > 0) {
    while($row = mysql_fetch_assoc($result)) {
 
$_SESSION['shopcart'][$vid] = $row['vorpris'];


}
}
Avatar billede jakobdo Ekspert
17. marts 2006 - 09:08 #23
Du mangler nogle info.
Tag evt også varenavn med og smid i session.
Prøv at lav et simpelt eksempel først, hvor du laver et array du smider i session.
Når det så virker, udvid så med databasen.
Hvis du blander for mange ting sammen samtidig, så tror jeg du bliver mere forvirret.
Avatar billede artico Novice
17. marts 2006 - 12:02 #24
ok, tak... jeg lukker her og venter på plx sender et svar :-)
Avatar billede jakobdo Ekspert
16. maj 2006 - 07:44 #25
Jeg takker for point.
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