Avatar billede simotho Nybegynder
26. oktober 2009 - 21:27 Der er 11 kommentarer

Gang odds med hinanden og læg det ind i streng

Hejsa.
Er igang med et lille system.

Har lavet stort set det hele, mangler dog en detalje som jeg ikke helt kan løse.
Den går ud på, at hvis man oddser på 4 kampe og har alle 4 rigtige, så skal den gange de 4 kampes odds fra databasen med hinanden og lægge det ind i en streng.
Kan give et eksempel på database opbygningen:

ID = 61    odds = 2.10 coupon_id = 67
ID = 62    odds = 2.60 coupon_id = 67
ID = 63    odds = 2.00 coupon_id = 67
ID = 64    odds = 3.10 coupon_id = 67

Har prøvet med en while, men jeg får et forkert resultat. Måske har jeg lavet det forkert, i kan lige få det kode jeg har prøvet med her:

$coupon_id = $row2['coupons_id'];
$q3 = mysql_query("SELECT * FROM coupons WHERE id = '$coupon_id' ORDER BY id DESC");
while($row3 = mysql_fetch_assoc($q3))
{     
$db_profil = mysql_query("SELECT * FROM odds WHERE coupons_id = '$coupon_id'") or die(mysql_error());
$profil = mysql_fetch_array($db_profil);
$odds_odds = $profil['odds'];
$odds_new_odds = ($odds_odds * 3) * $row3['price'];
  echo $odds_new_odds."<br/>";

Håber i har en løsning på det ;)
Avatar billede simotho Nybegynder
27. oktober 2009 - 14:11 #1
Ingen der kan hjælpe mig? :)
Avatar billede simotho Nybegynder
28. oktober 2009 - 07:27 #2
Søger stadig et svar, det eneste jeg mangler og lave ved mit projekt
Avatar billede simotho Nybegynder
01. november 2009 - 00:34 #3
Jeg prøver lige og oppe den igen :)
Avatar billede bmdk Nybegynder
04. november 2009 - 02:06 #4
Hey simotho,

Har siddet og brugt lidt tid på dit problem nu her i de sene nattetimer ;)

Kom frem til en rekursiv løsning på problemet:

<?php
function multiplyOdds($value, $index)
{
   
    $array = array(2.10, 2.60, 2.00, 3.10);   
    while($index<count($array))
    {       
        if($value == 0)
        {
            $index++;
            $first = $array[$index-1];
            $next = $array[$index];
            $tempResult = $next * $first;
            $index++;
            multiplyOdds($tempResult, $index);
        } else {
           
            $f = $array[$index];
            $tempResult = $f * $value;
            $index++;
            multiplyOdds($tempResult, $index);
        }
       
    }
return $tempResult;

}
$tempResult = 0;
$i = 0;
multiplyOdds(0, $i);
?>

Beklager den dårlige formatering, det er skrevet i notepad hehe.

Håber det kan bruges, eller ihvertfald give et prej til en løsning for dig.
Avatar billede bmdk Nybegynder
04. november 2009 - 02:06 #5
Hov, testede det ikke med return til sidst, men ved echo $tempResult istedet for return, så udskriver den resultatet :)
Avatar billede simotho Nybegynder
04. november 2009 - 15:53 #6
Hej bmdk :)
Dejligt at du vil hjælpe, kunne du evt. prøve og lave, så den trække data ud i arrayet fra databasen?

Så man ikke selv skriver talene, men det istedet er noget med $row[odds] eller noget i den stil  ;)

Så kan jeg nemlig lige teste den 100%

Og hvad er value og hvad er index, altså hvilke information skal jeg sætte ind der?
Avatar billede bmdk Nybegynder
04. november 2009 - 16:21 #7
hey simotho,

Du burde blot kunne få arrayet med resultater fra sql:

$array = mysql_fetch_array($db_profi);

Fra start af kan du blot kalde din funktion med 0 eftersom både $value og $index bør være 0 fra start af.

<?php
$db_profil = mysql_query("SELECT * FROM odds WHERE coupons_id = '$coupon_id'") or die(mysql_error());
function multiplyOdds($value, $index)

    $array = mysql_fetch_array($db_profil);   
    while($index<count($array))
    {       
        if($value == 0)
        {
            $index++;
            $first = $array[$index-1];
            $next = $array[$index];
            $tempResult = $next * $first;
            $index++;
            multiplyOdds($tempResult, $index);
        } else {
           
            $f = $array[$index];
            $tempResult = $f * $value;
            $index++;
            multiplyOdds($tempResult, $index);
        }
       
    }
return $tempResult;

}
$tempResult = 0;
$i = 0;
multiplyOdds(0, $i);
?>

Prøv med det..
Avatar billede simotho Nybegynder
04. november 2009 - 17:35 #8
$tempResult = 0;
$i = 0;
multiplyOdds(0, $i);

Skal det stå i min anden fil og ikke være i selve funktions filen?
Avatar billede simotho Nybegynder
04. november 2009 - 17:38 #9
Den udskriver blot 0,3? :s
Avatar billede bmdk Nybegynder
04. november 2009 - 17:54 #10
de variabler og multiplyOdds(0, 0) kaldet skal ikke nødvendigvis være i samme fil som funktionen nej, men lige for at teste er det en god idé.

Prøv at ændre return $tempResult; til:

echo $tempResult;

og se hvad den udskriver.
Avatar billede simotho Nybegynder
04. november 2009 - 18:04 #11
Det var med echo den udskrev 0,3 :)
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