Avatar billede proff Nybegynder
19. december 2004 - 13:03 Der er 4 kommentarer og
1 løsning

Fejl i min sql-update?

<?
include "sql.php";
include "config.php";

$getvalues = mysql_query("SELECT * FROM aktier") or die(mysql_error());
while($row_values = mysql_fetch_assoc($getvalues)) {

$update = rand(-50,50);
$i = $update / 10;
$earned = $row_values[kurs] * $i / 100;

if($i > 0) {
mysql_query("UPDATE aktier SET procent='$i', kurs=kurs+$earned WHERE(id='$row_values[id]')");
} elseif($i < 0) {
mysql_query("UPDATE aktier SET procent='$i', kurs=kurs-$earned WHERE(id='$row_values[id]')");
}
}
print "1. Aktie-værdierne er blevet opdateret";
?>

Hej, jeg kan ikke selv se hvor fejlen er. Men her skal den opdatere nogle random aktie værdier. Min "Fejl" er at når den er minus skal den gå ned i værdi. Det gør den ikke, den stiger stadig i værdi
Avatar billede jakoba Nybegynder
19. december 2004 - 13:16 #1
$update = rand(-50,50);
$i = $update / 10;                      // $i kan være positiv eller negative
$earned = $row_values[kurs] * $i / 100;  // $earned har samme fortegn som $i

if($i > 0) {        //  helt fint at sige  +$earned her
    mysql_query("UPDATE aktier SET procent='$i', kurs=kurs+$earned WHERE(id='$row_values[id]')");
} elseif($i < 0) {  //FEJLEN:  men her gør du $earned positiv hvis den er negativ
    mysql_query("UPDATE aktier SET procent='$i', kurs=kurs-$earned WHERE(id='$row_values[id]')");
}

bare fjern den if sætning.  $earned skal altid lægges til:

$update = rand(-50,50);
$i = $update / 10;
$earned = $row_values[kurs] * $i / 100;

mysql_query("UPDATE aktier SET procent='$i', kurs=kurs+$earned WHERE(id='$row_values[id]')");

mvh JakobA
Avatar billede bojo Nybegynder
19. december 2004 - 13:17 #2
du skal lægge til uanset, da 1+-1 = 1-1 du laver 1--1 = 1+1
Avatar billede proff Nybegynder
19. december 2004 - 13:59 #3
Smid et svar begge to.
Kan i se fejlen i denne her? (Så skal jeg gerne forhøje points)!

if($function == "3") {
$hold = mysql_query("SELECT klub FROM users WHERE email='$_SESSION[email]'") or die(mysql_error());
$row_hold = mysql_fetch_array($hold);

$getmystocks = mysql_query("SELECT * FROM aktieinvestments WHERE klub='$row_hold[klub]' ORDER BY id DESC") or die(mysql_error());
while($row_mystocks = mysql_fetch_assoc($getmystocks)) {

$stockstjek = mysql_num_rows($getmystocks);

if($stockstjek == "0") {
print "Du har ingen aktier";
} else {
print "hej";
}
}
}

Problemet er at den ikke skriver hvis ikke man har nogle aktier, så skriver den intet
Avatar billede bojo Nybegynder
19. december 2004 - 14:14 #4
while($row_mystocks =

betyder "Så længe du har aktier" så ingen aktier, så springer vi tjekket over

og nej tak til points
Avatar billede jakoba Nybegynder
19. december 2004 - 14:19 #5
while($row_mystocks = mysql_fetch_assoc($getmystocks)) {
        // du kommer kun herind hvis der er mindst een række fundet.
    $stockstjek = mysql_num_rows($getmystocks);
    if($stockstjek == "0") {
        print "Du har ingen aktier";
    } else {
        print "hej";
    }
}

flut testen for 'ingenting fundet' udenfor din while løkke:

if($stockstjek == 0) {
        // ingenting fundet
    print "Du har ingen aktier";
} else {
        // noget fundet, så skriv hej for hver række fundet
    while($row_mystocks = mysql_fetch_assoc($getmystocks)) {
        print "hej";
    }
}

mvh JakobA
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