Gå til innhold

Varelager funksjon. Hente ut antall varer på lager fra database. (PHP, MySQL)


Anbefalte innlegg

Skrevet

Lenge sida jeg har drivi her gitt.. :)

 

Uansett, koden over antall varer på lager fungerer ikke. Ihvertfall ikke med flere enn en koder etterhverandre. Går fint å ha en, men når jeg legger til enda en, med 100% riktige databasedetaljer får jeg den erroren.

 

Fikk det heller ikke 100% til med det siste eksempelet du gav. Skal prøve igjen, og se om jeg får til noe.

 

 

Jeg er også ute etter en funksjon hvor jeg kan finne ut hvor mye penger vi skal ha tjent på putene. Den må da summere alle putene vi har solgt, og gange dette med prisen på produktet, eller noe.. :)

 

Samt en funksjon som summerer alle putene vi har solgt. (Dette kan jeg muligens klare på egenhånd nå, om jeg bruker noe av du har gitt meg her)

 

 

Takk for at dere hjelper til, og ekstra stor takk til deg Grimjoey! ;)

Videoannonse
Annonse
Skrevet

Prøvde en feilsøking, og sjekker hva den sender som query. Det er:

SELECT SUM(antall_rosa) FROM kunder;SELECT rosa_inn FROM lager;SELECT SUM(antall_blaa) FROM kunder;

 

 

Dette er altså den løkken Grimjoey lagde i forrige post. Ser ikke dette riktig ut?

 

 

Får "Feil med database."

Skrevet

$res = mysql_query( $sql ) or die( 'Feil med database.' );

 

til:

 

$res = mysql_query( $sql ) or die( mysql_error() );

 

og post feilmeldingen

Skrevet

Der fikk jeg det til! Var navnene i tabellene mine som ikke stemte helt. Gjorde seg når jeg fikk vite hva som var galt! :) Takk, det fungerer nå ypperlig!

 

 

Har du forresten noe forslag på det med å regne ut prisen?

Skrevet

Er det ikke mulig å ta summen av alle putene, og gange dette med produktprisen? Enten bare ha ett statisk tall (179,- ) eller hente det fra en tabell?

 

Hadde vært litt kjekt å vite hvor mye vi egentlig skulle ha fått tilsammen. :)

 

Takk for all hjelp du har gitt! :)

Skrevet (endret)

Ut i fra koden jeg skrev kan du gjøre noe slikt

 

<?php

$pris = 179;

function my_query_single_field( $sql ) {
 $res = mysql_query( $sql ) or die( 'Feil med database.' ); // kommer denne erroren er det feil i querien.
 $row = mysql_fetch_row( $res );
 return $row[0];
}

// her kan du enkelt legge inn andre farger
foreach ( array( 'rosa', 'blaa', 'svarte' ) as $farge ) {
 $kunde = my_query_single_field( 'SELECT SUM(antall_' . $farge . ') FROM kunder;' );
 $lager = my_query_single_field( 'SELECT ' . $farge . '_inn FROM lager;' );
 $sum[$farge] = ($lager - $kunde);
}

$totalsum = 0;
$out = '';
foreach ( $sum as $k => $v ) {
 $prissum = ($v * $pris);
 $totalsum += (int)$v;
 $out .= "<p>Det er $v $k puter på lager. Totalpris ($pris * $v) = $prissum kr</p>\n";
}

$out = str_replace( 'aa', 'å', $out );

print $out;
print "<p>Total pris: $totalsum kr</p>";

?>

Endret av grimjoey
Skrevet

Ah! Den kan nok brukes! Takk! :)

 

 

Jeg tror forresten den koden som regner ut lagerbeholdning ikke fungerer 100% hos meg.

 

Dette kommer ut hos meg:

Det er -17 rosa puter på lager

Det er 2 blå puter på lager

Det er -51 svarte puter på lager

 

Men det stemmer jo ikke.. Lagde en kjapp summeringsfunksjon for hvor mange puter vi har solgt, og hvor mange vi har fått av hver:

 

Antall rosa puter som er mottatt: 84

Antall blå puter som er mottatt: 132

Antall svarte puter som er mottatt: 108

 

Antall blå puter solgt: 58

Antall rosa puter solgt: 53

Antall svarte puter solgt: 99

 

Hva kan være feil? Er det noe med min database, eller koden som gjør noe feil? Skal prøve den på en helt ny tabell nå, og se om det blir riktig der.. :)

Skrevet

Hmm, merkelig...

 

Jeg prøvde å bytte om på $lager og $kunde i denne: "$sum[$farge] = ($lager - $kunde);"

 

Det eneste som skjedde, var at alle outputtene ble omvendt:

 

Det er 17 rosa puter på lager

Det er -2 blå puter på lager

Det er 51 svarte puter på lager

 

 

Men for meg så virker det som den regner på noe helt annet. For 84 rosa puter - 53 rosa puter er jo ikke noe med 17, men 31! :hmm:

 

Skal sjekke opp med et annet oppsett, og se om det samme skjer der også.. :)

Skrevet

Okay, i det nye eksempelet fungerte det.

 

Det følger under her:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>

<body>
<?php

// Innloggingsinformasjon

$dbhost = "localhost";
$dbuser = "bruker";
$dbpass = "passord";
$dbname = "database";

//kobler til MySQL
$opendb = mysql_connect($dbhost, $dbuser, $dbpass)
or die("<p>MySQL status: Could not connect to MySQL<p>" . mysql_error());
//kobler til databasen
mysql_select_db($dbname)
or die("<p>Database status: Could not connect to database<p>" . mysql_error());
?>
<?PHP
function my_query_single_field( $sql ) {
$res = mysql_query( $sql ) or die( mysql_error() );
$row = mysql_fetch_row( $res );
return $row[0];
}

// her kan du enkelt legge inn andre farger
foreach ( array( '1', '2', '3' ) as $tall ) {
$kunde = my_query_single_field( 'SELECT SUM(antall_' . $tall . ') FROM test_1;' );
$lager = my_query_single_field( 'SELECT ' . $tall . '_inn FROM test_2;' );
$sum[$tall] = ($kunde - $lager);
}

$out = '';
foreach ( $sum as $k => $v ) {
 $out .= "<p>Det er $v $k puter på lager</p>\n";
}

$out = str_replace( 'aa', 'å', $out );


print $out;

?>
</body>
</html>

 

Da har jeg laget to tabeller.

test_1 med id, antall_1, antall_2 og antall_3.

test_2 med id, 1_inn, 2_inn og 3_inn.

 

Men jeg måtte faktisk bytte om på regnestykket i bunn. $kunde - $lager blir riktig, mens $lager - $kunde blir negative tall. Hvorfor er det slik? Jeg kan ikke fatte det ihvertfall.

 

 

Uansett, så skjønner jeg ikke hva som kan være galt i den riktige fila mi... Får ta en print på alle variablene der også tenker jeg, og se hva som skjuler seg. :)

Skrevet

Ah! Jeg fant det ut!

 

$lager = my_query_single_field( 'SELECT ' . $farge . '_inn FROM lager;' );

 

Denne får ikke med seg alt som ligger i lager tabellen, da jeg har flere rader der. Slang på en SUM, og det ble riktig! :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...