salut tout le monde jai un petit soucie d'insertion de données avec laravel 4 +jquery +ajax .lorsque je transamet un enregistrement via ajax a ma fonction pour enregistrer dans la base de données j'y trouve le double de l'enregistrement,de fois meme le triple voire le quatriple.
je n'arrive pas a retrouver le probleme,aidez moi svp.
mercie d'avance

4 réponses


Pourrais tu nous en montrer un peu au niveau du code ?

fouz09
Auteur

public function getAdd($id = '')
{
$data_vue = array();
$data_sous_vue = array();

    $data_sous_vue['menu']= 'transfert.menu';

    if(!empty($id) AND Transfert::find($id) != null)
    {
        $data_sous_vue['titre_page']= 'Modifier transfert';
        $transfert = Transfert::find($id);

    }
    else {
        $data_sous_vue['titre_page']= 'Nouveau transfert';
        $transfert = new Transfert();
    }

    $query_ville = City::all();
    $liste_ville = array();
    foreach( $query_ville as $ville) {
        $liste_ville[$ville->id] = $ville->nom;
    }

    $data_vue['transfert'] = $transfert;
    $data_vue['liste_ville'] = $liste_ville;

    if(!empty($id) AND $id = 'success'){
        return View::make('transfert.add', $data_vue);

    }else{
        return View::make('transfert.add', $data_vue)->nest('message','message',$data_sous_vue);
    }

}

//=================================================================================================================
public function postAdd($id = '')
{
$reponse = array(
'erreur' => null,
'success' => null,
'load' => null
);
if( Request::ajax() ) {
//Regles de validation
$rules['montant'] = 'required|numeric|max:1000000000000';
$rules['city_receveur'] = 'required|exists:cities,id';
//===========================================
$rules['nom_envoyeur'] = 'required|max:255';
$rules['adresse_envoyeur'] = 'required|max:255';
$rules['tel_envoyeur'] = 'required|integer';
//===========================================
$rules['nom_receveur'] = 'required|max:255';
$rules['adresse_receveur'] = 'required|max:255';
$rules['tel_receveur'] = 'required|integer';

        $val = Validator::make(Input::all(),$rules);
        if($val->fails())
        {
            $reponse['erreur'] = '<div class="alert alert-danger">'.current($val->messages()->all()).'</div>';
            echo json_encode($reponse);
        }
        else{
            if(!empty($id) AND Transfert::find($id) != null){
                $transfert = Transfert::find($id);
            }
            else{
                $transfert = new Transfert();
            }
               $envoyeur_city = DB::table('agences')->where('id',Session::get('agence_id'))->pluck('city_id');
            //$transfert->sexe = Input::get('sexe');
            $transfert->user_id = Session::get('user_id');
            $transfert->agence_id = Session::get('agence_id');
            $transfert->banque_id =  Session::get('banque_id');
            $transfert->montant = Input::get('montant');
            $transfert->envoyeur_city_id = $envoyeur_city;
            $transfert->receveur_city_id = Input::get('city_receveur');
            $transfert->nom_envoyeur =strtoupper(Input::get('nom_envoyeur'));
            $transfert->adresse_envoyeur = Input::get('adresse_envoyeur');
            $transfert->tel_envoyeur = Input::get('tel_envoyeur');
            $transfert->piece_envoyeur = Input::get('piece_envoyeur');
            $transfert->nom_receveur = strtoupper(Input::get('nom_receveur'));
            $transfert->adresse_receveur = Input::get('adresse_receveur');
            $transfert->tel_receveur = Input::get('tel_receveur');
            $transfert->piece_receveur = Input::get('piece_receveur');
            $transfert->save();

            $reponse['success'] = '<div class="alert alert-success">Le transfert a bien été effectué</div>';
            $reponse['load'] = Request::url();
            echo json_encode($reponse);

        }
    }
    else{
        exit;
    }
}
//===========================================================================================================

<script>
$(document).ready(function(){

    $('.overlay').remove();

    $('body').on('click', '#transferer', function(){
        $('.box').append('<div class="overlay"><i class="fa fa-refresh fa-spin"></i></div>');
        var lien = '{{URL::action('TransfertController@getAdd')}}';
        var url = $('#form_transferer').attr('action');
        var data = $('#form_transferer').serialize();
        $.ajax({
            'url' : url,
            'data' : data,
            'type' : 'POST',
            'dataType' : 'json',
            'success' : function(data){
               if(data.erreur != null)
                {
                    $('#form_message').html(data.erreur);
                }
                else if( data.success != null )
                {
                    $('#form_message').html(data.success);
                    $('#sous_contenu').load(lien+'/success');
                }

                $('.overlay').remove();
            }
        });

        return false;
    });

});

</script>

Peux tu essayer de reformater ton code stp ? Comme ca c'est compliqué a lire.

J'ai pas lu ton code mais ce que j'aurais fait :
1) tu créer une fonction dans ton controller en post par exemple
2) tu paramètre ajax pour qu'il pointe dessus
3) tu créer un model (php artisan make:model "ton nom")
4) ton l'importe dans ton controller (use App\"ton nom";)
5) Dans ta fonction "ton nom"::create([
'name' => 'george',
'ville' => 'pompidou'
]);