Besoin d'aide ?

Créer live search box dans un formulaire

  • Avatar de frenchqwerty1
    Membre depuis :
    01/12/2017
    Messages :
    2

    Bonjour !

    Je travaille sur un site et dans un formulaire, je dois mettre un live search box pour selectionner une donnée qui est dans la base de donnée... J'ai un peu moins de 30 000 entrées, j'ai get tout ça et j'envoie dans la view.

    J'ai tout mis dans un select mais c'est beaucoup trop lent à charger et je sais que c'est plus rapide avec des requêtes en Ajax et tout mais je sais pas du tout comment faire.

    J'ai cherché sur internet pendant des heures mais impossible de trouver ce que je recherche...

    Voici le code dans la view :

    <div class="form-panel">
    <h4 class="mb"><i class="fa fa-angle-right"></i> Reservation</h4>
    <form class="form-horizontal style-form" method="get" action="#">
    <div class="form-group">
    <label class="col-sm-2 col-sm-2 control-label" for="game">Jeux</label>
    <div class="col-sm-10">
    {{-- <input type="text" class="form-control" id="game"> C'est ici que je veux mettre le live search box--}}
    </div>
    </div>
    <div class="form-group">
    <label class="col-sm-2 col-sm-2 control-label" for="client">Nom du client</label>
    <div class="col-sm-10">
    <input type="text" class="form-control" id="client">
    </div>
    </div>
    <div class="form-group">
    <label class="col-sm-2 col-sm-2 control-label" for="num">Numéro de télephone</label>
    <div class="col-sm-10">
    <input type="tel" id="num" class="input-medium bfh-phone" pattern="^((+\d{1,3}(-| )?(?\d)?(-| )?\d{1,5})|((?\d{2,6})?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$">
    </div>
    </div>
    <button type="submit" class="btn btn-success">Valider</button>
    </form>

    Voici le code dans le controller qui return la view :

    public function index()
    {
    $post = shop::all();
    return view('admin')->with('items', $post);
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1673
  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    32

    Salut,

    "c'est plus rapide en ajax" c'est l'une des phrases les plus stupides que j'ai lues ici.

    Tu charges 30 000 entrées dans un select (t'as idée de combien consomme la création de 30000 objets plus la conso de ton serveur de BDD ?) et tu t'étonnes que ça rame (tu t'es jamais demandé pourquoi on paginait les résultats ?).

    Quand on fait de l'ajax l'intérêt c'est qu'on a les premières lettres pour filtrer la requête, donc on évite les 30000 résultats (et oui si on fait une recherche à partir de la 3ème lettre y'a des raisons, même quand t'as un serveur monstrueux derrière). Et par précaution on pagine toujours...

    Quand je vois ce genre de code :

    shop::all();

    Je me dis : vive la scalabilité (mise à l'échelle en français je pense). Après tu vas t'étonner que ça marchait très bien en local avec tes 2 enregistrements test et que ça marche pas en prod...

  • Avatar de frenchqwerty1
    Membre depuis :
    01/12/2017
    Messages :
    2

    Bonjour,

    Oui je sais parfaitement que chargé tous les données d'une base de donnée d'un coup ça ralenti grandement la vitesse du site internet. Je ne suis que débutant :)

    En tout cas merci de vos réponses et j'ai trouvé une solution à mon problème ! J'ai utilisé ceci : http://autocomplete-js.com
    Ensuite à chaque fois que je tape dans l'input je get 25 entrées et ca va beaucoup mieux !

    En espérant aider des personnes

Vous ne pouvez pas répondre à ce sujet.