Welcome to Webmatrices Community

Welcome to Webmatrices Community

Our forum is here to help you fix your digital issues related to SEO, Digital Marketing, NFT development, Google Adsense, Blogging and more.

heroappliances

Just need to vent and maybe get some advice. I run an appliance repair business, been grinding for 4 years doing everything "right" according to SEO guides:Unique content for each service pageProper schema markupGoogle Business Profile fully optimizedBuilding real local backlinks Getting tons of genuine 5-star reviewsNAP consistency everywhereThen I discover this competitor who's straight up DOMINATING every city in our state with clearly auto-generated pages. Like literally 1000+ pages following the same template:/service-city-state /appliance-repair-[city]-[state] /emergency-repair-[city]-[state]The worst part? Their content is basically identical for every city, just swapping city names. No unique info, no real value, just mass-produced BS. And Google LOVES it! They're ranking top 3 for every damn city.Meanwhile, I'm here spending weeks writing unique content for each location, doing proper competitor and demographic research, adding actual local information... for what?I checked in ahrefs - they built these pages 6 months ago and have been crushing it since. Same DA as me, similar backlink profile.Am I missing something? Should I just give up and do what they're doing? Seems like Google rewards this crap while punishing those who follow their guidelines.What would you do in my position? Keep grinding the "right" way or switch to mass location pages?

serpsherpa replied 10 days ago
@heroappliances Let me add some real talk about appliance repair SEO since that's your world:Look, I've seen dozens like your competitor. Here's what's really happening:Their 1000+ doorway pages work because:Super consistent NAP everywhereThose 5 legit GMB profiles do the heavy liftingEach auto page points to the nearest real locationTheir basic template:"Emergency service!""All brands!"[City] coverage areaGeneric service listWikipedia city infoContact formHere's your move - instead of that garbage, do this:Real response times for specific neighborhoodsActual recent job photos (Google loves this)Customer reviews from that zoneLocal parts suppliers you work withCommon problems in that areaTrust me, their conversion rate is trash. Sure they rank, but good luck getting calls from auto-generated BS.I've helped 3 appliance businesses fix this exact mess in the past 6 months. DM if you want me to take a look at your site.Remember: Rankings are cool, but calls pay bills. Build pages that actually help people find you when their fridge dies at 2am.
Published 11 days ago
1 likes
6 comments
17 watched
techwizardrino

Hey bloggers, this isn't just another "my earnings dropped" post - I'm genuinely freaking out here.I run a programming tutorial site that I started in my freshman year. Five years of writing tutorials, building code examples, and helping CS students like myself. It was bringing in around $1.5K consistently, which covered my student loan payments and some living expenses.Today, I logged in to find my earnings have nosedived to $218. My traffic is exactly the same (about 120K monthly visits), bounce rate unchanged, and I haven't made any changes to the site. The real gut punch? My loan payment of $890 is due next week.What makes this more confusing:No manual actions in Search ConsoleNo crazy traffic spikes or dropsAll content is original (literally my study notes turned into tutorials)Been running ads in the same positions for yearsAnalytics shows traffic source percentages are identical to last month. RPM went from $12-14 to barely $2. Either I'm missing something obvious, or something's seriously wrong with ad serving.Anyone else seeing massive RPM drops recently? Really need some insights here because instant noodles aren't going to cover this loan payment.Edit: Should mention - no AI content, no autogenerated stuff. Just pure, hand-written tutorials and code examples from my actual study experience.

techwizardrino replied 2 days ago
After 2 weeks of trying everything suggested here - blocking low-RPM networks, optimizing placements, even enabling that cookie consent thing @artem.v.bogdan mentioned - I'm still stuck around $3.50 RPM. Not great, but better than where I started.@ClarkVent - My site's built around some specialized Python implementations that I developed during... let's just say an interesting project phase. And yeah, these aren't your typical "list comprehension" tutorials - average time on page is around 8-12 minutes, with a 72% scroll depth. There's a reason for those metrics, but that's a story for another day.$1.74 RPM staying stable is actually impressive right now. Most of my industry contacts are seeing wild swings. What's your setup looking like? Particularly interested in how you're maintaining consistency through all this.
Published 16 days ago
4 likes
10 comments
52 watched
codie
codie

Back in 2022, a member named "eatyi" sparked a meaningful discussion on Webmatrices about struggling with AdSense's "Google-served ads on screens without publisher-content" rejection (web archive). The conversation, which included helpful insights from community members like me and trubo_dude, highlighted a common challenge: getting AdSense approval for websites that focus on tools and functionality rather than traditional content.Google here, tries to explain the issue, instead just types the title without any help: https://support.google.com/publisherpolicies/answer/11112688Three years later, this challenge persists, but our understanding of Google's requirements and potential solutions has evolved significantly. What started as a discussion about a site with "15 pages about learn css and a little about js" has grown into a broader conversation about how tool-based and interactive websites can successfully integrate with AdSense while maintaining their core purpose.The Evolution of the ChallengeLooking back at our 2022 discussion, I suggested creating a separate blog subdomain with 15-17 high-quality articles as a solution. While this approach worked for some, the landscape in 2025 has become more nuanced, requiring a more integrated strategy. Today's successful implementations show that it's not just about adding content somewhere on your domain – it's about thoughtfully weaving valuable information throughout your site's ecosystem.Understanding the Core IssueThe fundamental challenge hasn't changed: Google AdSense requires substantial publisher-created content to ensure ad relevance and quality. However, many website owners, particularly those running tools, generators, or interactive platforms, struggle with this requirement because their value proposition isn't primarily text-based.What Google Actually Means by "Content"When Google mentions "screens without publisher-content," they're specifically looking for:Substantial text content that provides context for ad targetingOriginal, publisher-created material rather than user-generated contentContent that demonstrates expertise and adds value to the user experienceThe key insight many miss is that "content" in AdSense terms specifically means detailed, textual information rather than just functional features or tools.Modern Solutions (2025 Update)Based on successful implementations and current best practices, here are effective approaches to address this challenge:1. Hybrid Content StrategyInstead of completely changing your site's purpose, create a content hub alongside your main functionality. For example, if you run a tool-based site:Maintain your core tools/features as the main offeringCreate an integrated knowledge base or tutorial sectionDevelop case studies showing real applications of your tools2. Documentation as ContentTransform your documentation into high-quality content by:Writing comprehensive guides about your tools/featuresCreating tutorial series that showcase advanced usageDeveloping problem-solving articles addressing common user challenges3. Strategic Content DistributionRather than placing content randomly:Create dedicated content sections that complement your toolsEnsure each tool page includes substantial contextual informationDevelop landing pages that combine practical information with tool accessTechnical Requirements for 2025To meet current AdSense standards, ensure your site has:A minimum of 25-30 high-quality articles (increased from the previous 15-20 requirement)Comprehensive pages for Privacy Policy, Terms of Service, and About UsClear navigation structure linking content and tool sectionsMobile-responsive design with clear content presentationProper technical implementation of AdSense codeCommon Pitfalls to AvoidThin Content Pages: Pages with just tools or generators but no supporting contentPlaceholder Content: "Under Construction" or temporary content pagesNavigation-Only Pages: Pages that merely link to other sectionsIsolated Tools: Tools without contextual information or usage guidesSuccess Story: The Content Integration ApproachA great example from our community is a code generator site that initially faced rejections. They succeeded by:Creating detailed tutorials for each toolAdding use-case scenarios and best practicesDeveloping a blog focusing on tool applicationsMaintaining their tool-first approach while seamlessly integrating contentMoving ForwardThe key to success in 2025 is understanding that Google's content requirements aren't just hurdles to overcome – they're opportunities to provide more value to your users. By thoughtfully integrating content with your tools or services, you can create a more comprehensive resource that satisfies both AdSense requirements and user needs.Remember, the goal isn't to compromise your site's primary purpose but to enhance it with valuable content that makes sense for your users and meets AdSense's quality standards.Additional ResourcesFor a deep dive into specific aspects of AdSense compliance, check out:The updated AdSense Program PoliciesGoogle's Publisher Content GuidelinesOur community's AdSense Implementation Guide

Published 18 days ago
0 likes
0 comments
30 watched
romanking

Hey guys! Been through AdSense hell this week and thought I'd share what happened - maybe it'll help someone else avoid the same headache.Quick background: I've been running three niche sites for about 6 years now. One in the tech space, one in home improvement, and a smaller one about coffee (yeah, I'm a coffee nerd 😅). All three were doing decent numbers, pulling in around $2-3K monthly combined with AdSense.Then boom - last Thursday, I get this lovely message saying my account is "temporarily suspended" with three holds on the payment account. The kicker? They're asking me to verify I don't live in a country I've never even visited! After 6 years of smooth sailing, this comes out of nowhere.Current situation:Payment profile suspendedCan't receive any payoutsService limited but still technically "active"Have to verify my location (again!)I did get my last payment through a few days ago (thank god!), but now no ads are being served at all. Pretty nerve-wracking watching that revenue counter sit at zero.Question for you all: Has anyone else dealt with this verification nonsense lately? I'm seeing more cases pop up since the November core update.Also, while I'm waiting this out - any recommendations for backup ad networks? Not jumping ship yet, but always good to have a Plan B!P.S. Really frustrated with Google's "we'll get back to you when we feel like it" approach. At least give us a clear timeline! 🤷‍♂️What's your experience with AdSense suspensions? Let's share some war stories and maybe help each other out.

techeagle replied 21 days ago
@romanking listen up - since your sites have been running for 6 years with clean AdSense history, you've got more ammunition than you think. Pull together ALL your data. AdSense analytics, Google Analytics historical stuff, complete payment records, domain registration history. Build your case.I hate to say this but I wouldn't trust/rely on AdSense as your only monetization source anymore. Not after seeing the mess they've been creating lately. Look into getting a programmatic partner lined up. I know devs who can help implement if you don't want to waste engineering time on this.Seen a few people mention Mediavine. Not shilling for them, but worth checking out while you're dealing with this BS.Sorry this happened/sucks. Really shady how they pull this kind of garbage right before EOY when everyone's trying to catch their final payments. Classic Google timing.
Published 21 days ago
2 likes
5 comments
51 watched
RecruitHub

Look, I've been on both sides of this - hiring and getting hired on Upwork. And I gotta tell you, these AI-generated cover letters are becoming a huge pet peeve when I'm reviewing applications.Here's the thing: I can spot an AI-written cover letter from a mile away. That perfectly polished, soulless writing style? Yeah, it's like getting a form letter from a robot trying really hard to sound human. And when I see one on Upwork, I usually move it straight to the "probably not" pile.Why? Because:It screams "I couldn't be bothered to write my own thoughts"In my experience, these applications are way more likely to be from people who aren't actually qualified or serious about the jobIt's just... impersonal. Like, I want to hire a human, not ChatGPTNow, I'm not anti-AI. Using AI to polish your grammar or structure? Totally fine. Having it help you organize your thoughts? Go for it. But letting it write the whole thing? That's where I draw the line.The best cover letters I've seen are slightly imperfect but genuine. They show personality, directly address the job requirements, and actually sound like they were written by someone who read the job posting.What's your take on this? Are you using AI for your Upwork proposals? And if you're hiring, can you actually tell the difference?

markus replied a month ago
Ugh, THIS. 👆Listen, it's gotten so bad that almost all my Upwork job postings now get flooded with these AI-written proposals that all sound exactly the same. And the worst part? Some folks don't even bother to check what the AI spits out - I had someone apply recently where their cover letter was responding to requirements I didn't even list!Here's my automatic reject list:Proposals that start with that overly formal "I am writing to express my keen interest..." (Just talk like a normal person!)Those that somehow manage to be both extremely detailed and completely vague at the same timeCover letters that read like they were written by a corporate robot trying to sound humanAnd don't even get me started on Upwork's AI evaluation tool - it actually FAVORS these AI-written proposals! I turned that garbage off real quick.Look, I get it. You're trying to be efficient, save time, whatever. But here's the thing - I'm not looking for perfection. I'm looking for someone who actually read my job post and took 5 minutes to write their own thoughts about it. Even if it's not perfectly polished.Pro tip: If you're going to use AI (which honestly, fine for grammar and structure), at least read what it wrote and make it sound like YOU. Because right now, I'm getting the same cover letter 20 times with slightly different words, and it's driving me nuts.NOTE: And no, starting your cover letter with "BANANA" because ChatGPT told you to doesn't make it better. Yes, this actually happened. 🤦‍♂️
Published a month ago
1 likes
1 comments
49 watched
StartupSage

I created my account around 3 weeks back, and honestly the whole thing slipped my mind since I got busy with other stuff - until this morning when I got notified about my first order! It's not a huge one, but considering I don't have any reviews yet or even samples in my portfolio, it feels like a real milestone.I'm curious whether I should expect orders to come in randomly here and there, or if any of you noticed your orders picking up after finishing that first one successfully? My current game plan is to knock this order out of the park, hopefully score that 5-star review, and then build out my gigs with some sample work.

codie replied a month ago
Congratulations on landing your first order! That's definitely a milestone worth celebrating, especially without any reviews or portfolio samples yet. I totally get that mix of excitement and uncertainty you're feeling right now.I actually had a similar experience when I started on Fiverr. After my first successful order and 5-star review, things really started picking up momentum. Before I knew it, I had reached Level Two seller status, and even now, despite not being super active on the platform or doing it full-time, I still get frequent order requests. It's pretty amazing how that first positive review can kickstart things.Your game plan sounds spot-on. Focusing on absolutely nailing this first order is crucial - that initial review can make a big difference in how potential clients perceive you. I'd definitely prioritize delivering exceptional work over rushing to get it done. Then, yes, adding some solid sample work to your portfolio will help give future clients a better idea of what you can do.Just keep in mind that even with a great first review, the order flow might still be a bit unpredictable at first. Fiverr's algorithm seems to favour sellers with more reviews and consistent work, so building up that momentum can take a little time. Don't get discouraged if there are some quiet periods - that's pretty normal in the beginning.
Published a month ago
0 likes
1 comments
37 watched
saffee.5217

Maximize Your Fiverr Success with Essential Tools from FiverrAnalyticsIf you're looking to stand out on Fiverr and attract more clients, using the right tools can make all the difference. FiverrAnalytics offers a suite of powerful tools designed to help you succeed on the platform—whether it’s tracking gig rank, optimizing keywords, or managing order completion rates. Below, we’ll guide you through each of our tools, complete with links, so you can start improving your Fiverr performance today.1. Fiverr Gig Rank CheckerChecking your gig’s rank is one of the most crucial steps to monitor how your gig is performing on Fiverr. Fiverr Gig Rank Checker allows you to quickly and accurately see where your gig stands on Fiverr’s search results for specific keywords.Visit Now: https://fiverranalytics.com/fiverr-gig-rank-checker2. Fiverr Keyword AnalyticsFinding the right keywords is essential for ranking on Fiverr. Fiverr Keyword Analytics tool helps you identify high-performing keywords with minimal competition, enabling you to optimize your gig descriptions and titles effectively.Visit Now: https://fiverranalytics.com/fiverr-keyword-analytics3. Fiverr Order Completion Rate CalculatorOrder completion rate is a critical factor in Fiverr’s ranking algorithm. Fiverr Order Completion Rate Calculator allows you to calculate your completion rate accurately, helping you maintain a high rating and avoid cancellations.Visit Now: https://fiverranalytics.com/fiverr-order-completion-rate-calculator4. Fiverr Keyword Generator ToolStruggling to find the best keywords for your gig? The Fiverr Keyword Generator Tool makes it easy to discover keywords that resonate with Fiverr’s search engine and potential buyers.Visit Now: https://fiverranalytics.com/fiverr-keyword-generatorConclusionWith FiverrAnalytics, you have a comprehensive toolkit to manage every aspect of your Fiverr gig. From tracking ranks to finding the right keywords, each tool is designed to make your freelancing journey smoother and more profitable. Explore the links above, start using these tools, and see the difference they can make in boosting your Fiverr success!Visit Now: https://fiverranalytics.com/     

somesh replied 18 days ago
Did you "Boast" your fiverr gig success? 😂😂
Published 2 months ago
1 likes
1 comments
47 watched
zakwanureed

Hey everyone! 👋Let’s talk about something super exciting—how AI is completely transforming web development. Whether you're a pro dev or just starting out, AI is becoming one of the biggest tools in our toolbox. Here’s how it’s making waves:1. Writing Code is Faster Than EverTools like GitHub Copilot or ChatGPT can now generate code snippets, help debug issues, and even create entire components for you. It’s like having a pair programming buddy who never takes a break. Does this mean AI replaces us? Nah—it’s just a really smart assistant!2. Personalized Websites on the FlyEver visited a site that feels like it “just gets you”? That’s AI in action. It analyzes user behavior and adapts the site content, layout, and recommendations in real-time. Think Netflix recommendations, but for every website.3. Smarter Testing and DebuggingGone are the days of manually finding that one annoying bug (okay, maybe not completely gone). AI-powered tools can predict where issues might pop up and run smarter tests for smoother deployments. Less stress, more success.4. AI for SEO and ContentIf you’re juggling content creation alongside development, AI’s got your back. Tools like Jasper and SurferSEO help generate content and optimize it for search engines, so your projects not only look good but also rank higher.5. Chatbots Done RightAI chatbots are getting scary good. They don’t just give scripted answers anymore—they adapt and respond almost like a human. Adding an AI bot to your site is now a no-brainer for better customer engagement.

Published 2 months ago
1 likes
0 comments
53 watched
jackreece02

I'm quite new to html and css and I'm having an issue with a label not appearing before an input. I've done the first set of lessons and am now on the certification project which is to make a survey form of my choosing. I have a few labels already which are appearing fine before the inputs they're id'ed to which is why I'm confused as to why my new label isn't showing now? any help is appreciated and as I've said I'm new to this so please go easy lol I'll paste my code below<form id="survey-form"><fieldset id="personal-details"><label id="name-label" for="name">Enter Your First Name Here <input id="name" type="text" placeholder="John/Jane Doe" required /><label id="email-label" for="email">Enter Your Email Here<input id="email" type="email" placeholder="[email protected]" required /><label id="number-label" for="number">Enter Your Number Here <input id="number" type="number" placeholder="07123456789" required /><label id="activision-id-label" for="activision-id">Enter Your Activision ID Here <input id="activision-id" required /></fieldset><fieldset id="map-preferences"><label id="dropdown1" for="favourite-core-map">What was your favourite Core map<select id="favourite-core-map" for="favourite-core-map" required><option value="">(Select one) </option><option value="1">Derelict</option><option value="2">Scud</option><option value="3">Skyline</option><option value="4">Rewind</option></select><label id="dropdown2" for="least-favourite-core-map">What was your least favourite Core map<select id="least-favourite-core-map" name="least-favourite-core-map"><option value="">(Select one) </option><option value="1">Derelict</option><option value="2">Scud</option><option value="3">Skyline</option><option value="4">Rewind</option><label id="reason" for="reason" name="reason">Tell us why these maps were your favourite and least favourite maps <input id="reason" type="text"></fieldset></form>

codie replied 4 months ago
It looks like the issue with your labels not appearing is due to missing closing </label> tags. In HTML, each <label> should be properly closed.
Published 5 months ago
1 likes
1 comments
102 watched
kovacs.bence95

Hello! This code works really well but not able to choose what to display, In order view and in email it displays extra_product_field but i want to display only 'Product'. It have a costum text option in email too but not working, I try everything but it looks like im too beginner for this :( // Display custom field on single product page function d_extra_product_field(){ $value = isset( $_POST['extra_product_field'] ) ? sanitize_text_field( $_POST['extra_product_field'] ) : ''; printf( '<div><label>%s</label><br><textarea name="extra_product_field" value="%s"></textarea></div>', __( 'Enter your custom text' ), esc_attr( $value ) ); } add_action( 'woocommerce_after_add_to_cart_button', 'd_extra_product_field', 9 ); // validate when add to cart function d_extra_field_validation($passed, $product_id, $qty){ if( isset( $_POST['extra_product_field'] ) && sanitize_text_field( $_POST['extra_product_field'] ) == '' ){ $product = wc_get_product( $product_id ); wc_add_notice( sprintf( __( '%s cannot be added to the cart until you enter some text.' ), $product->get_title() ), 'error' ); return false; } return $passed; } add_filter( 'woocommerce_add_to_cart_validation', 'd_extra_field_validation', 10, 3 ); // add custom field data in to cart function d_add_cart_item_data( $cart_item, $product_id ){ if( isset( $_POST['extra_product_field'] ) ) { $cart_item['extra_product_field'] = sanitize_text_field( $_POST['extra_product_field'] ); } return $cart_item; } add_filter( 'woocommerce_add_cart_item_data', 'd_add_cart_item_data', 10, 2 ); // load data from session function d_get_cart_data_f_session( $cart_item, $values ) { if ( isset( $values['extra_product_field'] ) ){ $cart_item['extra_product_field'] = $values['extra_product_field']; } return $cart_item; } add_filter( 'woocommerce_get_cart_item_from_session', 'd_get_cart_data_f_session', 20, 2 ); //add meta to order function d_add_order_meta( $item_id, $values ) { if ( ! empty( $values['extra_product_field'] ) ) { woocommerce_add_order_item_meta( $item_id, 'extra_product_field', $values['extra_product_field'] ); } } add_action( 'woocommerce_add_order_item_meta', 'd_add_order_meta', 10, 2 ); // display data in cart function d_get_itemdata( $other_data, $cart_item ) { if ( isset( $cart_item['extra_product_field'] ) ){ $other_data[] = array( 'name' => __( 'Your extra field text' ), 'value' => sanitize_text_field( $cart_item['extra_product_field'] ) ); } return $other_data; } add_filter( 'woocommerce_get_item_data', 'd_get_itemdata', 10, 2 ); // display custom field data in order view function d_dis_metadata_order( $cart_item, $order_item ){ if( isset( $order_item['extra_product_field'] ) ){ $cart_item_meta['extra_product_field'] = $order_item['extra_product_field']; } return $cart_item; } add_filter( 'woocommerce_order_item_product', 'd_dis_metadata_order', 10, 2 ); // add field data in email function d_order_email_data( $fields ) { $fields['extra_product_field'] = __( 'Your extra field text' ); return $fields; } add_filter('woocommerce_email_order_meta_fields', 'd_order_email_data'); // again order function d_order_again_meta_data( $cart_item, $order_item, $order ){ if( isset( $order_item['extra_product_field'] ) ){ $cart_item_meta['extra_product_field'] = $order_item['extra_product_field']; } return $cart_item; } add_filter( 'woocommerce_order_again_cart_item_data', 'd_order_again_meta_data', 10, 3 );

Published 5 months ago
0 likes
0 comments
120 watched
anupamdesign

`my modal form is not working and not redirected to mailbox.my html code<html><body><div id="myModal_pickup" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h2 class="modal-title">Schedule Pickup</h2> </div> <div class="modal-body"> <p id="error_message_pickup"></p> <form id="regiration_form" class="schedule_pickup_form" action="booking_contactform.php"> <fieldset> <div class="form-group"> <input type="text" class="form-control" name="pickname" id="PickName" placeholder="Name"> </div> <div class="form-group"> <textarea class="form-control" name="pickaddress" placeholder="Pickup Address" id="PickAddress"></textarea> </div> <div class="form-group"> <input type="tel" class="form-control" id="PickNumber" name="picknumber" placeholder="Contact Number" pattern="[0-9]{3}-[0-9]{2}-[0-9]{3}"> </div> <div class="form-group"> <input type="email" class="form-control" id="PickEmail" name="pickemail" placeholder="Email"> </div> <input type="button" name="next" class="next btn pickup_btn" value="Next"> </fieldset> <fieldset> <div class="form-group"> <input type="date" class="form-control" name="pickdate" id="PickDate" placeholder=""> </div> <div class="form-group"> <label for="lName">Time Slot</label><br> <input type="radio" name="picktimeslot" id="pick1" value="10:00am - 1:00 pm" checked> 10:00am - 1:00 pm <input type="radio" name="picktimeslot" id="pick2" value="1:00pm - 4:00pm"> 1:00pm - 4:00pm <input type="radio" name="picktimeslot" id="pick3" value="4:00pm - 7:00pm"> 4:00pm - 7:00pm </div> <input type="button" name="previous" class="previous btn btn-default " value="Previous"> <input type="submit" name="submit_book" class="submit btn pickup_btn" value="Submit" onclick="validateSchedulePickup()" id="submit_data"> </fieldset> </form></body></html>my modal css<style>#myModal_pickup .modal-body{ text-align:left; padding:10px 30px 40px 30px; } .previous{ background-color: transparent; border: 2px solid #c5a759; color: #c5a759; font-size:14px; font-family: 'd-din_expregular'; border-radius:0px; padding:4px 15px; transition: all 0.3s ease-in-out; } .previous:hover{ background-color:#c5a759; border:2px solid #c5a759; color:#fff; } .previous:focus{ outline:none; } .pickup_btn{ transition: all 0.3s ease-in-out; background-color:#c5a759; border:2px solid #c5a759; color:#fff; font-size:14px; border-radius:0px; padding:4px 15px; font-family: 'd-din_expregular'; } .pickup_btn:hover{ background-color: transparent; border: 2px solid #c5a759; color: #c5a759; } .pickup_btn:focus{ outline:none; } .error{color: #f00;}</style>my javascript<script> function validateSchedulePickup() { event.preventDefault(); var pickname = $("#PickName").val(); var pickaddress = $("#PickAddress").val(); var pickemail = $("#PickEmail").val(); var pickdate = $("#PickDate").val(); var picknumber = $("#PickNumber").val(); var picktimeslot = $("input[name='picktimeslot']:checked").val(); $(".error").remove(); if (pickname.length < 2) { $('#PickName').after('<span class="error">Name is required</span>'); } if (pickaddress.length < 10) { $('#PickAddress').after('<span class="error">Address is required</span>'); } if (pickdate.length < 1) { $('#PickDate').after('<span class="error">Date is required</span>'); } if (picknumber.length < 1) { $('#PickNumber').after('<span class="error">Phone number is required</span>'); } else { var regNu = /([0-9]{10})|(\([0-9]{3}\)\s+[0-9]{3}\-[0-9]{4})/; var validNumber = regNu.test(picknumber); if (!validNumber) { $('#PickNumber').after('<span class="error">Enter a valid Number</span>'); } } if (pickemail.length < 1) { $('#Pickemail').after('<span class="error">Email is required</span>'); } else { var regEx = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i; var validEmail = regEx.test(pickemail); if (!validEmail) { $('#Pickemail').after('<span class="error">Enter a valid email</span>'); } } if(pickname == '' || pickaddress == '' || pickemail == '' || picknumber == '' || pickdate == '' || picktimeslot == '') { $('#error_message_pickup').html("<span class='error'>All Detail is required</span>"); } else { $.ajax({ url:"booking_contactform.php", method:"POST", data:{pickname:pickname, pickaddress:pickaddress, picknumber:picknumber, pickemail:pickemail, pickdate:pickdate, picktimeslot:picktimeslot}, success:function(data){ $('#error_message_pickup').html("Thank you! for pickup request"); $("form").trigger("reset"); } }); event.preventDefault(); } return false;</script>here is my php code<?php if(isset($_POST['submit_book'])){`your text` $to = "[email protected]"; // this is your Email address $from = $_POST['email']; // this is the sender's Email address $pickname = $_POST['pickname']; $pickaddress = $_POST['pickaddress']; $picknumber = $_POST['picknumber']; $pickemail = $_POST['pickemail']; $pickdate = $_POST['pickdate']; $picktimeslot = $_POST['picktimeslot']; $book_subject = "Booking submission"; // $message = " Name : ".$name."\n\n"." Email : ".$email."\n\n"." Phone : ".$phone."\n\n"." Message : ".$contet." wrote the following: "."\n\n".$_POST['message'];$message = $pickname."\n\n".$pickaddress."\n\n".$picknumber."\n\n".$pickemail."\n\n".$pickdate."\n\n".$picktimeslot."\n\n". $_POST['message']; $headers = "From:" . $from; mail($to,$book_subject,$message,$headers); header('Location: index.php'); }?>

Published 5 months ago
1 likes
0 comments
115 watched