/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
At lægge tal sammen.
Fra : Morten Brøgger


Dato : 05-08-05 19:15

Hej Ng

Jeg er ved at lave en webshop på min side, og i den forbindelse skal jeg
have det samlede beløb i indkøbskurven lagt sammen.
Jeg vil altså lægge nogle udtræk fra MySQL sammen.
Skriver man en kommando til MySQL der gør det, eller skrives kommandoen i
PHP?

Så vidt jeg kan se på php.net er der ikke nogen "sum" funktion i PHP.

Har nogle af jer et forslag til hvordan jeg griber det an?

På forhånd tak
--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk



 
 
Kim Schulz (05-08-2005)
Kommentar
Fra : Kim Schulz


Dato : 05-08-05 19:19

On Fri, 5 Aug 2005 20:14:43 +0200
"Morten Brøgger" <morten_broegger@FJERNhotmail.com> wrote:

> Hej Ng
>
> Jeg er ved at lave en webshop på min side, og i den forbindelse skal
> jeg have det samlede beløb i indkøbskurven lagt sammen.
> Jeg vil altså lægge nogle udtræk fra MySQL sammen.
> Skriver man en kommando til MySQL der gør det, eller skrives
> kommandoen i PHP?
>
> Så vidt jeg kan se på php.net er der ikke nogen "sum" funktion i PHP.
>
> Har nogle af jer et forslag til hvordan jeg griber det an?

der er SUM() i mysql

ellers findes der jo + i php
du ved $a + $b + $c

har du dine værdier i et array så har du array_sum()

Morten Brøgger (07-08-2005)
Kommentar
Fra : Morten Brøgger


Dato : 07-08-05 07:16


"Kim Schulz" <kim@schulz.dk> skrev i en meddelelse
news:20050805201905.63f36484@laptopia...
On Fri, 5 Aug 2005 20:14:43 +0200

> der er SUM() i mysql
>
> ellers findes der jo + i php
> du ved $a + $b + $c
>
> har du dine værdier i et array så har du array_sum()



Hej Kim

Tak for dit svar!
Umiddelbart kan jeg ikke få det til at virke, men jeg vil lige kigge lidt
mere på det inden jeg vender tilbage med en bedre problemstilling i løbet af
dagen.
Kan du(eller en anden) definere et "array" for mig i mellemtiden ?


--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk



Troels Hansen (07-08-2005)
Kommentar
Fra : Troels Hansen


Dato : 07-08-05 09:02

Morten Brøgger wrote:
> Hej Kim
>
> Tak for dit svar!
> Umiddelbart kan jeg ikke få det til at virke, men jeg vil lige kigge lidt
> mere på det inden jeg vender tilbage med en bedre problemstilling i løbet af
> dagen.
> Kan du(eller en anden) definere et "array" for mig i mellemtiden ?
>

$talArray = array(1,2,3); //et array
$arraySum = array_sum($talArray); // giver summen at tallene i arrayet

Morten Brøgger (07-08-2005)
Kommentar
Fra : Morten Brøgger


Dato : 07-08-05 18:40


"Kim Schulz" <kim@schulz.dk> skrev i en meddelelse
news:20050805201905.63f36484@laptopia...
On Fri, 5 Aug 2005 20:14:43 +0200


der er SUM() i mysql

ellers findes der jo + i php
du ved $a + $b + $c

har du dine værdier i et array så har du array_sum()

Hej igen

Jeg kan nu stadig ikke få det til at virke!
De tal jeg vil lægge sammen ligger i en database der hedder
"store_shoppertrack" og de tal jeg skal bruge er "item_price" under samme
session id.
Håber det giver mening

Scriptet ser sådan ud:

<?php

session_start();

//connect to database

$conn = mysql_connect("localhost", "**", "**") or die(mysql_error());

mysql_select_db("**",$conn) or die(mysql_error());

$display_block = "<h1>Din bestillingsliste</h1>";

//check for cart items based on user session id

$get_cart = "select st.id, si.item_title, si.item_price, st.sel_item_id from
store_shoppertrack as st left join store_items as si on si.id =
st.sel_item_id where session_id = '$PHPSESSID'";

$get_cart_res = mysql_query($get_cart) or die(mysql_error());

if (mysql_num_rows($get_cart_res) < 1) {

//print message

$display_block .= "<P>You have no items in your cart.

Please <a href=\"seestore.php\">continue to shop</a>!</p>";

} else {

//get info and build cart display

$display_block .= "

<table celpadding=4 cellspacing=2 border=2 width=90%>

<tr>

<th>Best. nr.</th>

<th>Overskrift</th>

<th>Pris</th>

<th>Slet</th>

</tr>";

while ($cart = mysql_fetch_array($get_cart_res)) {

$sum = $cart ['sum (item_price)];

$id = $cart['id'];

$item_id = $cart ['sel_item_id'];

$item_title = stripslashes($cart['item_title']);

$item_price = $cart['item_price'];

******$sum = $cart ['sum (item_price)'];

$display_block .= "<tr>

<td align=center>$item_id <br></td>

<td align=center>$item_title <br></td>

<td align=right>Kr. $item_price <br></td>

<td align=center><a href=\"removefromcart.php?id=$id\">Fjern</a></td>

</tr>";

}

$display_block .= "</table>";

******print $sum

}

?>

<HTML>

<HEAD>

<TITLE>www.dkfrim.dk - indhold af bestillingsliste</TITLE>

</HEAD>

<BODY>

<? print $display_block; ?>

Venligst <a href="seestore.php">Tilføj flere emner til
bestillingslisten</a>!";</p>

</BODY>

</HTML>



Du kan se siden her: www.dkfrim.dk/shop/seestore.php (og lave en
bestillingsliste) som et eksempel på de tal jeg gerne vil have lagt sammen i
bestillingslisten. Ændringerne i scriptet ovenfor, er ikke lagt op på
serveren. Jeg har merkeret de linier jeg har rettet med stjerner.

Håber nogen kan hjælpe med at få det til at virke.




--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk







Troels Hansen (07-08-2005)
Kommentar
Fra : Troels Hansen


Dato : 07-08-05 18:49

Morten Brøgger wrote:

> ******$sum = $cart ['sum (item_price)'];

Dette duer ikke. Du skal bruge sum allerede i din select.
Altså noget i retning af:
$get_cart = "select bla, bla, sum(si.item_price) AS totalpris, bla, bla from
store_shoppertrack as st left join store_items as si on si.id =
st.sel_item_id where session_id = '$PHPSESSID'";

og så i din while løkke udskrive:
while ($cart = mysql_fetch_array($get_cart_res)) {
$sum = $cart ['totalpris'];
osv;
osv;
}

Morten Brøgger (07-08-2005)
Kommentar
Fra : Morten Brøgger


Dato : 07-08-05 19:13


"Troels Hansen" <idle@invalid.email> skrev i en meddelelse
news:42f649ac$0$18649$14726298@news.sunsite.dk...
> Morten Brøgger wrote:
>
> > ******$sum = $cart ['sum (item_price)'];
>
> Dette duer ikke. Du skal bruge sum allerede i din select.
> Altså noget i retning af:
> $get_cart = "select bla, bla, sum(si.item_price) AS totalpris, bla, bla
from
> store_shoppertrack as st left join store_items as si on si.id =
> st.sel_item_id where session_id = '$PHPSESSID'";
>
> og så i din while løkke udskrive:
> while ($cart = mysql_fetch_array($get_cart_res)) {
> $sum = $cart ['totalpris'];
> osv;
> osv;
> }

Hej Troels

Mange tak for hjælpen.

Men det virker nu stadig ikke. Kommer der ikke et "AS" for meget med i
select linien?
Fejlmeldingen lyder nu: " Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
with no GROUP columns is illegal if there is no GROUP BY clause "

Scriptet ser nu sådan ud:
<?php

session_start();

//connect to database

$conn = mysql_connect("localhost", "***", "***") or die(mysql_error());

mysql_select_db("***",$conn) or die(mysql_error());

$display_block = "<h1>Din bestillingsliste</h1>";

//check for cart items based on user session id

$get_cart = "select sum(si.item_price) as totalpris, st.id, si.item_title,
si.item_price, st.sel_item_id from store_shoppertrack as st left join
store_items as si on si.id = st.sel_item_id where session_id =
'$PHPSESSID'";

$get_cart_res = mysql_query($get_cart) or die(mysql_error());

if (mysql_num_rows($get_cart_res) < 1) {

//print message

$display_block .= "<P>You have no items in your cart.

Please <a href=\"seestore.php\">continue to shop</a>!</p>";

} else {

//get info and build cart display

$display_block .= "

<table celpadding=4 cellspacing=2 border=2 width=90%>

<tr>

<th>Best. nr.</th>

<th>Overskrift</th>

<th>Pris</th>

<th>Slet</th>

</tr>";

while ($cart = mysql_fetch_array($get_cart_res)) {

$sum = $cart ['totalpris'];

$id = $cart['id'];

$item_id = $cart ['sel_item_id'];

$item_title = stripslashes($cart['item_title']);

$item_price = $cart['item_price'];

$display_block .= "<tr>

<td align=center>$item_id <br></td>

<td align=center>$item_title <br></td>

<td align=right>Kr. $item_price <br></td>

<td align=center><a href=\"removefromcart.php?id=$id\">Fjern</a></td>

</tr>";

}

$display_block .= "</table>";

print $sum;

}

?>

<HTML>

<HEAD>

<TITLE>www.dkfrim.dk - indhold af bestillingsliste</TITLE>

</HEAD>

<BODY>

<? print $display_block; ?>

Venligst <a href="seestore.php">Tilføj flere emner til
bestillingslisten</a>!";</p>

</BODY>

</HTML>



Vil du kigge på det en gang til?

På forhånd tak


--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk



Troels Hansen (07-08-2005)
Kommentar
Fra : Troels Hansen


Dato : 07-08-05 19:36

Morten Brøgger wrote:

> Men det virker nu stadig ikke. Kommer der ikke et "AS" for meget med i
> select linien?
> Fejlmeldingen lyder nu: " Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
> with no GROUP columns is illegal if there is no GROUP BY clause "

Nej, det extra AS er godt nok.
Det gør bare at den sammentælling du laver får et navn.


> $get_cart = "select sum(si.item_price) as totalpris, st.id, si.item_title,
> si.item_price, st.sel_item_id from store_shoppertrack as st left join
> store_items as si on si.id = st.sel_item_id where session_id =
> '$PHPSESSID'";

Det er mig der ikke tænker mig om.
Forudsat at du skal tælle prisen sammen på varer der har samme id, altså
at der er to 'linier' i tabellen, hvis du har to at samme vare i
kurven, skal du tilføje en
GROUP BY si.id
så din select kommer til at se således ud:

$get_cart = "select sum(si.item_price) as totalpris, st.id, si.item_title,
si.item_price, st.sel_item_id from store_shoppertrack as st left join
store_items as si on si.id = st.sel_item_id where session_id = '$PHPSESSID'
GROUP BY si.id"

skulle jeg mene.

Morten Brøgger (07-08-2005)
Kommentar
Fra : Morten Brøgger


Dato : 07-08-05 20:18


"Troels Hansen" <idle@invalid.email> skrev i en meddelelse
news:42f65495$0$18649$14726298@news.sunsite.dk...
> Morten Brøgger wrote:
>
> > Men det virker nu stadig ikke. Kommer der ikke et "AS" for meget med i
> > select linien?
> > Fejlmeldingen lyder nu: " Mixing of GROUP columns
(MIN(),MAX(),COUNT()...)
> > with no GROUP columns is illegal if there is no GROUP BY clause "
>
> Nej, det extra AS er godt nok.
> Det gør bare at den sammentælling du laver får et navn.
>
>
> > $get_cart = "select sum(si.item_price) as totalpris, st.id,
si.item_title,
> > si.item_price, st.sel_item_id from store_shoppertrack as st left join
> > store_items as si on si.id = st.sel_item_id where session_id =
> > '$PHPSESSID'";
>
> Det er mig der ikke tænker mig om.
> Forudsat at du skal tælle prisen sammen på varer der har samme id, altså
> at der er to 'linier' i tabellen, hvis du har to at samme vare i
> kurven, skal du tilføje en
> GROUP BY si.id
> så din select kommer til at se således ud:
>
> $get_cart = "select sum(si.item_price) as totalpris, st.id, si.item_title,
> si.item_price, st.sel_item_id from store_shoppertrack as st left join
> store_items as si on si.id = st.sel_item_id where session_id =
'$PHPSESSID'
> GROUP BY si.id"
>
> skulle jeg mene.

Hej Igen

Desværre virker det heller ikke... men det føles som om det er tæt på
Linien ser sådan ud:
$get_cart = "select sum (si.item_price) as totalpris, st.id, si.item_title,
si.item_price, st.sel_item_id from store_shoppertrack as st left join
store_items as si on si.id = st.sel_item_id where session_id ='$PHPSESSID'
group by si.id";

og fejlmeldingen ser sådan ud: " You have an error in your SQL syntax. Check
the manual that corresponds to your MySQL server version for the right
syntax to use near '(si.item_price) as totalpris, st.id, si.item_title,
si.item_pri "

Har du et bud på fejlen? skal der være parantes omkring det der skal adderes
?


--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk



Esben von Buchwald (08-08-2005)
Kommentar
Fra : Esben von Buchwald


Dato : 08-08-05 02:08

Morten Brøgger wrote:
> Hej Ng
>
> Jeg er ved at lave en webshop på min side, og i den forbindelse skal jeg
> have det samlede beløb i indkøbskurven lagt sammen.
> Jeg vil altså lægge nogle udtræk fra MySQL sammen.
> Skriver man en kommando til MySQL der gør det, eller skrives kommandoen i
> PHP?
>
> Så vidt jeg kan se på php.net er der ikke nogen "sum" funktion i PHP.
>
> Har nogle af jer et forslag til hvordan jeg griber det an?
>
> På forhånd tak

jeg ville gøre det noget i stil med

SELECT sum(amount*price) as totalprice FROM sale WHERE customer_id=43

Så vil den tage den samlede pris*antal for alle varer, som kunde 43 har
lagt i kurven

håber det er noget du kan bruge...

Morten Brøgger (08-08-2005)
Kommentar
Fra : Morten Brøgger


Dato : 08-08-05 20:25

Hej Esben
"Esben von Buchwald" <use-net@rem_oVe-amokk.dk> skrev i en meddelelse
news:_MWdnTh1JPvALWvfRVnygw@giganews.com...
> jeg ville gøre det noget i stil med
>
> SELECT sum(amount*price) as totalprice FROM sale WHERE customer_id=43
>
> Så vil den tage den samlede pris*antal for alle varer, som kunde 43 har
> lagt i kurven
>
> håber det er noget du kan bruge...

Hej Esben

Mange tak for dit svar. Jeg synes umiddelbart det lyder godt.
Jeg kigger lige lidt på det i morgen.

--
Med venlig hilsen

Morten Brøgger
www.dkfrim.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408928
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste