Avatar billede mazey Praktikant
04. november 2006 - 17:33 Der er 13 kommentarer og
1 løsning

Tage tal fra database og lav udregning

Hej eksperter...

Jeg har en tabel i en database hvor der ligenu er 3 rækker i.

Jeg har derfor lavet en while løkke hvor jeg echo'er priserne ud og samtidigt ganger hvert af dem med et vilkårligt tal.

Mit spørgsmål er så hvordan jeg får lagt summen af alle disse tal sammen?
Er det arrays? -(er ikke ferm til arrays)

Håber nogen forstår hvad jeg mener, ellers så sig til.
Avatar billede udvikler Nybegynder
04. november 2006 - 17:44 #1
Hvis det er et fast antal tal og der ikke er alt for mange kan du gøre det på denne måde:

<?php
$query = mysql_query("select * from brugere WHERE brugernavn = '$username'") or die(mysql_error());
while ($row=mysql_fetch_array($query)){
$row[tal1] * 2 = $res1;
$row[tal2] * 7 = $res2;
$row[tal3] * 4 = $res3;
$row[tal4] * 6 = $res4;
$row[tal5] * 9 = $res5;
$row[tal6] * 1 = $res6;
$row[tal7] * 13 = $res7;
$row[tal8] * 20 = $res8;
$row[tal9] * 8 = $res9;
}

$res1+$res2+$res3+$res4+$res5+$res6+$res7+$res8+$res9 = $resultat;

echo $resultat;
?>


NB. jeg er ikke sikker på om man kan plusse alle variablerne på en gang som jeg har gjort. Ellers burde det virke.
Avatar billede mazey Praktikant
04. november 2006 - 17:46 #2
Tak for svaret...

Problemet er at de rækker i min tabel bliver dynamisk oprettet, så jeg skal finde en måde at udregne en totalpris uden at skulle angive variabler for hver række som jeg forstår du gør:
$row[tal1] * 2 = $res1;
$row[tal2] * 7 = $res2;
$row[tal3] * 4 = $res3;
$row[tal4] * 6 = $res4;
osv.
Avatar billede coderdk Praktikant
04. november 2006 - 17:47 #3
Summér dem i loopet?

$sum = 0;
while ( $row = mysql_fetch_assoc( $qh ) )
{
  // Her skriver du dine tal ud og ganger dem
  $sum += ( $dit_tal * $vilkårligt_tal );
}
echo "Summen er $sum";
Avatar billede mazey Praktikant
04. november 2006 - 17:52 #4
Det jeg gør nu er at lave en liste over de forskellige produkter, samt antal. Det gøres i en while løkke.
Efter while løkken er slut vil jeg gerne have returneret summen af priserne lagt sammen.


<?
  $person = $_SESSION['usernr'];
  $kurven = mysql_query("SELECT * FROM userbuy WHERE unik = '$person'");
  while($kurven2 = mysql_fetch_array($kurven)){
  $koeb = $kurven2[vnr];
 
  $prods = mysql_query("SELECT * FROM products WHERE vnr = '$koeb'");
  $prods2 = mysql_fetch_array($prods);
  ?>
 
 
  <tr bgcolor="#ffffff">
    <td align="right" style="padding-right:10px;"><?=$kurven2[antal];?></td>
    <td><?=$prods2[overskrift];?></td>
    <td><?=$prods2[pris];?></td>
    <td><? echo $sub = $prods2[pris] * $kurven2[antal] ;?></td>
    <td>&nbsp;</td>
  </tr>
 
  <?

  }
  ?>
Avatar billede mazey Praktikant
04. november 2006 - 17:54 #5
Antal og pris kommer fra hver sin tabel... hvilket (for mig) gør det svært at se løsningen på! :)
Avatar billede udvikler Nybegynder
04. november 2006 - 17:57 #6
Enten vil dette virke, eller så har jeg ramt fuldstændig ved siden af, jeg er ret træt så 'dont blame me' :-)

<?php


function createnumber($len = 1) {
  $chars = "123456789";
  mt_srand( (double) microtime() * 1000000);
  do {
      $out = "";
      for ($i=1; $i <= $len; $i++) {
          $out .= $chars[mt_rand(0, strlen($chars) - 1)];
    }
  } while (!preg_match("/\d/", $out));
  return $out;
}

$randomtal = createnumber(1);


$query = mysql_query("select * from brugere WHERE brugernavn = '$username'") or die(mysql_error());
while ($row=mysql_fetch_array($query)){
$row[tal] * $randomtal = $resultat;

echo $resultat;
}
?>
Avatar billede mazey Praktikant
04. november 2006 - 18:01 #7
Hehe... jeg blamer dig ikke, men du har ramt ved siden af ! :D

Ved ikke om du nåede at se det jeg postede for et par minutter siden
Avatar billede coderdk Praktikant
04. november 2006 - 18:03 #8
Du behøver kun én query...

<?
  $person = $_SESSION['usernr'];
  $sql = sprintf( "
        SELECT
            u.antal
            ,p.pris
            ,p.overskrift
        FROM
            userbuy AS u
        INNER JOIN
            products AS p
        ON
            u.vnr = p.vnr
        WHERE
            unik = '%s'
        "
        ,mysql_real_escape_string( $person )
        );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  $sum = 0;
  while( $row = mysql_fetch_assoc( $qh ) )
  {
  ?>
  <tr bgcolor="#ffffff">
    <td align="right" style="padding-right:10px;"><?=$row['antal'];?></td>
    <td><?=$row['overskrift'];?></td>
    <td><?=$row['pris'];?></td>
    <td><?
        $tmp = $row['pris'] * $row['antal'];
        $sum += $tmp
    echo $tmp; ?></td>
    <td>&nbsp;</td>
  </tr>

  <?

  }
  echo "Total: $sum";
  ?>
Avatar billede mazey Praktikant
04. november 2006 - 18:15 #9
Jeg kan ikke helt få det til at virke.... så nu kommer der lige et par (dumme) spørgsmål.

$sql = sprintf( "
        SELECT
            u.antal
            ,p.pris
            ,p.overskrift
        FROM
            userbuy AS u
        INNER JOIN
            products AS p
        ON
            u.vnr = p.vnr
        WHERE
            unik = '%s'
        "
        ,mysql_real_escape_string( $person )
        );

// Du kalder i queryen u.antal ... skal der stå u. før antal, eller er det bare noget du har kaldt den?
Avatar billede mazey Praktikant
04. november 2006 - 18:18 #10
...og skal nok være helt ærlig, at det er ikke ret meget jeg forstår af det du har lavet... :D (kan være et godt tegn) :D
Avatar billede mazey Praktikant
04. november 2006 - 18:27 #11
Nu virker det... der var lige et semikolon der manglede!
Kigger lige lidt på det
Avatar billede mazey Praktikant
06. november 2006 - 19:52 #12
Det virker helt perfekt... smider du et svar?
Avatar billede mazey Praktikant
15. januar 2007 - 21:43 #13
Smed du et svar ? :D
Avatar billede coderdk Praktikant
15. januar 2007 - 22:41 #14
Sorry :)
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