Laravel 8 Image With Grayscale Example

Hi Guys,

Today,I will learn you how to use image with grayscale in laravel 8. We will show example of image with grayscale in laravel 8. Spatie package is Image manipulation doesn't have to be hard. This PHP package makes it super easy to apply common manipulations to images like resizing, cropping and adding effects.

Here, I will give you full example for simply image with grayscale using Laravel 8 as bellow.

Step 1 : Install Laravel 8 Application

we are going from scratch, So we require to get fresh Laravel application using bellow command, So open your terminal OR command prompt and run bellow command:

composer create-project --prefer-dist laravel/laravel blog
Step 2 : Install Spatie Package

In this step, i will install spatie package for bellow command.

composer require spatie/image
Step 3: Create Routes

In next step, we will add new two routes in web.php file. One route for generate image upload form and another for post method So let's simply create both route as bellow listed:

<?php
  
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ImageWithgrayscaleController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/image-grayscale', [ImageWithgrayscaleController::class, 'index'])->name('image.grayscale.index');
Route::post('/image-grayscale/store', [ImageWithgrayscaleController::class, 'store'])->name('image.grayscale.store');
Step 4: Create Controller

here this step now we should create new controller as ImageWithgrayscaleController,So run bellow command for generate new controller

php artisan make:controller ImageWithgrayscaleController
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Image;

class ImageWithgrayscaleController extends Controller
{
    public function index()
    {
      return view('imageWithgrayscale');
    }

    public function store(Request $request)
    {
      $input = $request->all();

      $this->validate($request, [
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);

        $image = $input['image'];
        
        $input['image'] = time().'.'.$image->getClientOriginalExtension();

        $img = Image::make($image->getRealPath());

        $img->grayscale()->save(public_path('/images').'/'.$input['image']);

        return redirect()->back()->with('success','Image Uploaded Successfully')->with('image',$input['image']);
    }
}
Step 5: Create Blade File

At last step we need to create imageWithgrayscale.blade.php file. So copy bellow and put on that file.

<!DOCTYPE html>
<html>
<head>
  <title>Grayscale Image Uploading Demo</title>
</head>
<body>
<div class="container">
  <div class="row mt-5">
    <div class="col-md-6 offset-md-3 mb-3">
      <h2>Grayscale Image Uploading Demo </h2>

      @if (count($errors) > 0)
        <div class="alert alert-danger">
          <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
          </ul>
        </div>
      @endif

      @if ($message = Session::get('success'))
        <div class="alert alert-success alert-block">
          <button type="button" class="close" data-dismiss="alert">×</button>  
            <strong>{{ $message }}</strong>
        </div>
        <div class="row">
          <div class="col-md-12">
            <strong>Grayscale Image:</strong><br/>
            <img src="/images/{{ Session::get('image') }}" width="500px" />
          </div>
        </div>
      @endif
      {!! Form::open(array('route' => 'image.grayscale.store','enctype' => 'multipart/form-data')) !!}
        <div class="row">
          <div class="col-md-12">
            <div class="form-group">
              <strong>Image:</strong>
              {!! Form::file('image', array('class' => 'form-control image')) !!}
            </div>
          </div>
          <div class="col-md-12 text-center">
            <button type="submit" class="btn btn-success">Upload Image</button>
          </div>
        </div>
      {!! Form::close() !!}
    </div>
  </div> 
</div>
</body>
</html>

Now we are ready to run our custom validation rules example so run bellow command for quick run:

php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/image-grayscale

It will help you....

Laravel 8 Send Mail using Mailgun Tutorial

Laravel 8 Send Mail using Mailgun Tutorial

Hi Dev,

In this blog,I will learn you how to send mail using mailgun in laravel 8.we will show setp by step send mail using mailgun example in laravel 8.Mailgun is very popular API to send email from website. It is very fast to send mail and also it track the mail. Tracking email is very important feature of mailgun api and you can also see how much user open your mail, click on your mail too. Mailgun send mail like work gun.

I would like to show you how to setting of mailgun in our laravel 8 application. In this example you can learn to send simple mail using mailgun api. If you are use mailgun for sending email then you can save loading time and you can get mail fast.

Step 1: .env

First we will add configration on mail. i added my gmail account configration. so first open .env file and bellow code:

MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=yourUserName
MAIL_PASSWORD=yourPassword
MAIL_ENCRYPTION=tls
Step 2: Get Domain and Secret

Now, I need to add secret and domain of mailgun api configration. So first create new account in mailgun.com SignUp if you don't have before. After registeration active your mailgun account and click on Domails and click on Add New Domail button. then you can see bellow screen.

Laravel 8 Send Mail using Mailgun Tutorial

Next add name you can see bellow screen and copy domain name and API Key from like bellow image.

Laravel 8 Send Mail using Mailgun Tutorial
Step 3: Services

Now you have to open services.php and add mailgun configration this way :

config/services.php
'mailgun' => array(
'domain' => 'your_domain',
'secret' => 'your_secret',
),
Step 4: Routes

Here we are ready to send mail for test so first create test route for email sending.

app/Http/routes.php
use App\Http\Controllers\MailGunController;
Route::get('/send-mail-using-mailgun', [MailGunController::class, 'index'])->name('send.mail.using.mailgun.index');
Step 5: Controllers

Next,We are add mail function in MailGunController.php file so add this way :

app/Http/Controllers/MailGunController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use Mail;

class MailGunController extends Controller
{
    public function index()
    {
    	$user = User::find(1)->toArray();

	    Mail::send('mailView', $user, function($message) use ($user) {
	        $message->to($user['email']);
	        $message->subject('Testing Mailgun');
	    });

	    dd('Mail Send Successfully');
    }
}

At last create email template file for send mail so let's create mailEvent.blade.php file in emials folder.

Step 6: Blade resources/views/emails/mailEvent.blade.php
Hi, I am from itwebtuts.blogspot.com from mailgun testing.

Now we are ready to run our send mail using mailgun example with laravel 8 so run bellow command for quick run:

php artisan serve

Now you can open bellow URL on your browser:

localhost:8000/send-mail-using-mailgun

It will help you...

Flutter Radio Button Tutorial Example

Flutter Radio Button Tutorial Example
Hi Dev,

Today, I will learn you how to create radio button in flutter. You can easily create radio button in flutter.First i will import package:flutter/material.dart, after I will make radio button using Container in Radioin flutter.

Here, I will give you full example for simply display radio button using flutter as bellow.

Example- Complete flutter radio button source code for main.dart file

In this step, You will open main.dart and Create a Container widget then put the radio button widget inside it.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Itwebtuts',
      theme: ThemeData(
        primarySwatch: Colors.red,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Welcome to Itwebtuts'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
  State createState() => State();
}



class _State extends State {
  TextEditingController nameController = TextEditingController();
  int _radioValue = 0;

  void _handleRadioValueChange(int value) {
    setState(() {
      _radioValue = value;

      switch (_radioValue) {
        case 0:
          break;
        case 1:
          break;
        case 2:
          break;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Welcome to Itwebtuts'),
        ),
        body: Padding(

            padding: EdgeInsets.all(10),

            child: ListView(
              children: [
                Container(
                    alignment: Alignment.center,
                    padding: EdgeInsets.all(10),
                    margin: const EdgeInsets.only(top: 50),
                    child: Text(
                      'Radio Button',
                      style: TextStyle(
                          color: Colors.red,
                          fontWeight: FontWeight.w500,
                          fontSize: 30),
                    )),
                new Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    new Radio(
                      value: 0,
                      groupValue: _radioValue,
                      onChanged: _handleRadioValueChange,
                    ),
                    new Text(
                      'First',
                      style: new TextStyle(fontSize: 16.0),
                    ),
                    new Radio(
                      value: 1,
                      groupValue: _radioValue,
                      onChanged: _handleRadioValueChange,
                    ),
                    new Text(
                      'Second',
                      style: new TextStyle(
                        fontSize: 16.0,
                      ),
                    ),
                    new Radio(
                      value: 2,
                      groupValue: _radioValue,
                      onChanged: _handleRadioValueChange,
                    ),
                    new Text(
                      'Last',
                      style: new TextStyle(fontSize: 16.0),
                    ),
                  ],
                ),
                Container(
                    height: 50,
                    padding: EdgeInsets.fromLTRB(10, 0, 10, 0),
                    child: RaisedButton(
                      textColor: Colors.white,
                      color: Colors.red,
                      child: Text('Button'),
                      onPressed: () {
                        print(nameController.text);
                      },
                    )),
              ],
            )));
  }


}

It will help you..

Laravel 8 Custom Validation Rules Tutorial

Laravel 8 Custom Validation Rules Tutorial

Hi Dev,

Today,I will learn you how to use custom validation rules in laravel 8. We will show laravel 8 custom validation rules example you can easliy create custom validation rules in laravel 8.Validation is a primary requirement of every project, without validation we can not release successful application or website. Because if you haven't implemented validation then you get wrong information from use input. Laravel provide there are several default validation rules like required, max, min, array, unique, digits, in, boolean, before, after etc. We can simple use those validation rules in laravel 8 application. But if you require to create your own custom validation like given value should be in uppercase or lowercase etc as we require.

Now, we will simple represent how to make custom validator rules in laravel 8 application and it is very simple, so you have to just follow bellow step, make sure you can create only for laravel 8

we make example from scratch. In this example i take number text field and you can just enter even number, If you enter odd number then you got validation error.

Step 1: Create Custom Validation Rule

In first step, we will create custom validation rules by run following command. Bellow command through you can create Validation rules file and we can write a logic on that file. So let's run bellow command.

php artisan make:rule CheckPriceRule

Now, after successfully run above command, you will found new "rules" folder in app directory. In rules folder you will also found CheckPriceRule.php file. We have to simple write logic there, if you enter even number then return true otherwise don't do anything.

So, you should have file like as bellow:

app/Rules/CheckPriceRule.php
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class CheckPriceRule implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if ($value < 300) {
            return true;
        }
    }

    /**
     * Get the validation error messPrice.
     *
     * @return string
     */
    public function messPrice()
    {
        return 'The :attribute must be less than 300.';
    }
}
Step 2: Add Routes

Here, we need to add two routes for create form get method and another for post method. so open your routes/web.php file and add following route.

routes/web.php
<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\ImageResizeController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
use App\Http\Controllers\CustomValidationController;

//Custom Validation
Route::get('/custom-validation', [CustomValidationController::class, 'index'])->name('custom.validation.index');
Route::post('/custom-validation/store', [CustomValidationController::class, 'store'])->name('custom.validation.store');
Step 3: Create CustomValidationController

Here, now we should create new controller as CustomValidationController. So run bellow command and create new controller. bellow controller for create controller.

php artisan make:controller CustomValidationController

Next bellow command you will find new file in this path app/Http/Controllers/CustomValidationController.php.

In this controller will create seven methods by default as bellow methods:

  • 1)index()
  • 2)store()

So, let's copy bellow code and put on CustomValidationController.php file.

app/Http/Controllers/CustomValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Rules\CheckPriceRule;

class CustomValidationController extends Controller
{
    public function index()
    {
    	return view('customValidation');
    }

    public function store(Request $request)
    {
    	$request->validate([
            'name' => 'required',
            'price' => [
                'required', 
                new CheckPriceRule()
            ]
        ]);

    	dd("continue...");
    }
}
Step 4: Create View File

In this last step, we have to create customValidation.blade.php file, in this file we will create form and display validation error so let's create customValidation.blade.php file and put bellow code:

resources/views/customValidation.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>Laravel 8 Custom Validation</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col-md-6 offset-3 mt-5">
            <div class="card mt-5">
                <div class="card-header text-center bg-info">
                    <h2 class="text-white"> <strong>Custom Validation</strong></h2>
                </div>
                <div class="card-body">
                    @if (count($errors) > 0)
                        <ul class="alert alert-danger pl-5">
	                        @foreach($errors->all() as $error)
	                           <li>{{ $error }}</li> 
	                        @endforeach
                        </ul>
                    @endif
                    <form action="{{ route('custom.validation.store') }}" method="post">
                        @csrf
                        <div class="form-group">
                            <label>Name</label>
                            <input type="text" name="name" class="form-control">
                        </div>
                        <div class="form-group">
                            <label>Price</label>
                            <input type="text" name="price" class="form-control">
                        </div>
                        <div class="text-center">
                            <button class="btn btn-success"><i class="fa fa-floppy-o" aria-hidden="true"></i> Save </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>
Now we are ready to run our custom validation rules example so run bellow command for quick run:
php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/custom-validation

It will help you...

Jquery Email Autocomplete Example

Jquery Email Autocomplete Example
Hi Dev,

Today,I Will learn you how to implement email autocomplete in jquery.you can easliy create email autocomplete in jquery.email-autocomplete plugin through we can simple email autocomplete in our laravel,PHP, .net or etc project.

In this example i use bellow js and css

-jquery.js

-jquery.email-autocomplete.min.js

-bootstrap.min.css

Example
<!DOCTYPE html>
<html>
<head>
    <title>Jquery email autocomplete example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/email-autocomplete/0.1.3/jquery.email-autocomplete.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <style type="text/css">
        .eac-sugg {
          color: #ccc;
        }
        .m-1{
            margin: 10px;
        }
    </style>
</head>
<body class="bg-success">
    <div class="col-lg-10  m-1">
        <h1>Jquery Email Autocomplete Example-Nicesnippets.com</h1>
        <label>Email:</label>
        <input id="email" name="email" class="form-control" type="email" placeholder="Enter Email" / autocomplete="off">
    </div>
    <script type="text/javascript">
        $("#email").emailautocomplete({
          domains: [
            "nicesnippets.com",
            "gmail.com",
            "yahoo.com",
            "hotmail.com",
            "live.com",
            "facebook.com",
            "outlook.com",
            "gmx.com",
            "me.com",
            "laravel.com",
            "aol.com"]
        });
    </script>
</body>
</html>

It will help you...

React Native Modal Popup Tutorial

React Native Modal Popup Tutorial

Hi dev,

Today, I will learn you how to create modal popup in react native. You can easily create modal in react native. First i will import namespace Modal, after I will make modal using modalVisible method in react native.

Here, I will give you full example for simply display modal using react native as bellow.

Step 1 - Create project

In the first step Run the following command for create project.

expo init Modal 
Step 2 - App.js

In this step, You will open App.js file and put the code.

import React, { Component } from "react";
import { Alert,Modal,StyleSheet,Text,TouchableHighlight,View ,Header } from "react-native";

class App extends Component {
  state = {
    modalVisible: false
  };

  setModalVisible = (visible) => {
    this.setState({ modalVisible: visible });
  }

  render() {
    const { modalVisible } = this.state;
    return (
      <View style={styles.view}>
        <Text style={styles.header}>React Native Modal Popup Example  itwebtuts.com</Text>
        <Modal
          transparent={true}
          visible={modalVisible}
          onRequestClose={() => {
            Alert.alert("Modal has been closed.");
          }}
        >
          <View style={styles.view}>
            <View style={styles.modalView}>
              <Text style={styles.modalText}>Hii Friends!</Text>

              <TouchableHighlight
                style={{ ...styles.openButton, backgroundColor: "#2196F3" }}
                onPress={() => {
                  this.setModalVisible(!modalVisible);
                }}
              >
                <Text style={styles.textStyle}>Hide Modal</Text>
              </TouchableHighlight>
            </View>
          </View>
        </Modal>

        <TouchableHighlight
          style={styles.openButton}
          onPress={() => {
            this.setModalVisible(true);
          }}
        >
          <Text style={styles.textStyle}>Show Modal</Text>
        </TouchableHighlight>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  view: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    marginTop: 0
  },
  modalView: {
    margin: 30,
    backgroundColor: "white",
    borderRadius: 20,
    padding: 35,
    alignItems: "center",
    shadowColor: "#000",
    shadowOffset: {
      width: 0,
      height: 5
    },
    shadowOpacity: 0.25,
    shadowRadius: 3.84,
    elevation: 5
  },
  openButton: {
    backgroundColor: "#115454",
    borderRadius: 5,
    padding: 15,
    elevation: 2
  },
  textStyle: {
    color: "white",
    textAlign: "center",
  },
  modalText: {
    marginBottom: 15,
  },
  header:{
    textAlign: 'center',
    fontSize: 20,
    marginBottom: 50,
  }
});

export default App; 
Step 3 - Run project

In the last step run your project using bellow command.

npm start
It will help you..

Jquery Responsive Multi-Level Menu Tutorial

Jquery Responsive Multi-Level Menu Tutorial

Hi Dev

Today, I will learn you how to create jquery responsive multi-level menu example. I will make of responsive multi-level menu using jquery example. We will create jquery responsive multi-level menu using dlmenu.you can click menu list on to open submenu list.

Here, I will give you full example for simply display responsive multi-level menu using jquery example. as bellow.

Example
<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Multi-Level Menu Using Jquery Example</title>
    <link href="https://www.jqueryscript.net/css/jquerysctipttop.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="https://www.jqueryscript.net/demo/jQuery-Responsive-Multi-Level-Menu-Plugin-Dlmenu/css/default.css" />
    <link rel="stylesheet" type="text/css" href="https://www.jqueryscript.net/demo/jQuery-Responsive-Multi-Level-Menu-Plugin-Dlmenu/css/component.css"/>
    <script src="https://www.jqueryscript.net/demo/jQuery-Responsive-Multi-Level-Menu-Plugin-Dlmenu/js/modernizr.custom.js"></script>
</head>
<style type="text/css">
    .main-section ,.main,.column{
        margin:0px !important;
    }
</style>
<body>
<div class="container demo-1 main-section"> 
    <div class="main clearfix">
        <div class="column">
            <div id="dl-menu" class="dl-menuwrapper">
                <button>Open Menu</button>
                <ul class="dl-menu">
                    <li> <a href="#">Fashion</a>
                        <ul class="dl-submenu">
                            <li class="dl-back"><a href="#"> back</a></li>
                            <li> <a href="#">Men</a>
                                <ul class="dl-submenu">
                                    <li class="dl-back"><a href="#">back</a></li>
                                    <li><a href="#">Shirts</a></li>
                                    <li><a href="#">Jackets</a></li>
                                    <li><a href="#">Chinos & Trousers</a></li>
                                    <li><a href="#">Jeans</a></li>
                                    <li><a href="#">T-Shirts</a></li>
                                    <li><a href="#">Underwear</a></li>
                                </ul>
                            </li>
                            <li> <a href="#">Women</a>
                                <ul class="dl-submenu">
                                    <li class="dl-back"><a href="#">back</a></li>
                                    <li><a href="#">Jackets</a></li>
                                    <li><a href="#">Knits</a></li>
                                    <li><a href="#">Jeans</a></li>
                                    <li><a href="#">Dresses</a></li>
                                    <li><a href="#">Blouses</a></li>
                                    <li><a href="#">T-Shirts</a></li>
                                    <li><a href="#">Underwear</a></li>
                                </ul>
                            </li>
                            <li> <a href="#">Children</a>
                                <ul class="dl-submenu">
                                    <li class="dl-back"><a href="#">back</a></li>
                                    <li><a href="#">Boys</a></li>
                                    <li><a href="#">Girls</a></li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                    <li> <a href="#">Electronics</a>
                        <ul class="dl-submenu">
                            <li class="dl-back"><a href="#">back</a></li>
                            <li><a href="#">Camera & Photo</a></li>
                            <li><a href="#">TV & Home Cinema</a></li>
                            <li><a href="#">Phones</a></li>
                            <li><a href="#">PC & Video Games</a></li>
                        </ul>
                    </li>
                    <li> <a href="#">Furniture</a>
                        <ul class="dl-submenu">
                            <li class="dl-back"><a href="#">back</a></li>
                            <li> <a href="#">Living Room</a>
                                <ul class="dl-submenu">
                                    <li class="dl-back"><a href="#">back</a></li>
                                    <li><a href="#">Sofas & Loveseats</a></li>
                                    <li><a href="#">Coffee & Accent Tables</a></li>
                                    <li><a href="#">Chairs & Recliners</a></li>
                                    <li><a href="#">Bookshelves</a></li>
                                </ul>
                            </li>
                            <li> <a href="#">Bedroom</a>
                                <ul class="dl-submenu">
                                <li class="dl-back"><a href="#">back</a></li>
                                <li> <a href="#">Beds</a>
                                    <ul class="dl-submenu">
                                        <li class="dl-back"><a href="#">back</a></li>
                                        <li><a href="#">Upholstered Beds</a></li>
                                        <li><a href="#">Divans</a></li>
                                        <li><a href="#">Metal Beds</a></li>
                                        <li><a href="#">Storage Beds</a></li>
                                        <li><a href="#">Wooden Beds</a></li>
                                        <li><a href="#">Children's Beds</a></li>
                                    </ul>
                                </li>
                                <li><a href="#">Bedroom Sets</a></li>
                                <li><a href="#">Chests & Dressers</a></li>
                                </ul>
                            </li>
                            <li><a href="#">Home Office</a></li>
                            <li><a href="#">Dining & Bar</a></li>
                            <li><a href="#">Patio</a></li>
                        </ul>
                    </li>
                    <li> <a href="#">Jewelry & Watches</a>
                        <ul class="dl-submenu">
                            <li class="dl-back"><a href="#">back</a></li>
                            <li><a href="#">Fine Jewelry</a></li>
                            <li><a href="#">Fashion Jewelry</a></li>
                            <li><a href="#">Watches</a></li>
                            <li> <a href="#">Wedding Jewelry</a>
                                <ul class="dl-submenu">
                                    <li class="dl-back"><a href="#">back</a></li>
                                    <li><a href="#">Engagement Rings</a></li>
                                    <li><a href="#">Bridal Sets</a></li>
                                    <li><a href="#">Women's Wedding Bands</a></li>
                                    <li><a href="#">Men's Wedding Bands</a></li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="https://www.jqueryscript.net/demo/jQuery-Responsive-Multi-Level-Menu-Plugin-Dlmenu/js/jquery.dlmenu.js"></script> 
<script>
	$(function() {
		$('#dl-menu').dlmenu();
	});
</script>
</html>

It Will help you..

Laravel Queue Example Tutorial

Laravel Queue Example Tutorial

Hi Guys

Today, I will learn how to end email using queue in laravel. we will create email send using queue in this example.We will show how to use queue jobs in laravel from scratch.

When you send email for verification or send invoice then it load time to send mail because it is services. you see some process take time to load like email send, payment gateway etc.If you don't want to wait to user for send email or other process on loading server side process then you can use queue. because it's very fast and visitor will happy to see loading time.

In this example, I will very simple example to create queue with database driver for test email sending.You can definitely understand how to work queue and how it's easy. If you haven't used before then don't worry, here if from starch and very simple.

Here,I give you full example of Queue example step by step like create laravel project,mail,balde,job file etc. So you have to just follow few steps.

Step 1 : Install Laravel Application

we are going from scratch, So we require to get fresh Laravel application using bellow command, So open your terminal OR command prompt and run bellow command:

composer create-project --prefer-dist laravel/laravel blog
Step 2: Create Mail Setup

Now this step, We are going from scratch and in first step, we will create email for testing using Laravel Mail facade. So let's simple run bellow command

php artisan make:mail SendEmailTest
After you will have new folder "Mail" in app directory with SendEmailTest.php file. So let's simply copy bellow code and past on that file.
following path:/app/Mail/SendEmailTest.php
<?php
  
namespace App\Mail;
  
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
  
class SendEmailTest extends Mailable
{
    use Queueable, SerializesModels;
  
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
          
    }
  
    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.test');
    }
}

Now we require to create email view using blade file. So we will create simple view file and copy bellow code om following path.

following path:/resources/views/emails/test.blade.php
<!DOCTYPE html>
<html>
    <head>
    	<title>Laravel Queue Example Tutorial - itwebtuts.blogspot.com</title>
</head>
<body>
    <center>
        <h2>
            Laravel Queue Example Tutorial - itwebtuts.blogspot.com
        </h2>
    </center>
    <p>Hi, Sir</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
    quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
    consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
    cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
    proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
    <h5>Thank you Sir. :)</h5>
</body>
</html>
Here configuration of view file, we have to setup for email send, So let' set configuration in .env file:
following path: .env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xyz@gmail.com
MAIL_PASSWORD=123456
MAIL_ENCRYPTION=tls
Step 3: Configuration of Queue

Now In step, we will make configuration on queue driver so first of all, we will set queue driver "database". You can set as you want also we will define driver as redis too. So here define database driver on ".env" file:

following path: .env
QUEUE_CONNECTION=database

After that we need to generate migration and create tables for queue. So let's run bellow command for queue database tables:

Generate Migration:
php artisan queue:table
Run Migration:
php artisan migrate
Step 4: Create Queue Job

Here we will create queue job bey following command, this command will create queue job file with Queueable. So let's run bellow command:

php artisan make:job SendEmailJob

After you have SendEmailJob.php file in "Jobs" directory. So let's see that file and put bellow code on that file.

following path: /app/Jobs/SendEmailJob.php
<?php
  
namespace App\Jobs;
   
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use App\Mail\SendEmailTest;
use Mail;
   
class SendEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  
    protected $details;
  
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details = $details;
    }
   
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $email = new SendEmailTest();
        Mail::to($this->details['email'])->send($email);
    }
}
Step 5: Test Queue Job

Here In this step use and test created queue job, so let's simple create route with following code for testing created queue.

following path: /routes/web.php
Route::get('email-test', function(){
  
	$details['email'] = 'your_email@gmail.com';
  
    dispatch(new App\Jobs\SendEmailJob($details));
  
    dd('done');
});

After, you can watch your queue process using laravel queue command, so let's run bellow command:

php artisan queue:listen

Now we are ready to run our example so run bellow command for quick run:

php artisan serve

Now you can open bellow URL on your browser:

http://localhost:8000/email-test

It will help you...

PHP Crop Image Before Upload using Cropper JS Example

PHP Crop Image Before Upload using Cropper JS Example

Hi Guys,

Today, you will give Php cropper js example. this example will help you Php crop image before upload. This tutorial will give you simple example of crop image using cropper.js Php. you will learn Php crop image before upload cropper.js. Let's see bellow example cropper js Php example.

Cropper.js is an easy to use JavaScript/jQuery plugin for image cropping with support of live previews and custom aspect ratio.this plugin provide features move,zoom,rotate,Fully responsive and mobile-friendly.

We will use model view in example. model display to upload image and crop image preview.follow bellow step example.

Example :

index.html

<!DOCTYPE html>
<html>
<head>
        <title>PHP Crop Image Before Upload using Cropper JS</title>
        <meta name="_token" content="{{ csrf_token() }}">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.min.css" crossorigin="anonymous" />
        <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha256-WqU1JavFxSAMcLP2WIOI+GB2zWmShMI82mTpLDcqFUg=" crossorigin="anonymous"></script>
        <link rel="stylesheet"  href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.css" integrity="sha256-jKV9n9bkk/CTP8zbtEtnKaKf+ehRovOYeKoyfthwbC8=" crossorigin="anonymous" />
        <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.js" integrity="sha256-CgvH7sz3tHhkiVKh05kSUgG97YtzYNnWt6OXcmYzqHY=" crossorigin="anonymous"></script>
    </head>
    <style type="text/css">
    img {
      display: block;
      max-width: 100%;
    }
    .preview {
      overflow: hidden;
      width: 160px; 
      height: 160px;
      margin: 10px;
      border: 1px solid red;
    }
    .modal-lg{
      max-width: 1000px !important;
    }
    </style>
    <body>
    <div class="container mt-5">
        <h2>PHP Crop Image Before Upload using Cropper JS - MyWebtuts.com</h2>
        <form method="post">
        <div class="custom-file">
        <input type="file" class="custom-file-input image" id="customFile" name="image">
        <label class="custom-file-label" for="customFile">Choose Images</label>
      </div>
        </form>
    </div>

    <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="modalLabel">PHP Crop Image Before Upload using Cropper JS - MyWebtuts.com</h5>
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">×</span>
            </button>
          </div>
          <div class="modal-body">
            <div class="img-container">
                <div class="row">
                    <div class="col-md-8">
                        <img id="image" src="https://avatars0.githubusercontent.com/u/3456749">
                    </div>
                    <div class="col-md-4">
                        <div class="preview"></div>
                    </div>
                </div>
            </div>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
            <button type="button" class="btn btn-primary" id="crop">Crop</button>
          </div>
        </div>
      </div>
    </div>

    </div>
    </div>
    <script>

    // Add the following code if you want the name of the file appear on select
    $(".custom-file-input").on("change", function() {
      var fileName = $(this).val().split("\\").pop();
      $(this).siblings(".custom-file-label").addClass("selected").html(fileName);
    });

    var $modal = $('#modal');
    var image = document.getElementById('image');
    var cropper;
      
    $("body").on("change", ".image", function(e){
        var files = e.target.files;
        var done = function (url) {
          image.src = url;
          $modal.modal('show');
        };
        var reader;
        var file;
        var url;

        if (files && files.length > 0) {
          file = files[0];

          if (URL) {
            done(URL.createObjectURL(file));
          } else if (FileReader) {
            reader = new FileReader();
            reader.onload = function (e) {
              done(reader.result);
            };
            reader.readAsDataURL(file);
          }
        }
    });

    $modal.on('shown.bs.modal', function () {
        cropper = new Cropper(image, {
        aspectRatio: 1,
        viewMode: 3,
        preview: '.preview'
        });
    }).on('hidden.bs.modal', function () {
       cropper.destroy();
       cropper = null;
    });

    $("#crop").click(function(){
        canvas = cropper.getCroppedCanvas({
          width: 160,
          height: 160,
        });

        canvas.toBlob(function(blob) {
            url = URL.createObjectURL(blob);
            var reader = new FileReader();
             reader.readAsDataURL(blob); 
             reader.onloadend = function() {
                var base64data = reader.result;  
                
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: "upload.php",
                    data: {image: base64data},
                    success: function(data){
                        console.log(data);
                        $modal.modal('hide');
                        alert("success upload image");
                    }
                  });
             }
        });
    })

    </script>
    </body>
    </html>

upload.php

<?php

    $folderPath = 'uploads/';

    $image_parts = explode(";base64,", $_POST['image']);
    $image_type_aux = explode("image/", $image_parts[0]);
    $image_type = $image_type_aux[1];
    $image_base64 = base64_decode($image_parts[1]);
    $file = $folderPath . uniqid() . '.png';

    file_put_contents($file, $image_base64);

    echo json_encode(["image uploaded successfully."]);

?>

You will create to upload folder in root directory

I will help you..

PHP Mysql CRUD Operation Example

CRUD(Create, Read, Update, and Delete)

Hi Guys,

Today, In this tutorial you'll give how to build a CRUD application with PHP and MySQL.

What is CRUD

CRUD(Create, Read, Update, and Delete) is an acronym for Create, Read, Update, and Delete. CRUD operations are simply data manipulation for database.In this tutorial we'll create a simple PHP application to perform all these operations on a MySQL database table at one place.

Creating the Database Table

Execute the following SQL query to create a table named users inside your MySQL database. We will use this table for all of our future operations.

CREATE TABLE users (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    fullname VARCHAR(100) NOT NULL,
    email VARCHAR(255) NOT NULL,
    salary INT(10) NOT NULL
);

Creating the Config File

Database Configuration config.php
<?php

    /* Database credentials. Assuming you are running MySQL
    server with default setting (user 'root' with no password) */
    define('DB_SERVER', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', 'root');
    define('DB_NAME', 'php_curd');
     
    /* Attempt to connect to MySQL database */
    $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
     
    // Check connection
    if($link === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }

?>

Create a file named "index.php" and put the following code in it:

index.php
    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script>
        $(document).ready(function(){
            $('[data-toggle="tooltip"]').tooltip();   
        });
    </script>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <div class="mt-5 mb-3 clearfix">
                    <h2 class="pull-left">users Details</h2>
                    <a href="create.php" class="btn btn-success pull-right"><i class="fa fa-plus"></i></a>
                </div>
                <?php
                // Include config file
                require_once "config.php";
                
                // Attempt select query execution
                $sql = "SELECT * FROM users";
                if($result = mysqli_query($link, $sql)){
                    if(mysqli_num_rows($result) > 0){
                        echo '<table class="table table-bordered table-striped">';
                            echo "<thead>";
                                echo "<tr class='bg-dark text-white'>";
                                    echo "<th>#</th>";
                                    echo "<th>FullName</th>";
                                    echo "<th>Email</th>";
                                    echo "<th>Salary</th>";
                                    echo "<th width='22%'>Action</th>";
                                echo "</tr>";
                            echo "</thead>";
                            echo "<tbody>";
                            while($row = mysqli_fetch_array($result)){
                                echo "<tr>";
                                    echo "<td>" . $row['id'] . "</td>";
                                    echo "<td>" . $row['fullname'] . "</td>";
                                    echo "<td>" . $row['email'] . "</td>";
                                    echo "<td>" . $row['salary'] . "</td>";
                                    echo "<td>";
                                        echo '<a href="show.php?id='. $row['id'] .'" class="mr-3 btn btn-success" title="View Record" data-toggle="tooltip"><span class="fa fa-eye"></span></a>';
                                        echo '<a href="update.php?id='. $row['id'] .'" class="mr-3 btn btn-primary" title="Update Record" data-toggle="tooltip"><span class="fa fa-pencil"></span></a>';
                                        echo '<a href="delete.php?id='. $row['id'] .'" title="Delete Record" class="mr-3 btn btn-danger" data-toggle="tooltip"><span class="fa fa-trash"></span></a>';
                                    echo "</td>";
                                echo "</tr>";
                            }
                            echo "</tbody>";                            
                        echo "</table>";
                        // Free result set
                        mysqli_free_result($result);
                    } else{
                        echo '<div class="alert alert-danger"><em>No records were found.</em></div>';
                    }
                } else{
                    echo "Oops! Something went wrong. Please try again later.";
                }

                // Close connection
                mysqli_close($link);
                ?>
            </div>
        </div>        
    </div>
</body>
</html>

Creating the Create Page

In this section we'll build the Create functionality of our CRUD application.

Now, Let's create a file named "create.php" and put the following code inside it. It will generate a web form that can be used to insert records in the users table.

create.php
<?php

    // Include config file
    require_once "config.php";
     
    // Define variables and initialize with empty values
    $name = $email = $salary = "";
    $name_err = $email_err = $salary_err = "";
     
    // Processing form data when form is submitted
    if($_SERVER["REQUEST_METHOD"] == "POST"){
        // Validate name
        $input_name = trim($_POST["fullname"]);
        if(empty($input_name)){
            $name_err = "Please enter a name.";
        } elseif(!filter_var($input_name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
            $name_err = "Please enter a valid name.";
        } else{
            $name = $input_name;
        }
        
        // Validate address
        $input_email = trim($_POST["email"]);
        if(empty($input_email)){
            $email_err = "Please enter an Email.";     
        } else{
            $email = $input_email;
        }
        
        // Validate salary
        $input_salary = trim($_POST["salary"]);
        if(empty($input_salary)){
            $salary_err = "Please enter the salary amount.";     
        } elseif(!ctype_digit($input_salary)){
            $salary_err = "Please enter a positive integer value.";
        } else{
            $salary = $input_salary;
        }
        
        // Check input errors before inserting in database
        if(empty($name_err) && empty($email_err) && empty($salary_err)){
            // Prepare an insert statement
            $sql = "INSERT INTO users (fullname, email, salary) VALUES (?, ?, ?)";
             
            if($stmt = mysqli_prepare($link, $sql)){
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, "sss", $param_name, $param_email, $param_salary);
                
                // Set parameters
                $param_name = $name;
                $param_email = $email;
                $param_salary = $salary;
                
                // Attempt to execute the prepared statement
                if(mysqli_stmt_execute($stmt)){
                    // Records created successfully. Redirect to landing page
                    header("location: index.php");
                    exit();
                } else{
                    echo "Oops! Something went wrong. Please try again later.";
                }
            }
             
            // Close statement
            mysqli_stmt_close($stmt);
        }
        
        // Close connection
        mysqli_close($link);
    }

?>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Create Record</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body class="bg-dark">
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-5 mx-auto">
                <div class="card">
                    <div class="card-header bg-warning">
                        <h2 class="">Create Record</h2>
                    </div>
                    <div class="card-body">
                        <p>Please fill this form and submit to add user record to the database.</p>
                        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                            <div class="form-group">
                                <label>FullName</label>
                                <input type="text" name="fullname" class="form-control <?php echo (!empty($name_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $name; ?>">
                                <span class="invalid-feedback"><?php echo $name_err;?></span>
                            </div>
                            <div class="form-group">
                                  <label>Email</label>
                                <input type="email" name="email" class="form-control <?php echo (!empty($email_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $email; ?>">
                                <span class="invalid-feedback"><?php echo $email_err;?></span>
                            </div>
                            <div class="form-group">
                                <label>Salary</label>
                                <input type="text" name="salary" class="form-control <?php echo (!empty($salary_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $salary; ?>">
                                <span class="invalid-feedback"><?php echo $salary_err;?></span>
                            </div>
                            <input type="submit" class="btn btn-primary" value="Submit">
                            <a href="index.php" class="btn btn-secondary ml-2">Cancel</a>
                        </form>
                    </div>
                </div>
            </div>
        </div>        
    </div>
</body>
</html>

Show Data

Now it's time to build the Read functionality of our CRUD application.

Now, Let's create a file named "show.php" and put the following code inside it. It will simply retrieve the records from the users table based the id attribute of the user.

show.php

<?php

    // Check existence of id parameter before processing further
    if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
        // Include config file
        require_once "config.php";
        
        // Prepare a select statement
        $sql = "SELECT * FROM users WHERE id = ?";
        
        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "i", $param_id);
            
            // Set pg_parameter_status()
            $param_id = trim($_GET["id"]);
            
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                $result = mysqli_stmt_get_result($stmt);
        
                if(mysqli_num_rows($result) == 1){
                    /* Fetch result row as an associative array. Since the result set
                    contains only one row, we don't need to use while loop */
                    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
                    
                    // Retrieve individual field value
                    $name = $row["fullname"];
                    $address = $row["email"];
                    $salary = $row["salary"];
                } else{
                    // URL doesn't contain valid id parameter. Redirect to error page
                    header("location: error.php");
                    exit();
                }
                
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }
         
        // Close statement
        mysqli_stmt_close($stmt);
        
        // Close connection
        mysqli_close($link);
    } else{
        // URL doesn't contain id parameter. Redirect to error page
        header("location: error.php");
        exit();
    }

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>View Record</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <h1 class="mt-5 mb-3">View Record</h1>
                <table class="table table-bordered table-hover">
                    <thead>
                        <tr>
                            <th width="10%">FullName</th>
                            <td><?php echo $row["fullname"]; ?></td>
                        </tr>
                        <tr>
                            <th width="10%">Email</th>
                            <td><?php echo $row["email"]; ?></td>
                        </tr>
                        <tr>
                            <th width="10%">Salary</th>
                            <td><?php echo $row["salary"]; ?></td>
                        </tr>
                    </thead>
                </table>
                <p><a href="index.php" class="btn btn-primary">Back</a></p>
            </div>
        </div>        
    </div>
</body>
</html>
Creating the Update Page

Similarly, we can build the Update functionality of our CRUD application.

Now, Let's create a file named "update.php" and put the following code inside it. It will update the existing records in the users table based the id attribute of the user.

update.php

<?php

    // Include config file
    require_once "config.php";
     
    // Define variables and initialize with empty values
    $name = $email = $salary = "";
    $name_err = $email_err = $salary_err = "";
     
    // Processing form data when form is submitted
    if(isset($_POST["id"]) && !empty($_POST["id"])){
        // Get hidden input value
        $id = $_POST["id"];
        
        // Validate name
        $input_name = trim($_POST["fullname"]);
        if(empty($input_name)){
            $name_err = "Please enter a name.";
        } elseif(!filter_var($input_name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
            $name_err = "Please enter a valid name.";
        } else{
            $name = $input_name;
        }
        
        // Validate address address
        $input_email = trim($_POST["email"]);
        if(empty($input_email)){
            $email_err = "Please enter an Email.";     
        } else{
            $email = $input_email;
        }
        
        // Validate salary
        $input_salary = trim($_POST["salary"]);
        if(empty($input_salary)){
            $salary_err = "Please enter the salary amount.";     
        } elseif(!ctype_digit($input_salary)){
            $salary_err = "Please enter a positive integer value.";
        } else{
            $salary = $input_salary;
        }
        
        // Check input errors before inserting in database
        if(empty($name_err) && empty($email_err) && empty($salary_err)){
            // Prepare an update statement
            $sql = "UPDATE users SET fullname=?, email=?, salary=? WHERE id=?";
             
            if($stmt = mysqli_prepare($link, $sql)){
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, "sssi", $param_name, $param_email, $param_salary, $param_id);
                
                // Set parameters
                $param_name = $name;
                $param_email = $email;
                $param_salary = $salary;
                $param_id = $id;
                
                // Attempt to execute the prepared statement
                if(mysqli_stmt_execute($stmt)){
                    // Records updated successfully. Redirect to landing page
                    header("location: index.php");
                    exit();
                } else{
                    echo "Oops! Something went wrong. Please try again later.";
                }
            }
             
            // Close statement
            mysqli_stmt_close($stmt);
        }
        
        // Close connection
        mysqli_close($link);
    } else{
        // Check existence of id parameter before processing further
        if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
            // Get URL parameter
            $id =  trim($_GET["id"]);
            
            // Prepare a select statement
            $sql = "SELECT * FROM users WHERE id = ?";
            if($stmt = mysqli_prepare($link, $sql)){
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, "i", $param_id);
                
                // Set parameters
                $param_id = $id;
                
                // Attempt to execute the prepared statement
                if(mysqli_stmt_execute($stmt)){
                    $result = mysqli_stmt_get_result($stmt);
        
                    if(mysqli_num_rows($result) == 1){
                        /* Fetch result row as an associative array. Since the result set
                        contains only one row, we don't need to use while loop */
                        $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
                        
                        // Retrieve individual field value
                        $name = $row["fullname"];
                        $email = $row["email"];
                        $salary = $row["salary"];
                    } else{
                        // URL doesn't contain valid id. Redirect to error page
                        header("location: error.php");
                        exit();
                    }
                    
                } else{
                    echo "Oops! Something went wrong. Please try again later.";
                }
            }
            
            // Close statement
            mysqli_stmt_close($stmt);
            
            // Close connection
            mysqli_close($link);
        }  else{
            // URL doesn't contain id parameter. Redirect to error page
            header("location: error.php");
            exit();
        }
    }
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Update Record</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body class="bg-dark">
    <div class="container mt-5">
        <div class="row">
            <div class="col-md-5 mx-auto">
                <div class="card">
                    <div class="card-header bg-warning">
                        <h2 class="">Update Record</h2>
                    </div>
                    <div class="card-body">
                        <p>Please edit the input values and submit to update the user record.</p>
                        <form action="<?php echo htmlspecialchars(basename($_SERVER['REQUEST_URI'])); ?>" method="post">
                            <div class="form-group">
                                <label>Name</label>
                                <input type="text" name="fullname" class="form-control <?php echo (!empty($name_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $name; ?>">
                                <span class="invalid-feedback"><?php echo $name_err;?></span>
                            </div>
                            <div class="form-group">
                                <label>Email</label>
                                <input type="email" name="email" class="form-control <?php echo (!empty($email_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $email; ?>">
                                <span class="invalid-feedback"><?php echo $email_err;?></span>
                            </div>
                            <div class="form-group">
                                <label>Salary</label>
                                <input type="text" name="salary" class="form-control <?php echo (!empty($salary_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $salary; ?>">
                                <span class="invalid-feedback"><?php echo $salary_err;?></span>
                            </div>
                            <input type="hidden" name="id" value="<?php echo $id; ?>"/>
                            <input type="submit" class="btn btn-primary" value="Submit">
                            <a href="index.php" class="btn btn-secondary ml-2">Cancel</a>
                        </form>
                    </div>
                </div>
            </div>
        </div>        
    </div>
</body>
</html>

Creating the Delete Page

Finally, we will build the Delete functionality of our CRUD application.

Now, Let's create a file named "delete.php" and put the following code inside it. It will delete the existing records from the users table based the id attribute of the user.

delete.php
<?php

    // Process delete operation after confirmation
    if(isset($_POST["id"]) && !empty($_POST["id"])){
        // Include config file
        require_once "config.php";
        
        // Prepare a delete statement
        $sql = "DELETE FROM users WHERE id = ?";
        
        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "i", $param_id);
            
            // Set parameters
            $param_id = trim($_POST["id"]);
            
            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Records deleted successfully. Redirect to landing page
                header("location: index.php");
                exit();
            } else{
                echo "Oops! Something went wrong. Please try again later.";
            }
        }
         
        // Close statement
        mysqli_stmt_close($stmt);
        
        // Close connection
        mysqli_close($link);
    } else{
        // Check existence of id parameter
        if(empty(trim($_GET["id"]))){
            // URL doesn't contain id parameter. Redirect to error page
            header("location: error.php");
            exit();
        }
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Delete Record</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <style>
        .wrapper{
            width: 600px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <h2 class="mt-5 mb-3">Delete Record</h2>
                    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                        <div class="alert alert-danger">
                            <input type="hidden" name="id" value="<?php echo trim($_GET["id"]); ?>"/>
                            <p>Are you sure you want to delete this user record?</p>
                            <p>
                                <input type="submit" value="Yes" class="btn btn-danger">
                                <a href="index.php" class="btn btn-secondary">No</a>
                            </p>
                        </div>
                    </form>
                </div>
            </div>        
        </div>
    </div>
</body>
</html>

Creating the Error Page

At the end, let's create one more file "error.php". This page will be displayed if request is invalid i.e. if id parameter is missing from the URL query string or it is not valid.

error.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Error</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <style>
        .wrapper{
            width: 600px;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <h2 class="mt-5 mb-3">Invalid Request</h2>
                    <div class="alert alert-danger">Sorry, you've made an invalid request. Please <a href="index.php" class="alert-link">go back</a> and try again.</div>
                </div>
            </div>        
        </div>
    </div>
</body>
</html>

I will help you..

Laravel Many to Many Eloquent Relationship Tutorial

Hi Dev,

Today, I Will learn you how to create laravel Many to Many eloquent relationship. We will create Many to many relationship in laravel. We will learn you how we can create migration with foreign key schema, retrieve records, insert new records, update records etc. I will show you laravel Many to Many relationship example.

We will create "user" ,"role_user" and "role" table.both table are connected with each other, I will create Many to many relationship with each other by using laravel Eloquent Model, We will first create database migration, then model, retrieve records and then how to create records too. Many to Many Relationship use "belongsToMany()" for relation.

Here, I will give you full example for laravel Many to Many eloquent relationship as bellow.

Step:1 Create Migration

In this step, we will need two tables in our database user ,role_user and role. I will start to create the model and migrations, then we will define the Many to many to Many relationship.To generate models and migrations, run below two commands in your terminal.

php artisan make:model User -m

php artisan make:model RoleUser -m

php artisan make:model Role -m

Above command will generate two models in your app folder called user and role. You will also find two new migrations in your database/migrations folder.

Your newly created models and migration after add table field:

Path:database\migrations\2014_10_12_000000_create_user_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUserTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('user', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
Path:database\migrations\2014_10_12_000000_create_role_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateRoleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('role', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('role');
    }
}
Path:database\migrations\2014_10_12_000000_create_role_users_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateRoleUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('role_users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->integer('user_id');
            $table->integer('role_id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('role_users');
    }
}

Now run the below command to create user and role tables in your database:

php artisan migrate
Step:2 Create Model Relationship

Now in this step, we have user ,role_user and role tables ready, let’s define the Many to manMany relationship in our models. our app\user.php model file and add a new function called roles() which will return a many to Many relationship like below:

app\user.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class user extends Model
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    public function roles()
    {
        return $this->belongsToMany(Role::class, 'role_users');
    }
}

you can see, in the roles() method we are defining a Many to Many relationship on role model.

Now we will defining Inverse Many To Many Relationship in Laravel.As we have defined the many to Many relationship on Brand model which return the related records of role model, we can define the inverse relationship on the role model.Open your app/role.php model file and add a new method called users() in it which will return the related brand of a role.

app\role.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
   /**
    * The attributes that should be hidden for arrays.
    *
    * @var array
    */
    Protected $fillable=[
        'name'
    ];
    /**
    * The attributes that should be hidden for arrays.
    *
    * @var array
    */
    public function users()
    {
        return $this->belongsToMany(User::class, 'role_users');
    }
}

you can see, in the users() method we are defining a Many to Many relationship on role model.

app\RoleUser.php
<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class RoleUser extends Model
{   
    /**
    * The attributes that should be hidden for arrays.
    *
    * @var array
    */
    public $table = 'role_user';
    /**
    * The attributes that should be hidden for arrays.
    *
    * @var array
    */
    protected $fillable = [
        'user_id','role_id'
    ];
}
Step 3 : Insert Records

Let’s in this step add data to user and role from controller:

app\Http\Controllers\user.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Role;

class userController extends Controller
{
    public function createRecored()
    {      
       //create recored in user table
       $user = User::find(2);   
       $roleIds = [1, 2];
       $user->roles()->attach($roleIds);

       $user = User::find(3);   
       $roleIds = [1, 2];
       $user->roles()->sync($roleIds);

       //create recored in role table

       $role = Role::find(1);   
       $userIds = [10, 11];
       $role->users()->attach($userIds);

       $role = Role::find(2);   
       $userIds = [10, 11];
       $role->users()->sync($userIds);
    }
}
Step 4 : Retrieve Records

Now in this step retrieve records model

app\Http\Controllers\user.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Role;

class userController extends Controller
{
    public function retrieveRecords()
    {   
        //Retrieve recoed in user table
        $user = User::find(1);    
        dd($user->roles);
        
        //Retrieve recoed in role table
        $role = Role::find(1);  
        dd($role->users);
    }
}

it will help you....