Gå til innhold

Bestillingskjema i PHP enkelt


Anbefalte innlegg

Hei holder på å lage en side i flash. Trenger et bestillingsskjema i php. Har søkt litt rundt, men ikke funnet helt det jeg var ute etter. Det jeg trenger er navn, addresse, telefonnr, antall, og et felt der man skriver sin egen email. Har null peiling på php, så setter veldig stor pris på all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Hvis du ikke har peiling så er det bare en ting å gjøre: lære.

 

Det første vi trenger er et vanlig html-skjema som sender dataene til en php-side. Det gjøres enkelt med:

<html>
<form action="bestillingsbehandler.php" method="post">
 <input type="text" name="navn">
 <input type="text" name="adresse">
 <input type="text" name="epost">
 <input type="submit">
</form>
</html>

 

Så må vi lage en side som tar imot disse dataene. I dette tilfellet heter den siden bestillingsbehandler.php

<?php
 echo "Du skrev inn teksten: {$_POST['navn']}.";
?>

Legg merke til at "navn" i $_POST['navn'] er det navnet du gav input-feltet i html-skjemaet (<input type="text" name="navn">).

 

Men bare å skrive ut dette hjelper veldig lite. Du vil sannsynligvis lagre disse dataene. Jeg anbefaler å bruke en database til dette.

I tillegg anbefaler jeg minst fire tabeller til et slikt bestillingssystem.

1) Kundetabell: Inneholder data om kunden

2) Varekatalog: Inneholder data om varene som kan bestilles

3) Ordretabell: Binder en ordre mot en kunde

4) Ordreinnhold: Binder vare og pris mot en ordre

 

Du kan opprette disse tabellene med mange verktøy for eksempel phpMyAdmin hvis du velger å bruke MySQL.

 

Kundetabellen bør se ca slik ut:

ID [heltall]: Alltid godt å ha et kundenummer å referere til

Navn [streng]: Kan deles i for- og etternavn hvis du vil.

Adresse [streng]: Greit å vite hvor man skal sende ting.

Epost [streng]: Du nevnte det i posten din.

 

Varekatalogen bør minimum ha disse feltene:

ID [heltall]: Varenummer er alltid kjekt

Navn [streng]: Greit å ha et navn på en vare

Pris [tall]: Prisen du tar betalt for varen

Beskrivelse [tekstfelt]: Alternativt så kan dette være en streng og inneholde en URL til en beskrivelse av varen.

 

Ordretabellen er en liten sak:

ID [heltall]: Ordrenummer er greit

Kunde_ID [heltall]: Kunden som har bestilt dette

Dato [dato]: Greit å ha en ordredato

Total [tall]: Det er greit å lagre totalbeløpet her slik at du slipper å summere varene hver gang

 

Ordreinnhold lenker varer til en ordre

Ordre_ID [heltall]: Hvilken ordre tilhører denne linjen?

Vare_ID [heltall]: Hvilken vare er det snakk om?

Pris [tall]: Hvilken pris varen hadde på ordretidspunktet

 

Når disse tabellene er på plass så er det bare å fylle dem inn i bestillingsbehandler.php. Dette gjør du ved spørringer. Først når kunden registrerer seg så fyller vi inn kundetabellen:

<?php
$query = "INSERT INTO kundetabell (Navn, Adresse, Epost) VALUES('{$_POST['navn']}', '{$_POST['adresse']}', '{$_POST['epost']}')";
mysql_query($query) or die("Spørringen <i>'$query'</i> feilet med feilkoden: <strong>".mysql_error()."</strong>");
?>

 

Det samme gjør du når du skal fylle inn ordren, bare at du må fylle inn hver ordrelinje for alle varene og selvfølgelig binde ordren mot kunden.

 

Når det er på tide å hente ut en ordre med ID=4 så kjører du spørringen

<?php
$query="SELECT * FROM kundetabell JOIN ordretabell ON kundetabell.ID = ordretabell.Kunde_ID WHERE ordretabell.ID = 4 LIMIT 1";
$ordre_resultat = mysql_query($query) or die("Spørringen <i>'$query'</i> feilet med feilkoden: <strong>".mysql_error()."</strong>");
$query = "SELECT * FROM ordreinnhold WHERE Ordre_ID = 4";
$innhold_resultat = mysql_query($query) or die("Spørringen <i>'$query'</i> feilet med feilkoden: <strong>".mysql_error()."</strong>");

$kundeordredata = mysql_fetch_array($ordre_resultat, MYSQL_ASSOC);
while($row = mysql_fetch_array($innhold_resultat, MYSQL_ASSOC))
{
$kundeordredata['ordrelinje'][]=$row;
}

print_r($kundeordredata);
?>

Nå vil kunde-, ordre- og innholdsdata være tilgjengelig i matrisen $kundeordredata.

 

Til slutt et par ting å tenke på:

Du vil ALLTID FEILSJEKKE data som du tar imot fra kunder. Du vil aldri bruke $_POST-variabler direkte i spørringer slik jeg har gjort i eksemplet.

 

Jeg har laget noen eksempelskript som viser hvordan du kobler til, lager en tabell, setter inn og henter ut data fra en MySQL-tabell.

 

 

Håper dette hjelper.

Lenke til kommentar

Tusen takk! Men tror ikke jeg trenger noe database egentlig enda. Skal ikke ha noen egentlig nettbutikk, så det jeg trenger er bare et ekstremt enkelt skjema som sender en mail til en addresse med det som står der. Har ganske dårlig tid (Skal på EM i ungdomsbedrifter på onsdag, og vår mentor programmerer i flash, men kunne desverre lite om php. Om det hjelper så kan det bare være en enkelt tekstboks hvor man skriver alt selv. Eneste som er viktig er at jeg får en mail når kunden trykker "send".

Lenke til kommentar
Eneste som er viktig er at jeg får en mail når kunden trykker "send".

 

 

mail();

må være slått på for at det skal fungere;

 

<?php

//This code runs if the form has been submitted

if (array_key_exists('submit', $_POST))

{

 

// check fields are not empty

$name = $_POST['name'];

if (strlen($name) < 3) {

$error['name'] = 'Navn må inneholde mer enn 3 bokstaver!';

}

if (strlen($name) > 35) {

$error['name'] = 'Navn må inneholde mindre enn 35 bokstaver!';

}

 

// check for valid email address

$email = $_POST['email'];

$pattern = '/^[^@]+@[^\s\r\n\'";,@%]+$/';

if (!preg_match($pattern, trim($email))) {

$error['email'] = 'Din e-mail er desverre ikke gyldig.';

}

 

// check fields are not empty

$message = trim($_POST['message']);

if (strlen($message) < 3) {

$error['message'] = 'Melding må inneholde mer enn 3 tegn!';

}

 

// if validation is okay then carry on

if (!$error ) {

 

//send email

$to = "DIN MAIL HER";

$subject = "Kontakt Skjema, fra ??. Fra: ($email) - ($name)";

$body = "$message";

$additionalheaders = "From: <[email protected]> ";

$additionalheaders .= "Replt-To: [email protected]";

if(mail($to, $subject, $body, $additionalheaders))

{

$sent = true;

}

 

} // end validation

}// end submit

 

 

// If mail is sent

if (isset($sent)) {

 

echo "<span class=\"velykket\"><strong>Velykket!</strong> Din mail har nå blitt sendt til oss!</span><br>";

echo "<span class=\"melding\">Du vil få svar innen 1-2 dager.</span><br>";

 

} else { // mail not sent show form

 

// show any errors if set

if (isset($error['name'])) {

echo "<span class=\"error\">".$error['name']."</span>";

}

if (isset($error['email'])) {

echo "<span class=\"error\">".$error['email']."</span>";

}

if (isset($error['message'])) {

echo "<span class=\"error\">".$error['message']."</span>";

}

?><span class="melding">Venligst fyll ut alle feltene under for at mailen skal bli sendt!</span><br />

<div class="tt"><span class="tt-tt">Send E-mail</span><br />

 

<form action="" method="post">

 

<p>

<label>Fult Navn:</label><br />

<input name="name" type="text" maxlength="20" <?php if(isset($error)) {echo "value='$name'";} ?> /></p>

 

<p><label>Din Email:</label><br />

<input id="kontakt2" name="email" type="text" maxlength="2550" <?php if(isset($error)) {echo "value='$email'";} ?> /></p>

 

<p>

<label>Melding:</label><br />

<textarea name="message" cols="50" rows="10" id="message"><?php if(isset($error)) {echo $message;} ?></textarea>

</p>

 

<p><input type="submit" name="submit" value=" Send Melding "></p>

 

</form>

</div>

<br />

<?php } ?>

 

Endret av php_user
Lenke til kommentar

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/25/w71193/skisock/bestilling.php on line 7

 

Parse error: syntax error, unexpected T_IF in /home/25/w71193/skisock/bestilling.php on line 9

 

 

hm får bare denne feilmeldingen

 

 

www.skisock.net/bestilling.php

Lenke til kommentar

Hei,

 

vis du bytter ut denne kodesnutten:

// check for valid email address
$email = $_POST['email'];
$pattern = '/^[^@]+@[^\s\r\n\'";,@%]+$/';
if (!preg_match($pattern, trim($email))) {
$error['email'] = 'Din e-mail er desverre ikke gyldig.';
}

med denne:

// check for valid email address
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
	$error['email'] = 'Din e-mail er desverre ikke gyldig.';
}

 

så tror jeg det bør funke(utestet!)

Lenke til kommentar
  • 4 uker senere...

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...