Bonjour tous le monde,
J'ai une base de données qui contient une colonne position. A chaque nouvelle entrée cette colonne se voit affecté la valeur : nombre d'entrée + 1.
Ainsi ca me permet d'ordonner mes champs par rapport à cette colonne position.
J'ai créer une fonction qui permet lorsqu'on l'appelle de changer cette ordre, donc la valeur du champ position.
Cependant, ma fonction marche bizarrement puisque j'arrive seulement à inverser la position de ses entrée (la 1 passe en dernier, la 2 en avant dernière, ...) et ceci de toute les manière possibles. Une fois l'ensemble des champs inverser il m'est impossible de modifier l'ordre d'aucune de mes entrées. C'est un comportement que je n'aurais pas réussi à codé si je l'avais désiré. Ca relève presque de la sorcellerie :D. Donc avant d'aller démarabouter mon ordi je fais appel à vos précieux conseil.
Voici ma vue
<tbody>
<?php $count=1 ?>
@foreach ($prestations as $prestation)
<tr id="ref{{ $prestation->id }}" class="admin--table--item">
<td class="admin--table--item--checkbox"><input type="checkbox" name="ref{{ $prestation->id }}" id="ref{{ $prestation->id }}"></td>
<td class="admin--table--item--link"><a href="{{ URL::action('PrestationController@edit', $prestation->id) }}">{{ $prestation->title }}</a></td>
<td class="admin--table--item--btns">
<a href="{{ URL::action('PrestationController@edit', $prestation->id) }}" class="button">Modifier</a>
{!! Form::open(['method' => 'DELETE', 'action' => ['PrestationController@destroy', $prestation->id]]) !!}
{!! Form::submit('Supprimer', ['class' => 'red', 'onclick' => 'return confirm(\'Voulez-vous vraiment supprimer cette prestation ?\')']) !!}
{!! Form::close() !!}
</td>
<td class="admin--table--item--position">
@if($count==1)
<span>▲</span>
@else
{!! Form::open(['method' => 'PUT', 'action' => ['PrestationController@up']]) !!}
{{ Form::hidden('position', $prestation->position, ['id'=>'position']) }}
{!! Form::submit('▲', ['class' => 'up']) !!}
{!! Form::close() !!}
@endif
@if($count==count($prestations))
<span>▼</span>
@else
{!! Form::open(['method' => 'PUT', 'action' => ['PrestationController@up']]) !!}
{{ Form::hidden('position', $prestation->position+1, ['id'=>'position']) }}
{!! Form::submit('▼', ['class' => 'down']) !!}
{!! Form::close() !!}
@endif
<?php $count++ ?>
</td>
</tr>
@endforeach
</tbody>
</table>
et voici la fonction up :
public function up(Request $request)
{
$position = $request->input('position');
$prestation = $this->prestationRepository->updateSpecific($position+0, $position-1);
$prestation_min_one = $this->prestationRepository->updateSpecific($position-1, $position+0);
//dd($prestation . ' et ' . $prestation_min_one);
return redirect()->action('PestationController@index');
}
et enfin la fonction updateSpecific de mon repository :
public function updateSpecific($position, $data)
{
$query = $this->prestation->where('position',$position)->get();
$query[0]->position = $data;
$query[0]->save();
return $position .' en ' . $data;
}
Malheureusement, je ne suis pas sur d'avoir été suffisament clair pour être compréhensible. Moi même ne comprenant pas le problème j'arrive mal à l'explicité, mais je tente quand même peut être que ca parlera à l'un d'entre vous.
Merci d'avance et bonne soirée