• Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    71

    Salut,

    Je travail sur un projet avec laravel et j'essais de paginer ma page après ajout de 6 données dans un tableau mais y à un souci le souci c'est quand j'ajoute des valeurs dans le tableau au dela de
    6 données ma page ne se pagine pas et faille d'abord que j'actualise ma page avant que la pagination se puisse s'operer et moi ce que je voudrais c'est que la pagination s'opère juste après la 6ème donnée.

    Je tiens également à préciser que j'utilise ajax pour éviter que la page tout entière ne se recharge après ajout des données dans le tableau ...

    Voici mon controller et mon code ajax

    -------------------------------------------- Mon controller -------------------------------------


    public function index()
    {
    $matieres = Matiere::paginate(6);
    $max_id=Matiere::max('id')+1;
    $enseignants = Enseignant::all();
    return view('matieres.matiere',compact('matieres','max_id','enseignants'));
    }

    public function create(Request $request)
    {
    $rules =[
    'libMatiere' =>'bail|required|max:20',
    'coefMatiere' =>'bail|required|numeric',
    'code_enseignant' =>'bail|required'
    ];
    $validator = Validator::make($request->all(),$rules);
    if ($validator->fails())
    return Response()->json([
    'fail'=>true,
    'errors'=>$validator->errors()
    ]);
    $matieres = new Matiere;
    $matieres->lib_mat = $request->libMatiere;
    $matieres->coefficient_mat = $request->coefMatiere;
    $matieres->enseignant_id = $request->code_enseignant;

    $matieres->save();

    return response()->json($matieres);

    }

    -------------------------------------------------- Code Ajax ------------------------------------------


    $(document).on('submit','#CreateMatiere',function(e){
    e.preventDefault();
    var id_mat=$('.cod_matiere').val();
    $('input+small').text('');
    $('input').parent().removeClass('has-error');
    $.ajax({
    method:$(this).attr('method'),
    url:$(this).attr('action'),
    data:$(this).serialize(),
    dataType:"JSON"
    })
    .done(function(data){
    if(data.fail){
    $.each(data, function(){
    $.each(this, function(key, value){
    var input = '#CreateMatiere input[name=' + key + ']';
    var select = '#CreateMatiere select[name=' + key +']';
    $(input + '+small').text(value);
    $(input).parent().addClass('has-error');
    $(select + '+small').text(value);
    $(select).parent().addClass('has-error');
    })
    })
    }
    else{
    addRowMatiere(data);
    swal(
    'Enregistrement !',
    'Enregistrement effectué avec success !!!',
    'success'
    )
    $('#libMatiere').val('');
    $('#coefMatiere').val('');
    $('.cod_enseignt').val('');
    $('.cod_matiere').val(parseInt(id_mat) + 1);
    $('tbody').reload();
    }
    })
    .fail(function(xhr, textStatus,errorThrown){
    alert(xhr);
    })
    })

    Merci de bien vouloir m'aider à resoudre ce problème ...

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    Dans ton code on voit pas comment tu gères la pagination côté client.

  • Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    71

    Salut,

    Pour la pagination côté client, je ne sais pas comment m'y prendre pour gerer cela ...

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    C'est pas évident ce que tu veux faire. Je pense que le plus simple serait de provoquer un rechargement de la page lorsque tu atteins ta limite de pagination. Sinon tu vas vraiment te compliquer la vie côté client...

  • Avatar de Farris27
    Membre depuis :
    31/10/2017
    Messages :
    66

    Je te donne mon exemple de triple pagination sur la page en ajax :
    coté client :

    $('body').on('click', '.pagination a', function(e) {
    e.preventDefault();

    var url = $(this).attr('href');
    var url2= url.split('?');

    var url3 =url2[1].split('=');

    if(url3[0] == 'tags'){
    getTags(url);
    }else if(url3[0]== 'livres'){

    getLivres(url);
    }else if(url3[0]=='news'){
    getNews(url);
    }

    window.history.pushState("", "", url);
    });

    function getTags(url) {
    $.ajax({
    url : url,
    data : {var:'tags'}
    }).done(function (data) {
    $('#tags').html(data);
    }).fail(function () {
    alert('Tags could not be loaded.');
    });
    }
    function getLivres(url) {
    $.ajax({
    url : url,
    data: {var:'livres'}

    }).done(function (data) {
    $('#livres').html(data);
    }).fail(function () {
    alert('Livres could not be loaded.');
    });
    }
    function getNews(url) {
    $.ajax({
    url : url,
    data: {var:'news'}

    }).done(function (data) {
    $('#news').html(data);
    }).fail(function () {
    alert('Livres could not be loaded.');
    });
    }
    });

    Coté serveur : ` public function index(Request $request)
    {
    $livres= Livres::whereHas('disponible',function ($query){
    $query->where('id','=',1);
    })->where('actif','=',1)->paginate(6,['*'], 'livres');

    $nouveaute= Livres::where('nouveaute','=',1)->whereHas('disponible',function ($query){
    $query->where('id','=',1);
    })->orderBy('id','desc')->paginate(6,[''], 'news');

    if(Auth::check()){
    $user= Auth::user();
    $tags= $user->tags()->paginate(3,['
    '], 'tags');
    }else{
    $tags= tags::where('principal','=',1)->paginate(3,['*'], 'tags');
    }

    if ($request->ajax()) {
    if($request->var ==='tags'){return view('tag', ['tags' => $tags])->render();
    }
    elseif($request->var ==='livres'){
    return view('livres', ['livres' => $livres])->render();
    }
    elseif($request->var ==='news'){
    return view('news', ['nouveaute' => $nouveaute])->render();
    }
    }
    return view('welcome',compact('livres','tags','nouveaute'));
    }`

    Voilà à toi d'adapter ;)

  • Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    71

    Salut @Farris27, merci pour ta reponse je le met en pratique et je t'informe mon progres...

  • Avatar de Farris27
    Membre depuis :
    31/10/2017
    Messages :
    66

    Alors tu t'en es sorti ?

Vous ne pouvez pas répondre à ce sujet.