Automatisch Berekenen

Status
Niet open voor verdere reacties.

exotic

Gebruiker
Lid geworden
10 jul 2007
Berichten
277
Beste,

Ik ben opzoek naar een script zoals hieronder:
http://www.x3mservers.net/gprices.php

Ik zou graag zoiets willen laten lopen via een database (mysql)
maar wel dat er automatisch berekend word zoals op deze site.

Wie kan mij hieraan helpen?

Mvg, Wesley
 
:p dan moet ik je teleur stellen, die automatische berekeningen is geen php maar javascript

om een beetje een idee te krijgen hoe het inelkaar zit kan je gewoon in de broncode kijken, hierbij verzoek ik wel om het niet te jatten ander leer je er niks van

bij het formulier worden er 2 functies uitgevoerd
update(); en round();

<select name="game" size="1" onChange="round();update();">

Hieronder de link met de javascript code in de link zodat je zelf niet hoeft te zoeke :p
Javascript
 
Je zult dan eerder in de richting van Javascript komen dan van PHP.
De zoekterm "Javascript calculator" lijkt mij voldoende hits op te leveren.

Ik neem aan dat je met database bedoelt dat je daarin de prijzen en alles hebt staan?

Wil je dingen op je pagina veranderen aan de hand van je database (Stel 2 option-velden, de eerste met automerken en zodra je een merk aanklikt verschijnt in de tweede allerlei types) dan zul je richting AJAX moet gaan.

Het basisprincipe zou je hier vandaan kunnen halen.
 
Het werkt bij mij niet..
bijvoorbeeld voor mijn FTP gebruikers:



index.php
PHP:
<html>
<head>
<script src="selectuser.js"></script>
</head>
<body><form> 
Select a User:
<select name="userid" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form><p>
<div id="txtHint"><b>User info will be listed here.</b></div>
</p></body>
</html>



selectuser.js
PHP:
var xmlHttpfunction showUser(str)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
var url="getuser.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("txtHint").innerHTML=xmlHttp.responseText 
 } 
}function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}



getuser.php
PHP:
<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'root', 'mijnwachtwoord');
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db("ftp", $con);

$sql="SELECT * FROM ftpuser WHERE id = '".$q."'";

$result = mysql_query($sql);

echo "<table border='1' width='100%'>
<tr>
<th>Gebruikersnaam</th>
<th>Wachtwoord</th>
<th>Homedir</th>
<th>Logins</th>
<th>Shell</th>
</tr>";

while($row = mysql_fetch_array($result))
 {
 echo "<tr>";
 echo "<td>" . $row['userid'] . "</td>";
 echo "<td>" . $row['passwd'] . "</td>";
 echo "<td>" . $row['homedir'] . "</td>";
 echo "<td>" . $row['count'] . "</td>";
 echo "<td>" . $row['shell'] . "</td>";
 echo "</tr>";
 }
echo "</table>";

mysql_close($con);
?>

wat doe ik fout? wie zou mij kunnen helpen?
Groeten, Wesley
 
Code:
var xmlHttpfunction showUser(str)
{
Lijkt mij dat er een enter na xmlHttp moet ;)
 
Nu iets anders,
hoe kan ik een <form> (dropdown) maken dat gegevens uit de databse haalt?
dus bijvoorbeeld games en dan sory by id
 
Laatst bewerkt:
PHP:
<?php
$query = "SELECT veld1, veld2, etc FROM tabel ORDER BY veldX";
$result = mysql_query($query);
if(!$result) {
  echo 'Er is een fout opgetreden in de SQL.';
}
?>
<select name="lijstje">
<?php
  while($row = mysql_fetch_assoc($result)) {
    echo '<option value="'. $row['veld1'] .'">'. $row['veld2'] .'</option>'. "\n";
  }
?>
</select>
Dat bedoel je?
 
Juist dat zocht ik, maar hoe kan ik dan alles onder elkaar zetten?
zoals:

Selecteer Game:
Selecteer Aantal Sloten:
Selecteer Type:

Bedrag:


Groeten,
Wesley
 
Niet zo moeilijk toch?

De eerste select via bovenstaande manier, de tweede met een FOR-lus tot het aantal slots dat je wilt en de derde zal waarschijnlijk afhankelijk zijn van de eerste dus daarvoor zou je AJAX kunnen gebruiken wanneer je het in je database hebt.

Dan hangt het alleen van de manier van totaal berekenen af hoe je het totaalbedrag wilt vertonen.
 
Wat is de makkelijkste en beste manier?
heb je een voorbeeld?
 
Ik weet niet hoe je de prijzen hebt opgeslagen :rolleyes:

Je zou een prijs per slot kunnen rekenen dan is het gewoon het aantal slots keer het bedrag.
 
Hoe doe ik dat? snap er nu helemaal niets meer van...
ben al die tijd wel overal aan het zoeken en leren geweest, maar weet het nog steeds niet
 
Als dit uiteindelijk je formulier zal zijn:
HTML:
<form action="" method="post">
  <b>Selecteer een spel</b><br />
  <select name="game" id="game">
    <option value="1">Call of Duty 3</option>
    <option value="2">Call of Duty 4</option>
    <option value="3">Counterstrike: Source</option>
  </select>
  <input type="hidden" value="3" name="pps" id="pps" />
  <b>Selecteer het aantal sloten</b><br />
  <select name="slots" id="slots">
    <option value="8">8</option>
    <option value="10">10</option>
    <option value="12">12</option>
  </select>
  <b>Selecteer een speltype</b><br />
  <select name="type" id="type">
    <option value="16">Team Deatmatch</option>
    <option value="18">Last Man Standing</option>
    <option value="19">Deathmatch</option>
  </select>
  <b>Setupkosten:</b> &euro;25<br />
  Totaal prijs: &euro;<input type="text" value="0" name="subtotal" id="subtotal" />
  <input type="submit" value="Verzenden" />
</form>

Daar moet natuurlijk een databasemodel achter hangen.

Tabellen welke ik in gedachten heb zijn:
games
game_id - INT - auto_inc - PRIMARY
game_name - VARCHAR(50)
prijs_per_slot - INT(3)

gametypes
type_id - INT - auto_inc - PRIMARY
type_name - VARCHAR(50)

Voor de slots ga ik voor het gemak uit van een standaard-lijstje, eenvoudig op te zetten door een array.

Je zult dan een JavaScript-functie gaan maken welke wordt uitgevoerd bij een onchange op de select-box van "game".

Die functie zal dan uit de database moeten halen wat de prijs per slot is, die ga je in het verborgen veld "pps" opslaan.
PHP:
document.getElementById("pps").value = waarde_uit_database;
De JS-variabele waarde_uit_database dien je dus d.m.v. AJAX op te vragen.

Die functie moet er ook voor zorgen dat de select-box van "type" wordt gevuld met de juiste gametypes.

Als laatste gaat die functie een berekening uitvoeren zodat het totaalbedrag verschijnt.
Nu zou je voor die berekening apart een functie kunnen schrijven en die gebruiken.

Dus eerst rekenen
PHP:
function calcTotal(pps, numSlots) {
  var setupCosts = 25; // Waarschijnlijk zijn er ook setupkosten aan verbonden, die neem ik dus hier mee.
  return (pps*numSlots) + setupCosts;
}
en dan zorgen dat ie wordt uitgevoerd
PHP:
// Waardes opvragen
var pps = document.getElementById("pps").value;
var slots = document.getElementById("slots").value;
// Zorgen dat het totaalbedrag wordt ingevuld
document.getElementsBy("subtotal").value = calcTotal(pps, slots);

Volgens mij ben je nu aardig op weg geholpen, de rest is aan jou.
 
dank u!

nog even iets anders..
heb het nu zeg maar via dat Javascript

hoe kan ik nu dan alle gegevens meenemen naar de volgende pagina?
bestel2.php

zodat daar de gegevens komen te staan:

Beste,
U bestel details zijn alsvolgt:
Game, Type, Slots etc...
 
Als je op die pagina alleen verwerkt kun je ze opvragen via $_POST-variabelen.

Ga je bij bestel2.php nog extra informatie vragen dan zul je ze in een <input type="hidden" /> moeten stoppen.
 
ja oke, maar doe het nu niet via PHP...
doe het via dat javascript...

hoe kan ik die gegevens van het java script dan weergeven op bestel2.php?
<select name="game" size="1" onChange="round();update();">
 
Niet, je moet er voor zorgen dat hij ze in een formulier zet.

Wat is je JavaScript code en hoe ziet je formulier er uit?
 
PHP:
<form action="step2.php" method="post" name="form" class="text-kopen" id="form">
<table width="100%" border="0">
  <tr>
    <td><select name="game" size="1" onChange="round();update();">
      <option value="Select a server" selected>Kies het gewenste spel</option>
      <option value="Americas Army">America's Army</option>
      <option value="Battlefield 1942">Battlefield
        1942</option>
      <option value="Battlefield 1942: Codename Eagle">Battlefield
        1942 - Codename Eagle</option>
      <option value="Battlefield 1942: Desert Combat">Battlefield
        1942 - Desert Combat</option>
      <option value="Battlefield 1942: Eve of Destruction">Battlefield
        1942 - Eve of Destruction</option>
      <option value="Battlefield 1942: Forgotten Hope">Battlefield
        1942 - Forgotten Hope</option>
      <option value="Battlefield 1942: Galactic conquest">Battlefield
        1942 - Galactic conquest</option>
      <option value="Battlefield 1942: Road to rome">Battlefield
        1942 - Road to rome</option>
      <option value="Battlefield 2">Battlefield
        2</option>
      <option value="Call of Duty">Call of Duty</option>
      <option value="Call of Duty2">Call of Duty
        2</option>
      <option value="Call of Duty4">Call of Duty
        4</option>
      <option value="Call of Duty - United Offensive">Call
        of Duty - United Offensive</option>
      <option value="ET: QuakeWars">ET: QuakeWars</option>
      <option value="FEAR">FEAR</option>
      <option value="Half-Life MP">Half-Life MP</option>
      <option value="Half-Life: Battle Grounds">Half-Life
        - Battle Grounds</option>
      <option value="Half-Life: Counter Strike ">Half-Life
        - Counter Strike </option>
      <option value="Half-Life - Counter Strike:Source">Half-Life
        - Counter Strike:Source tickrate: 66</option>
      <option value="Half-Life - Counter Strike:Source100">Half-Life
        - Counter Strike:Source tickrate: 100</option>
      <option value="Half-Life: Day of Defeat">Half-Life
        - Day of Defeat</option>
      <option value="Half-Life - DOD: Source">Half-Life
        - DOD: Source tickrate: 66</option>
      <option value="Half Life - DOD: Source100">Half-Life
        - DOD: Source tickrate: 100</option>
      <option value="Half-Life: Frontline Force">Half-Life
        - Frontline Force</option>
      <option value="Half-Life: Natural Selection">Half-Life
        - Natural Selection</option>
      <option value="Half-Life: Team Fortress Classic">Half-Life
        - Team Fortress Classic</option>
      <option value="Half-Life: The Specialists">Half-Life
        - The Specialists</option>
      <option value="Half-Life: Tour of Duty">Half-Life
        - Tour of Duty</option>
      <option value="Halo">Halo</option>
      <option value="HaloCE">HaloCE</option>
      <option value="Jedi Knight 3">Jedi Knight
        3</option>
      <option value="Medal of Honor: Allied Assault">Medal
        of Honor - Allied Assault</option>
      <option value="Medal of Honor: BreakTrough">Medal
        of Honor - BreakTrough</option>
      <option value="Medal of Honor: SpearHead">Medal
        of Honor - SpearHead</option>
      <option value="Quake 2">Quake II</option>
      <option value="Quake 3">Quake III</option>
      <option value="Quake 3: Freezetag">Quake
        III - Freezetag</option>
      <option value="Quake 3: Rocket Arena">Quake
        III - Rocket Arena</option>
      <option value="Quake 3: Urban Terror">Quake
        III - Urban Terror</option>
      <option value="Quake 4:">Quake 4</option>
      <option value="Red Orchestra: Ostfront">Red
        Orchestra: Ostfront</option>
      <option value="Return to Castle Wolfenstein">Return
        to Castle Wolfenstein</option>
      <option value="Rune: Halls of Valhalla">Rune: Halls of Valhalla</option>
      <option value="Wolfenstein: Enemy territory">RTCW:
        Enemy Territory </option>
      <option value="Tactical Ops">Tactical Ops</option>
      <option value="Team Fortress 2">Team Fortress
        2</option>
      <option value="TMNF">Track Mania Nations
        Forever</option>
      <option value="Unreal Tournament">Unreal
        Tournament</option>
      <option value="Unreal Tournament 2003">Unreal
        Tournament 2003</option>
      <option value="Unreal Tournament 2003: Deathball">Unreal
        Tournament 2003 - Deathball</option>
      <option value="Unreal Tournament 2003: Frag Ops">Unreal
        Tournament 2003 - Frag Ops</option>
      <option value="Unreal Tournament 2003: Red Orchestra">Unreal
        Tournament 2003 - Red Orchestra</option>
      <option value="Unreal Tournament: Strike Force">Unreal
        Tournament - Strike Force</option>
      <option value="Unreal Tournament 2004">Unreal
        Tournament 2004</option>
      <option value="Warsow">Warsow</option>
    </select></td>
    <td><select name="type" size="1"  onChange="update();">
      <option value="Select server type" selected>Kies het gewenste type server</option>
      <option value="10Private">besloten server
        10 slots</option>
      <option value="12Private">besloten server
        12 slots</option>
      <option value="14Private">besloten server
        14 slots</option>
      <option value="16Private">besloten server
        16 slots</option>
      <option value="18Private">besloten server
        18 slots</option>
      <option value="20Private">besloten server
        20 slots</option>
      <option value="22Private">besloten server
        22 slots</option>
      <option value="24Private">besloten server
        24 slots</option>
      <option value="26Private">besloten server
        26 slots</option>
      <option value="28Private">besloten server
        28 slots</option>
      <option value="30Private">besloten server
        30 slots</option>
      <option value="32Private">besloten server
        32 slots</option>
      <option>------------------------------------------------- </option>
      <option value="10Public">publieke server
        10 slots</option>
      <option value="12Public">publieke server
        12 slots</option>
      <option value="14Public">publieke server
        14 slots</option>
      <option value="16Public">publieke server
        16 slots</option>
      <option value="18Public">publieke server
        18 slots</option>
      <option value="20Public">publieke server
        20 slots</option>
      <option value="22Public">publieke server
        22 slots</option>
      <option value="24Public">publieke server
        24 slots</option>
      <option value="32Public">publieke server
        32 slots</option>
    </select></td>
    <td><select name="cperiod" id="cperiod" onChange="update();">
      <option value="1 Month" selected>1 Maand</option>
      <option value="3 Months">3 Maanden</option>
      <option value="6 Months">6 Maanden</option>
      <option value="12 Months">12 Maanden / 1
        maand Gratis</option>
    </select></td>
  </tr>
  <tr>
    <td colspan="3"><span class="style4">&nbsp;</span></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="right" class="style2">Teamspeak server :</div></td>
    <td><select name="teamspeak" id="teamspeak" onChange="update();">
      <option value="No" selected>Geen Teamspeak</option>
      <option value="1.99">Teamspeak 8 slots </option>
      <option value="2.99">Teamspeak 12 slots</option>
      <option value="9.99">Teamspeak 20 slots</option>
      <option value="15.99">Teamspeak 32 slots</option>
    </select></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="right" class="style2">mIRC Bouncers :</div></td>
    <td><select name="bnc" id="bnc" onChange="update();">
      <option value="No" selected>Geen BNC</option>
      <option value="5.00">5 bnc</option>
      <option value="10.00">10 bnc</option>
      <option value="13.99">15 bnc</option>
      <option value="18.99">20 bnc</option>
        </select></td>
  </tr>
  <tr>
    <td colspan="3"><span class="style4">&nbsp;</span></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="right" class="style2">Prijs per maand :</div></td>
    <td><input name="price" type="text" value="0.00""   size="6" maxlength="10" readonly /"></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div align="right" class="style2">Prijs totaal :</div></td>
    <td><input name="totalprice" type="text" id="totalprice" value="0.00""   size="6" readonly /"></td>
  </tr>
</table>
</form>

en ik gebruik als javascript: klikkerdeklik
 
Ja zoals ik zei: "ze opvragen via $_POST-variabelen."

Op step2.php zul je de variabelen
PHP:
$_POST['game']
$_POST['type']
$_POST['cperiode']
$_POST['teamspeak']
$_POST['bnc']
$_POST['price']
$_POST['totalprice']
kunnen opvragen.

Ik snap niet waarom je geen database gebruikt, scheelt je aardig wat typwerk.
Helemaal je JS wordt ik niet blij van.

Daarnaast is je JavaScript niet correct, de prijzen kloppen niet.

Selecteer ik een spel dan kost me dat eerst niets, selecteer ik dan 10 slots private dan veranderd te prijs a.d.h.v. de game welke ik selecteerde. Ga ik dan vervolgens naar "Kies het gewenste type server" wijzigt de prijs niet.
 
ik wou dat ik zo goed kon scripten.
maar in PHP met een database en dropdown is het mij nog steeds niet gelukt.

mss dat jij een begin kan maken?
alvast bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan