Avatar billede syswatch Novice
14. oktober 2004 - 08:10 Der er 12 kommentarer og
1 løsning

Bestillingsformular med sessions

Hejsa derude...
Jeg står overfor at skulle lave et simplet bestillings system, hvor der er en mysql database bag.
Den måde jeg vil lave det på er, at der er en <form> med 5 inputs felter. 1.varenr 2. varebeskrivelse 3.lagerstatus 4.pris 5. bestillingsantal

Vi går ud fra at brugerne kender varenrne i hovedet, så vil jeg gerne have at når en bruger taster et varenr og trykker enter, så bliver felt 2,3 & 4 automatisk udfyldt. og markøren hopper hen til felt 5, hvor man kan trykke antal ind og enter igen, så bliver "varelinien" tilføjet en session.

Er dette muligt at lave, og evt hvordan gøres det. Jeg har prøvet mig lidt frem, men kan ikke rigtig finde ud af det.

Håber i vil komme med nogle hints/forslag.
Avatar billede sukos Juniormester
14. oktober 2004 - 13:06 #1
Varenr. er lig med id i DB, som er autoincrement, primary
Når brugeren indtaster 5, hentes beskrivelse m.m. fra DB hvor id == 5
Til at sætte markøren i antal, kan bruges noget javascript. Og kun vis $_GET["varenr"] er sat og findes i DB selvf.
Når enter trykkes igen, sættes din session, og en redirect til filen selv, hvor du så skriver "tak for bestilling" eller lign
Avatar billede syswatch Novice
14. oktober 2004 - 13:09 #2
Sukos... Ja, du er inde på noget af det rigtige...
Men hvordan får jeg den til at indsætte "værdierne" i resten af felterne, dette skal gerne gøres uden siden behøves at reloade....
Avatar billede sukos Juniormester
14. oktober 2004 - 13:22 #3
Hvis du bruger get i din første form, til at hente id
if(isset($_GET["varenr"])) {
$hent = mysql_query("SELECT * FROM `table` WHERE `id` = '". $_GET["varenr"] ."'") or di (mysql_error());

if(mysql_num_rows($hent) == 1) {
$v = mysql_fetch_object($hent);
echo"Varenr. ". $_GET["varenr"] ."<br>\n";
echo"Beskrivelse:<br>\n";
echo $v->beskrivelse ."<br>\n";

o.s.v...................
}
Hvis du skal bruge formfelter, ville jeg nu nok lave hiddenfelter, så brugeren ikke tror at der kan rettes i dem.
Til sidst laver du felet "antal" som skal udfyldes
Avatar billede sukos Juniormester
14. oktober 2004 - 13:26 #4
Nåh, fejl er gratis!
or die(mysql_error());

Men din session, hvordan skal den bruges?
Avatar billede syswatch Novice
14. oktober 2004 - 13:40 #5
Det er meningen det hele skal være på samme side. Og jeg kan ikke helt se hvordan jeg skal kunne hente data ud fra mysql databasen uden at siden reloades...

Når kunden så har tastet et nummer og antal ind og trykker bestil skal denne varelinie gemmes i en session, og så trækker jeg dataene ud af den session til sidst til en bekræftigelse.
Avatar billede sukos Juniormester
14. oktober 2004 - 13:47 #6
Ja, ok, du kan ikke hente fra db uden at du ved hvad du skal hente!
Men at lave det på samme side, er ikke noet problem.
Når du registrere sessions, kan du evt. nøjes med at registrere id og antal, for tilsidst ud fra session, at hente fra DB, til endelig godkendelse
Avatar billede sukos Juniormester
14. oktober 2004 - 13:47 #7
Evt. kan du lave en iframe, med bestilling alene
Avatar billede Slettet bruger
14. oktober 2004 - 14:58 #8
Hvis du vil have det til at virke uden reload, så skal der på siden være et javascript, som kender hele dit varekartotek. Det er ikke umuligt, men ved et varesortiment af bare nogenlunde størrelse begynder det at blive en meget tung side at skulle hente for brugerne.
Avatar billede syswatch Novice
14. oktober 2004 - 15:00 #9
Sandbox.... Okay... Ja, vi har et varekartotek på 11000 varer.. så falder det jo ligesom til jorden.
Avatar billede Slettet bruger
14. oktober 2004 - 15:17 #10
Så er der muligheden med en iframe, som sukos foreslog.

<input type="text" name="varenr" onblur="document.getElementById('beskr').location='visvare.php?id='+this.value;">

<iframe id="beskr" src="ingenvare.html">

<input type="text" name="antal">

Jeg har ikke testet, og har ikke arbejdet meget med javascript, så måske skal der bruges en anden event end onblur (onchange?) og måske er det ikke document.getElementById('beskr').location der skal bruges til at ændre adressen på iframen.
Avatar billede syswatch Novice
14. oktober 2004 - 15:26 #11
Jeg har aldrig arbejdet med iframes, så ved faktisk ikke engang hvad det er. Men jeg vil da lige lave noget research.
Avatar billede cmau Nybegynder
14. oktober 2004 - 19:18 #12
her er lavet videre på sukos's:

<?
include('cmau/sql.php');
//CONNET TIL MYSQL DATABASE
if(isset($_POST["varenr"])) {
$query = mysql_query("SELECT * FROM users WHERE id='".$_POST[varenr]."'") or die(mysql_error());
$row = mysql_fetch_assoc($query);

if(mysql_num_rows($query) == 1) {
echo "<b>Varenr.:</b> $_POST[varenr]<br>";
echo "<b>Pris:</b> $row[pris],-<br>";
echo "<b>Beskrivelse:</b> $row[varebeskrivelse]<br>";
echo "<b>Antal på lager:</b> $row[lagerstatus]<br>";

} else {
echo "Vare nr. findes ikke!";
}
}
echo '
<form method="POST" action="bestil.php">

<p>Varenr.:<br><input type="text" name="varenr" size="20"></p>
</form>

<form method="POST" action="videre.php">
<input type="hidden" name="varenr" value="'.$_POST['varenr'].'">
<p>Antal:<br><input type="text" name="varenr" size="20"></p>
<p><input type="submit" value="køb"></p>
</form>';
?>
Avatar billede syswatch Novice
30. november 2004 - 13:31 #13
Nogen der lige lægger et svar så jeg kan få lukket...
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