De eenvoudigste manier om gegevens naar e-mail te verzenden met HTML en PHP. Het ideale bestelformulier voor een webshop
Snelle bestelling kan het winkelen in een online winkel aanzienlijk vergemakkelijken en als gevolg daarvan de conversie verhogen (siteconversie is de verhouding tussen de uiteindelijke echte bestellingen van het aantal bezoekers).
Het artikel bespreekt de basisprincipes van organisatie snel bestellen van goederen zonder registratie, zijn illustraties. Dit kan de werking van dit soort online winkelmodules duidelijk aantonen en dienen webservice klanten en site-eigenaren als introductiegids. Bovendien bevat het materiaal stapsgewijze fragmentatie van functionele code, en u vindt het misschien nuttig voor webontwikkelaars in praktische toepassing.
Een regelmaat is al lang bekend: hoe minder velden in het registratieformulier, hoe gewilliger gebruikers het invullen - hoe gewilliger ze aankopen doen in de online winkel. Het is niet verwonderlijk dat de praktijk van het maken van een snel bestelformulier op de site steeds populairder wordt, waarbij de bezoeker alleen de noodzakelijke gegevens voor levering (naam, adres, telefoonnummer) kan aangeven, zonder de noodzaak om e-mails in te vullen , wachtwoorden, postcodes (waar ze niet nodig zijn), enz. Tegelijkertijd is het de moeite waard om de factor van de fysieke locatie van de winkel / het magazijn te overwegen. Het is rationeel om het snelle bestelformulier te gebruiken in de stad waar de winkel met de goederen zich bevindt (bijvoorbeeld Moskou). Laat tegelijkertijd voor inwoners van andere steden een volledige registratie achter, waar ze de postcode, de bezorgmethode en andere noodzakelijke informatie kunnen aangeven.
De principes van het organiseren van een snelle bestelling van goederen zonder registratie
We hebben dus de doelen en doelstellingen bepaald, laten we nu verder gaan met de implementatiemiddelen. Ik heb een snel bestelformulier geschreven voor een online winkel die is ontwikkeld met de osCommerce v.2.3-engine (cheat ook ""), hoewel een soortgelijk script voor elk ander CMS kan worden geschreven. In feite is alles wat we nodig hebben om een bestelling voor een product naar het e-mailadres van de verkoper te sturen, de product-ID, die moet worden opgehaald van de pagina waarop de knop voor snel bestellen zal worden geplaatst (productpagina, productcategoriepagina). Het ontwerpidee is als volgt: deze knop "Snel bestellen" roept een modulair venster op waarin de gebruiker het volgende wordt aangeboden.
- Bevestig de locatie ("Ja, ik kom uit Moskou"), of weerleg ("Nee, ik kom NIET uit Moskou"). In geval van weerlegging zou een verontschuldigend bericht en een knop "Registreren" in hetzelfde venster moeten verschijnen - voor volledige registratie op de site. Ga na bevestiging naar stap 2:
- Vermeld naam, adres in Moskou en telefoonnummer. Optioneel kunt u ook een willekeurige opmerking sturen. Nadat u op de knop "Bestellen" / "Kopen" hebt geklikt, wordt een brief met de bestelgegevens (inclusief de verborgen product-ID) toegevoegd aan het script, dat wordt verzonden naar de e-mail van de sitebeheerder - de verkoopmanager van de online winkel ( later kan de manager de koper bellen, het adres en de geschikte levertijd opgeven). Het bericht wordt weergegeven aan de koper: "De bestelling is succesvol verzonden."
Rijst. 1. Snelle bestelling voor een online winkel. Snel bestellen knop op de productpagina. Wanneer erop wordt geklikt, wordt bovenaan de pagina een modulair venster geopend (zie Fig. 2).
Rijst. 2. Snel bestellen in de online winkel. Weerlegging van de locatie - "Nee, ik ben NIET in Moskou." Verder - de overgang naar de instructies om volledige registratie te doorlopen, waarbij alle benodigde gegevens van de koper worden ingevuld (Fig. 3).
Rijst. 3. Een andere stad - aankoop is alleen mogelijk bij registratie.
Rijst. 4. Snelle bestelling voor een online winkel zonder registratie (Moskou stad). Ga naar het productbestelformulier (Fig. 5):
Rijst. 5. Snel bestellen in de online winkel zonder registratie. Bestelformulier voor producten.
Snel bestelscript voor een online winkel
We hebben de interface gekozen, laten we nu de code voor deze implementatie doornemen.
We hebben 1 php-hoofdbestand - een pagina die in een modulair venster wordt aangeroepen. Laten we het noemen bistriy_zakaz_s_sayta.php... We zullen hulpfuncties gebruiken, zoals het controleren van velden, pauzetijd (sessietijd - zeg 5 minuten, waarin het onmogelijk is om een bestelling twee keer vanaf dezelfde computer te verzenden) naar analogie met het feedbackformulier dat al in de engine bestaat. Eigenlijk gaan we ze niet registreren, maar alleen bellen. Om dit te doen, zullen we allereerst de werkbestanden van de motor opvragen:
Nu gaan we controleren of de gegevens van het snelbestelformulier zijn ontvangen (als de bestelling is geplaatst). Als we de aanwezigheid van de doorgestuurde gegevens detecteren, verwerken we deze:
// bepalen of gegevens van het formulier worden ontvangen? // Zo ja, dan verwerken we ze en voegen we de gegevens voor de letter toe: if (isset ($ HTTP_GET_VARS ["action"]) && ($ HTTP_GET_VARS ["action"] == "send") && isset ($ HTTP_POST_VARS [" formid" ]) && isset ($ HTTP_POST_VARS ["products_id"]) && ($ HTTP_POST_VARS ["formid"] == $ sessiontoken)) ($ error = false; $ name = tep_db_prepare_input ($ HTTP_POST_VARS ["name"]); $ phone_num = tep_db_prepare_input ($ HTTP_POST_VARS ["phone"]); $ adress_moscow = tep_db_prepare_input ($ HTTP_POST_VARS ["adress_moscow"]); $ prod_link = tep_href_link (FILENAME_PRODUCT_products_INFO) "Een bestelling voor een artikel ontvangen:"). "". $ prod_link. "" .iconv ("cp1251", "utf-8", "Contactpersoon (naam ): "). $ naam." ".iconv ( " cp1251 "," utf-8 "," Phone: "). $ phone_num." ". iconv (" cp1251 "," utf-8 "," Adres in Moskou: "). $ Adress_moscow." ". Iconv ( " cp1251 "," utf-8 "," Bericht: "). Tep_db_prepare_input ($ HTTP_POST_VARS [" onderzoek "]); // pauzetijd $ actionRecor der = nieuwe actionRecorder ("ar_contact_us", (tep_session_is_registered ("customer_id")? $ klant_id: null), $ naam); if (! $ actionRecorder-> canPerform ()) ($ error = true; $ actionRecorder-> record (false); $ messageStack-> add ("contact", sprintf (ERROR_ACTION_RECORDER, (gedefinieerd ("MODULE_ACTION_RECORDER_CONTACT_US_EMAIL_MINUTES") ) MODULE_EMAILCONT_RECORUSDER_ES 5)));) // vraag de database naar de product-id (van het indieningsformulier) $ product_info_query = tep_db_query ("select p.products_id, p.products_model, p.products_price_image, p.products_price_price_image, p.products_price , pd. products_name from ". TABLE_PRODUCTS." p, ". TABLE_PRODUCTS_DESCRIPTION." pd waar p.products_id = "". (int) $ HTTP_POST_VARS ["products_id"]. "" en p.products_status = "1" en p. products_id = pd .products_id en pd.language_id = "". (int) $ languages_id. "" "); if ($ error == false) (// als er geen fouten zijn, stuur dan een e-mail: tep_mail (STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, iconv ("cp1251", "utf-8", "Snelbestelling van de online winkel"), $ aanvraag, $ naam, STORE_OWNER_EMAIL_ADDRESS); $ actionRecorder-> record (); // stel de Moskou-sessie zo in dat de volgende bestelling de koper niet naar de locatie vraagt: session_start (); $ _SESSION ["moskou"] = " 1"; // rapporteer succes door een snelle bestelling te verzenden en door te verwijzen naar de overeenkomstige pagina met het bericht tep_redirect (tep_href_link ("bistriy_zakaz_s_sayta.php", "action = success"));)) // voltooiing van de voorwaarde op het ontvangen formulier gegevens.
Anders, als het snelle bestelformulier niet is verzonden, maken we een verzoek aan de database om de eerste informatie over het product te verkrijgen (productfoto, naam, prijs).
Hier moet u op letten dat we de product-ID krijgen in een GET-variabele die is gedefinieerd op de productpagina en is ingesteld in de URL voor het modulevenster. Als deze variabele plotseling leeg blijkt te zijn, moet het script een fout weergeven (zie dit in regels 53-59).
Gegevens zoals prijs vereisen een speciale verwerking, omdat het product kan worden gebruikt in de verkoop. In dit geval moeten we de normale prijs en de speciale kortingsprijs aangeven. (Lijnen 63-67.)
Anders (// als de formuliergegevens niet worden ontvangen, bieden we een leeg snelbestelformulier om in te vullen // We doen een verzoek aan de database door de product-ID die is ontvangen van de productpagina in GET-variabelen ($ HTTP_GET_VARS ["products_id" ]): $ product_info_query = tep_db_query ("select p.products_id, p.products_model, p.products_image, p.products_price, p.products_tax_class_id, pd.products_name from". TABLE_PRODUCTS. "p,". p.products_model (int) $ HTTP_GET_VARS ["products_id"]. "" en p.products_status = "1" en p.products_id = pd.products_id en pd.language_id = "". (int) $ languages_id. "" ");) / / controleer of de databasequery was succesvol als (! tep_db_num_rows ($ product_info_query)) (// de query heeft een resultaat nul opgeleverd - we gaan naar de foutpagina tep_redirect (tep_href_link ("bistriy_zakaz_error.php"));) else (// de query is succesvol - ga verder $ product_info = tep_db_fetch_array ($ product_info_query);) // verwerk de gegevens // speciale prijs (kortingen) if ($ new_price = tep_get_products_special_price ($ product_info ["products_id"])) ($ products_price = " ". $ valuta-> display_price ($ product_info [" products_price "], tep_get_tax_rate ($ product_info [" products_tax_class_id "]))." ". $ valuta-> display_price ($ new_price, tep_get_tax_rate ($ product_info [" products_tax_class_id "]))."";) else ($ products_price = $ valuta-> display_price ($ product_info [" products_price "], tep_get_tax_rate ($ product_info [" products_tax_class_id "]));)?>
In de koptekst zullen we de belangrijkste stijlen van de site opnemen, evenals js-scripts en jquery-library.
Daarnaast zullen we stijlen schrijven voor twee blokken die gebruikersinteractie definiëren bij de locatieverfijningsstap. Uiterlijk lijkt het alsof we verschillende pagina's voor ons hebben (vergelijk Fig. 2 en Fig. 5). Maar dit is een vervalsing. In feite wordt in het eerste geval de hoofdvorm eenvoudig belemmerd door een bloklaag die over de breedte en hoogte van het raam is gespannen.
Eigenlijk opent zich in eerste instantie een blok van bevestiging / weerlegging van de plaats van vestiging voor de bezoeker (zie Fig. 2). Displaymoscow-klasse en id #moscow. Laten we de positie op de pagina in stijlen instellen als absoluut en met een z-index van 1800 boven de rest van de pagina-inhoud. (Lees hier meer over z-indexen en andere bloktrucs: "".) Dezelfde klasse (displaymoscow) wordt gebruikt voor het tweede #moscownot-blok, aanvankelijk verborgen op de pagina.
Laten we de dynamiek schrijven in
Aandacht! Snelle bestelservice is beschikbaar! enkel en alleen voor inwoners van Moskou. Dit komt doordat er meer gedetailleerde informatie nodig is voor inwoners van andere steden.
Bestel snel brillen en monturen op StarOptic
Registreer u op de website om aankopen te doen in onze online winkel.
In de volgende stap kijken we of de bestelling is verzonden. Zo ja, dan tonen we een bericht over succesvol verzenden.
Bestel snel brillen en monturen op StarOptic
size ("contact")> 0) (echo $ messageStack-> output ("contact");) // als de bestelling is verzonden, geven we een bericht weer over succesvolle verzending if (isset ($ HTTP_GET_VARS ["action"] ) && ($ HTTP_GET_VARS ["actie"] == "succes")) (?>De bestelling is succesvol verzonden naar de serviceafdeling van de winkel. Onze manager zal telefonisch contact met u opnemen om de details van de bestelling en de levertijd te verduidelijken.
Anders tonen we het snelle bestelformulier:
Anders (// anders (als de bestelling nog niet is verzonden) geeft u het snelbestelformulier weer:?>
"; ?> |
". $ products_price." ". $ product_info [" products_name "]." " . " Levering: Levering binnen Moskou binnen de ringweg van Moskou (voor bestellingen van meer dan 3500 roebel) gratis. Lees hier meer over leveringsvoorwaarden ");?> ">"> |