MySQL/php math variabelen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hoi,
Ik heb eigenlijke en hele makkelijke vraag .. maar ik hoop dat jullie me toch een duidelijk antwoord willen geven.
Ik heb in een tabel de gewichten van bepaalde producten staan $row["itemWeight"], en nou wil ik in een checkout filetje (check.php) de eventuele verzendkosten per product weergeven, bijvoorbeeld $itemshipCost .

mijn vraag nu, als de value van een itemweigt bijvoorbeeld tussen de 0-5 kg ligt hoe kan ik dan de variabele $itemshipCost 7 geven? (en ook als er meerdere gebieden zijn, 0-5 , 5-10 , 10-15)

grtz,

Frank

Acties:
  • 0 Henk 'm!

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-09 17:06
PHP:
1
if(0 <= $row["itemWeight"] <= 5) { /* do stuff */ }


Enzovoorts. Er zijn methodes die het geheel wat minder typwerk en wat meer onderhoudbaarheid kunnen toekennen. Zoals loopjes.

Skat! Skat! Skat!


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
coubertin119 schreef op 24 mei 2004 @ 17:28:
PHP:
1
if(0 <= $row["itemWeight"] <= 5) { /* do stuff */ }


Enzovoorts. Er zijn methodes die het geheel wat minder typwerk en wat meer onderhoudbaarheid kunnen toekennen. Zoals loopjes.
Werkt dat? Doet ie dan niet iets als dit:
PHP:
1
if((0 <= $row["itemWeight"]) <= 5) { /* do stuff */ }

oftewel als $row["itemWeight"] = 3:
PHP:
1
if(true <= 5) { /* do stuff */ }

:?

iig: wat je kunt doen is dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
if ( $row["itemWeight"] <= 5 )
{
  $itemshipCost = 7;
}
elseif ( $row["itemWeight"] <= 10 )
{
  $itemshipCost = 11;
}
elseif ( $row["itemWeight"] <= 15 )
{
  $itemshipCost = 12;
}

oid. Denk ook een beetje als wat coubertin119 bedoelde.

edit:

Nog eentje:
PHP:
1
2
3
4
5
6
7
$costs = array ( 7, 11, 12 );
$index = floor($row["itemWeight"] / 5) - 1;
if ( $index < 0 || $index > count($costs) )
{
  // error
}
$itemshipCost = $costs[$index];

Voor als je graag weinig regels wilt innemen, en je snel wilt kunnen uitbereiden oid.

[ Voor 36% gewijzigd door Michali op 24-05-2004 17:51 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-09 12:01
Lijkt me beter in P&W passen... w&g >> p&w dus

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
alvast heel erg bedankt jongens, maar ik krijg nu voor het gewicht 0 uit .. en volgens mij moet ik het ook nog ergens op het eind vermenigvuldingen met de hoeveelheid producten $row["qty"]

dus dan zoiets als :

$totalshipcost += ($row["qty"] * $itemshipCost);

of ga ik hier de mist in?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

coubertin119 schreef op 24 mei 2004 @ 17:28:
PHP:
1
if(0 <= $row["itemWeight"] <= 5) { /* do stuff */ }


Enzovoorts. Er zijn methodes die het geheel wat minder typwerk en wat meer onderhoudbaarheid kunnen toekennen. Zoals loopjes.
Bliep, dat gaat natuurlijk niet werken, zoals Michali al aangaf. Het wordt geparsed als
((0 <= $row[...]) <= 5)
en het resultaat van (0 <= $row[...]) is een boolean, met als gevolg dat je true danwel false tegen 5 gaat vergelijken. De hele expressie zal dus altijd false opleveren

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
$costs = array ( 7, 11, 12 );
$index = floor($row["itemWeight"] / 5) - 1;
if ( $index < 0 || $index > count($costs) )
{
  // error
}
$itemshipCost = $costs[$index];

Voor als je graag weinig regels wilt innemen, en je snel wilt kunnen uitbereiden oid.
Hey dit werkt goed, maar als het gewicht <5 is zie ik niks staan, en waar kan ik hm het beste vermenigvuldingen met de $row["qty"]; ?

PHP:
1
2
3
4
5
6
7
$costs = array ( 7, 11, 12 );
$index = floor($row["itemWeight"] / 5) - 1;
if ( $index < 0 || $index > count($costs) )
{
  // error
}
$itemshipCost = $costs[$index] * $row["itemPrice"];


werkt niet zoals ik bedoel helaas..

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Verwijderd schreef op 24 mei 2004 @ 18:33:
[...]


Hey dit werkt goed, maar als het gewicht <5 is zie ik niks staan, en waar kan ik hm het beste vermenigvuldingen met de $row["qty"]; ?

[...]

werkt niet zoals ik bedoel helaas..
Em. Ja, even iets te snel gemaakt. Als cost < 5 dan wordt de index -1. Betekent trouwens ook dat je je error_reporting niet juist hebt ingesteld op je test server. Zo zie je natuurlijk niet wat je fout doet. Even verbeterd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$costs = array ( 7, 11, 12 );
$index = floor($row["itemWeight"] / 5);
if ( $row["itemWeight"] >= 5 )
{
  $index--;
}
if ( isset($costs[$index]) )
{
  $itemshipCost = $costs[$index];
}
else
{
  // error
}

Verder zou ik graag willen weten wat je nou met die waardes wilt doen. Je verteld dat je $row["itemPrice"] ergens mee wilt vermenigvuldigen, met de uitkomst van de vorige oplossing blijkbaar, maar ik moet maar gokken wat je nu precies wilt. Mischien is een wat duidelijkere uitleg nog beter dan een paar variabel namen.

[ Voor 12% gewijzigd door Michali op 25-05-2004 19:21 ]

Noushka's Magnificent Dream | Unity

Pagina: 1