laravel - Returning correct value from array in Form Select -


just having trouble trying retrieve correct value form::select upon form submit.

i passing in array (which contains full_name , id). form displaying correct information, however, when return value form submit (e.g. if coach changes current value/player new name), getting form array id, not username id trying get. code below

in controller:

    $ids = array($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9, $p10, $p11, $p12, $p13, $p14, $p15, $p16);     $ids_ordered = implode(',', $ids);      $player= db::table('players')         ->wherein('id', $ids)         ->selectraw('id, concat(fname," ",lname) full_name')         ->orderbyraw(db::raw("field(id, $ids_ordered)"))         //->pluck('id' ,'full_name') //only returning  1 value - not both?         ->get()         ->mapwithkeys(function($i) {           return [$i->id => $i->full_name.' ('.$i->id.')'];         });      $player=collect([$player])->flatten(); 

note: need 16 x ids in correct order sports team selection form. part working. tried using pluck, reaon return 1 value (e.g. full_name or id) - not both. changed mapwithkeys.

in form/view:

    <div class="form-group">         {!! form::label('capt','team captain matchcard') !!}         {!! form::select('capt', $played, null, ['placeholder' => $played[0] ,'class' => 'form-control']) !!}      </div> 

there 16 fields in form per above. placeholder current value (currently selected team player). coach can change drop-down ($played array).

the form displays perfectly. whats happening, lets coach changes capt field above (current player id 17 $played array value 0). if change/select new player drop down (e.g. id 25 may 4th name in drop list - hence array value [3] ) - return on submit (back in controller) displaying 3 , want 25 (the actual player id of desired name/player players table).

appreciate if can me new id in scenario... appreciated , in advance.

ps: using laravel 5.4

array display:

enter image description here

using example above, if change capt field in form select corry allsop (id 12), form returning 2 (3rd name in array)

correct way $played database using pluck

$player= db::table('players')         ->wherein('id', $ids)         ->selectraw('id, concat(fname," ",lname) full_name')         ->orderbyraw(db::raw("field(id, $ids_ordered)"))         ->pluck('full_name' ,'id') 

pluck second parameter array key , first value

//view {{ form::select('capt', $played, null) }} 

edit:

remove line $player=collect([$player])->flatten();. flatten method flattens multi-dimensional collection single dimension. that's why id key replaced array key (start 0)

edit 2:

display current player

//controller return view('grades.matchcard.edit', ['ids' => $ids, played' => $player, 'matchcards' => $data, 'rounds' => $data1, 'mid' => $mcid, 'gstat' => $gstat, 'rplayers' => $rplayers]);  //view {{ form::select('capt', $played, $ids[0], ['class' => 'form-control']) }}  {{ form::select('capt', $played, $ids[1], ['class' => 'form-control']) }} 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -