Besoin d'aide ?

Probleme de pagination

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

    Salut,
    Alors j'ai un petit souci avec la methode paginate().
    Tout d'abord voici mon controller et le lien de pagination :

    /**
    Controller
    /***

    public function showTri(Request $request)
    {
    $users=User::all();
    $typepieces=Typepiece::all();
    $userpieces=UsersPiece::all();
    $pieces=Piece::where('nom_piece','like','%'.$request->nom.'%')
    ->OrWhere('prnm_piece' ,'like','%'.$request->nom.'%')
    ->paginate(4);
    return view('Pieces.Pieces',compact('pieces','typepieces','userpieces','users'));
    }
    Nb: Ce controller permet de faire une recherche à partir du nom ou du prenom et d'afficher les utilisateurs correspondant 4 par pages

    /
    Vue
    /

    <center>
    {{ $pieces->links() }}
    </center>

    Mon probleme c'est que apres avoir trouvé ces utilisateurs correspondant à ce critere de recherche, la deuxieme page de la pagination n'affiche pas uniquement les utilisateurs correspondants à cette recherche mais affiche plutot tous les utilisateurs qui n'ont rien avoir avec cette recherche.
    Et moi je voudrais qu'il affiche le reste des utilisateurs correspondant à cette recherche.
    Merci d'avance ...
    Je tiens également à remercier BestMomo pour le lien qu'il m'a conseillé cela m'a été très utile.

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

    Bonjour,

    A priori le code est correct, il faudrait vérifier les urls de la pagination, s'il y a bien le paramètre page.

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

    Salut,
    Voici l'url de la 1ere page d'une recherche sur le nom ' Innocent ' : http://localhost:8000/piece/recherche?nom=Innocent
    et voici l'url de la second page http://localhost:8000/piece/recherche?page=2,

    Y a forcement un probleme quelques parts

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

    Le souci vient du fait que tu remets pas la recherche dans l'url de la pagination (avec append). Il faut faire la recherche avec un GET en prévoyant les éléments de recherche dans l'url.

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

    D'accord dans ce cas comment je pourrai m'y prendre dans ce cas parce que je suis un peu perdu stp
    voici ma route pour la recherche :

    Route::get('/piece/recherche/','PieceController@showTri')->name('recherche.show');
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1998

    Le mieux c'est de regarder un exemple. Dans mon exemple ici il y a la méthode search qui gère la recherche. Mon input s'appelle search, du coup il y a le paramètre search qui est dans l'url et je le rajoute avec appends.

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

    Salut,
    Concernant ton exemple j'ai essayé de l'adapté mais je n'y arrive pas,
    Voici ce que j'ai fait :
    `
    $nom = $request->nom;

    $pieces = $this->showTri($nom)->appends(compact('nom'));
    return view('Pieces.Pieces',compact('pieces','typepieces','userpieces','users'));

    `

    et j'ai un autre souci malgré le fait que la liste des elements que je veux afficher s'affichent sans souci,
    la page ne cesse pas de se charger.
    Je ne comprends pas pourquoi, je ne sais pas si le probleme vient au niveau de mon foreach qui se trouve dans ma vue.
    Voici ma vue :
    `

    @foreach ($pieces as $piece)
    @foreach ($users as $user)
    <tr>
    <td class="zoom">
    <div class="image">
    <img width="100%" height="100%" src="/storage/{{ $piece->photopiece }}" alt="image description">
    </div>
    </td>
    <td class="product-details" style="padding-left:2%;">
    <h3 class="title">{{ $piece->nom_piece.' '.$piece->prnm_piece }} </h3>
    <span><strong>Posté le : </strong><time>{{(New DateTime ($piece->created_at))->format('j, F Y ') }}</time> </span>
    <span><strong>Par :</strong>{{ $user->find($userpieces->find($piece->id)->id_users)->nom.' '. $user->find($userpieces->find($piece->id)->id_users)->prenom }}</span>
    <span class="status active"><strong>Status :</strong>Active</span>
    <span class="location"><strong>Retrouvée à :</strong>{{ $userpieces->find($piece->id)->lieu_piece }}</span>
    </td>
    <td class="product-category"><span class="categories">{{ $typepieces->find($piece->id_typpieces)->libtype }}</span></td>
    <td class="action" data-title="Action">
    <ul class="list-inline justify-content-center">
    <li class="list-inline-item">
    <span class="fa fa-eye btn btn-success" data-toggle="modal" data-target="{{ Auth::check() ? '#exampleModalCenter1' : '#exampleModalCenter'}}">Voir profil</span>
    <!-- Modal -->
    @include('Pieces.partials._Modal_Connect')
    @include('Pieces.partials._Profil_user')
    </li>
    </ul>
    </td>
    </tr>
    @break
    @endforeach
    @endforeach

    `

    Merci d'avance pour votre reponse

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

    Salut,

    Ca donne quoi au niveau de urls sur la pagination ? Avec le appends normalement ça ajoute le paramètre nom...

    Si la page se recharge il faut voir ce qui se passe au niveau client. La génération d ela vue ne peut pas provoquer ça parce que c'est côté serveur. Regarde avec les outils de développement du navigateur les requêtes qui passent pour comprendre le problème.

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

    Salut,
    Finalement j'ai pu résoudre le problème, j'ai oublié de définir la fonction showTri(), veuillez m'excuser de vous fatigué avec ce problème.

    En ce qui concerne le chargement de la page j'ai toujours pas trouvé d'où vient le problème.

Vous ne pouvez pas répondre à ce sujet.