Avatar billede shjorth Nybegynder
02. december 2004 - 21:09 Der er 32 kommentarer og
2 løsninger

Finde prisen ialt (php)

Hejsa..

Jeg har en tabel (Lager) hvori der er en masse varer. Så har jeg også en tabel der hedder (Kurv), hvor der står nogle varenumre. Ud fra varenumrene i kurven finder jeg pris osv i (Lager) tabellen, men hvis jeg nu f.eks har fundet 3 priser fra lager (i en while) Hvordan får jeg lagt den pris sammen ? Til I alt.. ?

Mange tak
Avatar billede hmortensen Nybegynder
02. december 2004 - 21:11 #1
Du kan tælle direkte i SQL:
SELECT SUM(felt) AS ialt FROM tabel

Og i PHP:
while (...)
  $ialt += $sql_var;
Avatar billede jensgram Nybegynder
02. december 2004 - 21:12 #2
Du kunne jo lægge hver pris til en $total-variabel, der tælles op i hvert gennemløb i løkken
Avatar billede jensgram Nybegynder
02. december 2004 - 21:12 #3
damn
Avatar billede shjorth Nybegynder
02. december 2004 - 21:17 #4
Jeg har forsøgt mig med flg:

$query_ialt = mysql_query("SELECT SUM(pris) AS ialt FROM lager WHERE varenr = '$row_kurv[varenr]'")or die(mysql_error());
while(mysql_fetch_array($query_ialt)) {
    $ialt +=$query_ialt;
    print $ialt;
}

Men den retunerer "13". Og der ligger 3 priser i tabellen som er:
250
7895
135

Hvor går det galt ?
Avatar billede hmortensen Nybegynder
02. december 2004 - 21:22 #5
Du skal kun gøre en af tingene.

$ialt = mysql_result(mysql_query("SELECT SUM(pris) AS ialt FROM lager WHERE varenr = '".$row_kurv['varenr']."'"), 0);

echo $ialt;
Avatar billede jensgram Nybegynder
02. december 2004 - 21:22 #6
$query_ialt = mysql_query("SELECT SUM(pris) AS ialt FROM lager WHERE varenr = '$row_kurv[varenr]'")or die(mysql_error());
while(mysql_fetch_array($query_ialt)) {
    $ialt +=$query_ialt['ialt'];
    print $ialt;
}
Avatar billede jensgram Nybegynder
02. december 2004 - 21:23 #7
hov, det var da en fed løgn jeg fik postet dér :(
Avatar billede schaefner Juniormester
02. december 2004 - 21:26 #8
<?php
$result = mysql_query("SELECT SUM(pris) FROM lager") or die(mysql_error());

print mysql_result($result, 0);
?>

Umiddelbart
Avatar billede shjorth Nybegynder
02. december 2004 - 21:26 #9
Hvis jeg bruger:
$ialt = mysql_result(mysql_query("SELECT SUM(pris) AS ialt FROM lager WHERE varenr = '".$row_kurv['varenr']."'"), 0);

Så retunerer den ingen ting :(
Avatar billede schaefner Juniormester
02. december 2004 - 21:28 #10
<?php
$result = mysql_query("SELECT SUM(pris) FROM lager WHERE varenr = '".$row_kurv['varenr']."'") or die(mysql_error());

print mysql_result($result, 0);
?>
Avatar billede shjorth Nybegynder
02. december 2004 - 21:30 #11
Er der noget jeg misforstår.. Skal den placeres i en løkke, eller et hvilket som helst sted ?? Jeg får ingen udskrift :S
Avatar billede schaefner Juniormester
02. december 2004 - 21:32 #12
Eller også er os der misforstår, men det er svært når man ikke kender din opbygning af koden og databasen :)
Avatar billede hmortensen Nybegynder
02. december 2004 - 21:32 #13
Du husker at udskrive $ialt ?

Er varenr i tabellen int ?
Hvis ja, skal der ikke '' om:
$ialt = mysql_result(mysql_query("SELECT SUM(pris) FROM lager WHERE varenr = ".$row_kurv['varenr']), 0);
Avatar billede hmortensen Nybegynder
02. december 2004 - 21:33 #14
indeholder $row_kurv['varenr'] noget ?

echo $row_kurv['varenr'];
Avatar billede schaefner Juniormester
02. december 2004 - 21:33 #15
Er varenr ikke unikt for en enkelt post? Og hvad indeholder $row_kurv['varenr'] ?
Avatar billede shjorth Nybegynder
02. december 2004 - 21:34 #16
Ja, det klart.
Det ser således ud:

$query_kurv = mysql_query("SELECT * FROM kurv WHERE brugerid = '$cookie'")or die(mysql_error());

while($row_kurv = mysql_fetch_array($query_kurv)) {

$query_kalma = mysql_query("SELECT * FROM lager WHERE varenr = '$row_kurv[varenr]' ORDER BY varenr")or die(mysql_error());
$row_lager = mysql_fetch_array($query_kalma);

$kortnavn = substr($row_lager[navn], 0, 14);

print("<font face=verdana size=2 color=red><a href='show.php?varenr=".$row_lager[varenr]."'>".$kortnavn."...</a></font><br>");
}

Lige nu er der 3 varer i kurven, men det kunne lige såvel være 10 eller 100.. Jeg skal have lagt prisen på de varer der er i kurven sammen, og sån have en:
Ialt: X,-
Avatar billede shjorth Nybegynder
02. december 2004 - 21:36 #17
Ja, den indeholder varenumrene..
Avatar billede schaefner Juniormester
02. december 2004 - 22:05 #18
<?php
$query_kurv = mysql_query("SELECT * FROM kurv WHERE brugerid = '$cookie'")or die(mysql_error());

$total = 0;
while ($row_kurv = mysql_fetch_array($query_kurv)) {
    $query_kalma = mysql_query("SELECT * FROM lager WHERE varenr = ".$row_kurv['varenr']."")or die(mysql_error());
    $row_lager = mysql_fetch_array($query_kalma);

    $kortnavn = substr($row_lager['navn'], 0, 14);
    $total += $row_lager['pris'];

    print "<font face=verdana size=2 color=red><a href='show.php?varenr=".$row_lager[varenr]."'>".$kortnavn."...</a></font><br>";
}

print $total;
?>

Men det kan måske nok laves smartere
Avatar billede schaefner Juniormester
02. december 2004 - 22:08 #19
Jeg ville nu gemme de indkøb brugeren foretager i en session.
Avatar billede shjorth Nybegynder
02. december 2004 - 22:09 #20
Købene gemmes i databasen, deres "login" gemmes i en cookie
Avatar billede schaefner Juniormester
02. december 2004 - 22:12 #21
ja, men jeg ville så gemme købene i en session.
Avatar billede shjorth Nybegynder
02. december 2004 - 22:12 #22
Det fungerede. Jeg siger mange tak for hjælpen.
Avatar billede shjorth Nybegynder
02. december 2004 - 22:12 #23
Ahh.. Hvorfor ?
Avatar billede hmortensen Nybegynder
02. december 2004 - 22:14 #24
Ening med shaefner. Ingen grund til at gemme et køb i en database, for at hive det ud igen igen.

Det er lidt overkill at putte midlertidig data i en database.
Avatar billede schaefner Juniormester
02. december 2004 - 22:15 #25
ja, så skal du også huske at tømme den hvis folk f.eks. forlader siden midt i det hele.
Avatar billede shjorth Nybegynder
02. december 2004 - 22:20 #26
Ideen var at alt hvad der er i indkøbskurven bliver der indtil kunden enten sletter det eller køber det. Altså hvis han forlader siden så er det der næste gang. Tilknyttet hans bruger.. Men det er måske ikke den rigtige måde ?
Avatar billede hmortensen Nybegynder
02. december 2004 - 22:21 #27
Hvis du vil have den virkemåde, så er det helt korrekt.
Avatar billede schaefner Juniormester
02. december 2004 - 22:22 #28
Jo, det er nok den smarteste måde hvis du vil gemme indkøbene.

Du får også lige et svar hvis du vil give point.

Med venlig hilsen
Jesper Sørensen
Avatar billede shjorth Nybegynder
02. december 2004 - 22:24 #29
Okay, det var godt. Jeg siger tusinde tak for hjælpen... Hvis alle dem der vil have point smider et svar så skal jeg fordele dem :P
Avatar billede hmortensen Nybegynder
02. december 2004 - 22:29 #30
Jeg kan da også godt smide et svar, hvis du kunne bruge det til noget.

Hint:
Husk "" eller '' om index i array, når det ikke er en variabel eller et tal.
$row_kurv['varenr'].

Adskel strenge og variabler.
$samlet_streng = "Hej ".$navn;

print og echo skal ikke omkranses af ().
Avatar billede hmortensen Nybegynder
02. december 2004 - 22:29 #31
Som sagt. et svar :)
Avatar billede shjorth Nybegynder
02. december 2004 - 22:36 #32
Nu er min kode "teknik" en gammel vane, det er længe siden jeg har haft fat i det, så der skal nok lige kodes en del nyt ind :P
Men hvorfor print " istedet for print("... ???
Avatar billede hmortensen Nybegynder
02. december 2004 - 22:39 #33
Fra manualen:
print() er faktisk ikke en rigtig funktion (det er en sprogkonstruktion) så det er ikke påkræver at bruge parenteser i dens parameterliste.

http://dk.php.net/print
Avatar billede olebole Juniormester
03. december 2004 - 03:27 #34
<ole>

Til gengæld ligner print mere en funktion end echo, derved at den har en retur-værdi  :)

/mvh
</bole>
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