deleder Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 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
BlueEAGLE Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 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 tilNavn [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 kjektNavn [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 greitKunde_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
deleder Skrevet 17. juli 2008 Forfatter Del Skrevet 17. juli 2008 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
Thomas. Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 (endret) 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 17. juli 2008 av php_user Lenke til kommentar
deleder Skrevet 20. juli 2008 Forfatter Del Skrevet 20. juli 2008 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
Richard87 Skrevet 21. juli 2008 Del Skrevet 21. juli 2008 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
BlueEAGLE Skrevet 21. juli 2008 Del Skrevet 21. juli 2008 Vær oppmerksom på at filter_var() krever php >= 5.0.2 eller PECL filter 0.11.0 Lenke til kommentar
Martin A. Skrevet 21. juli 2008 Del Skrevet 21. juli 2008 Og hvor mange webhoster er det som fremdeles sverger til PHP4? Lenke til kommentar
deleder Skrevet 21. juli 2008 Forfatter Del Skrevet 21. juli 2008 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..? Lenke til kommentar
Martin A. Skrevet 21. juli 2008 Del Skrevet 21. juli 2008 Den vil forsvinne om du foretar endringene som BlueEAGLE serverte deg. Lenke til kommentar
deleder Skrevet 22. juli 2008 Forfatter Del Skrevet 22. juli 2008 Hoster ikke serveren selv. Får spøre UniWeb om de har noe peil Lenke til kommentar
lop Skrevet 18. august 2008 Del Skrevet 18. august 2008 Du bør også lage en funksjon der det også sendes en e-post med bestilling. bruk mail(); Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå