Laravel 5

Comment récupérer la valeur (id) d'un champ de saisi ?

  • Avatar de Ab_Officiel_
    Membre depuis :
    07/11/2019
    Messages :
    2

    Bonjour,

    Je suis sur un projet où je doit faire des rechargements à partir du numero saisi dans un champ input, je doit d'abord vérifier si le numero existe dans ma table carte et récupérer son id. Pour le moment je récupérait tous les numeros dans un select comme ceci :

    <div class="form-row">
    <div class="col-md-6 mb-3">
    <label for="carte_id">Numero de carte</label>
    <div class="input-group">
    <select name="carte_id" id="carte_id" class="form-control @error('carte_id') is-invalid @enderror" aria-describedby="inputGroupPrepend" required>

    @foreach ($cartes as $carte)
    <option value="{{ $carte->id }}">{{ $carte->NumeroCarte }}
    </option>
    @endforeach

    </select>
    @error('carte_id')
    <span class="invalid-feedback" role="alert">
    {{ $message }}
    </span>
    @enderror
    </div>
    </div>
    <div class="col-md-3 mb-3">
    <label for="Montant">Montant</label>
    <div class="input-group">
    <input type="text" class="form-control @error('Montant') is-invalid @enderror" name="Montant" id="Montant" placeholder="Montant du Rechargement" aria-describedby="inputGroupPrepend" value="{{ old('Montant') }}">
    @error('Montant')
    <span class="invalid-feedback" role="alert">
    {{ $message }}
    </span>
    @enderror
    </div>
    </div>
    </div>

    et dans mon controller Recharge

    public function store(Request $request)
    {
    $recharge = request()->validate([
    'carte_id' => 'required',
    'Montant' => 'required|integer',
    'TypeRecharge' => 'required',
    'caisse_id' => 'required'
    ]);

    $recharge = Recharge::create($recharge);

    $CarteID = $recharge->carte_id;
    $Montant = $recharge->Montant;

    $ID = Carte::where('id', $CarteID)->first();
    $Solde = $ID->Solde;

    Carte::where('id', $CarteID)->update(['Solde' => $Montant + $Solde]);

    $recharges = Recharge::all();

    Session::flash('success', 'Rechargement effectué avec succès.');

    return redirect()->route('recharges.index', compact ('recharges'));
    }

    Cela fonction correctement mais je veut récupérer l'id à partir d'un de saisi et non dans un liste deroulante. Merci

  • Avatar de MakoubaSetho
    Membre depuis :
    16/10/2017
    Messages :
    29

    Salut @AbOfficiel !
    Je ne suis pas certains de comprendre ton problème,
    Mais j'ai peut-être une solution malgré tout :D !

    Si tu souhaite avoir un input de saisie libre (un "text") dans lequel renseigner tes numéros de cartes,
    Tu peux faire quelque chose comme ça :

    <label for="carte_id"> Numero de carte :</label>
    <input id="carte_id" list="carte_list" type="text" />
    <datalist id="carte_list">
    <!-- On Propose les Cartes de la BDD -->
    @foreach ($cartes as $carte)
    <option value="{{$carte->id}}--{{$carte->NumeroCarte}}">
    @endforeach
    </datalist>

    Le bloc "datalist" permet une suggestion de remplissage du champs sur toutes tes Cartes existantes.
    Là j'ai fait en sorte qu'il les proposes tel que "id--numéro" pour que tu puisse ensuite découper ta variable et ne traiter que les ID.

    $cut = explode("--", $request->input('carte_id')); //Séparateur au "--"
    $carte_id = $cut[0]; //Première Découpe (ID)

    Mais tu peux bien sûr ne garder que l'id, ou encore que le numéro et en retrouver l'id ensuite ... !
    Et pourquoi pas ajouter des contrôles en JS pour vérifier qu'une saisie est bien égale à une carte existante et pas à autre chose =)

    Comme ça c'est comme si tu avait une liste libre de saisies, bien que je ne comprends pas trop l'intérêt ..

Vous ne pouvez pas répondre à ce sujet.