Laravel 4

formulaire avec prise de donnée dans BDD

Avatar de bestmomo
bestmomo

Est-ce que la clé primaire est bien auto-incrémentée ?

Posté il y a 2 ans
Avatar de H_M
H_M

Ouii elle est bien auto-incrémentée, que dois-je faire s'il vous plait?

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Bonjour,

Avec les renseignements fournis je ne vois pas ce qui peut générer cette erreur.

Posté il y a 2 ans
Avatar de H_M
H_M

Bonjour, C'est bon, je l'ai réglé ça ne me génère plus cette erreur, le problème maintenant c'est que mon code ne m'enregistre que la dernière valeur remplie par l'utilisateur, voici mon code : public function addPlanif(Request $request){ $this->validate($request,[ 'num=>'required' ]); $autocar = new Autocar; $planification = new Planification; $num = $request->input('num'); $id_auto = $autocar->select('id')->where('num',$num)->value('id'); $data = array( 'id_autocar'=>$request->input('num'), ); $planification->insert($data); } return "validated successfully"; }

S'il te plait, que dois je rajouter pour qu'il m'enregistre tous les numéros envoyés par le formulaire? Merci pour ton aide @bestmomo

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Salut,

Difficile à dire sans voir à quoi ressemble le formulaire...

Posté il y a 2 ans
Avatar de H_M
H_M

Bonjour, Voici une partie de mon formulaire : @foreach($lignes -> all() as $ligne)

                             } 
                             echo Form::select('num',$tableau,['class'=>'form-control']);
                             $tableau = array();
                   ?></td>

@endforeach

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Toutes les listes on le même nom 'num' dans le formulaire, il est donc logique qu'un seul soit pris en compte. Il faut soit prévoir des noms différentes, soit un tableau.

Posté il y a 2 ans
Avatar de H_M
H_M

Non voici les autres :

                    	<td scope="row"><input type="number" id="id_ligne" name="id_ligne" value="{{$ligne -> id}}"></td>
                    	<td scope="row"><input type="text" id="intitulé" name="intitulé" value="Interurbain"></td>
                        <td scope="row">{{$ligne -> départ}} - {{$ligne -> arrivée}}</td>
                        <td scope="row">{{$ligne -> heure_départ}}</td>
                        <td scope="row">
                        	<?php
                        	foreach ($chauffeurs as $chauffeur) {
                                    $tableauSoc[$chauffeur->id]=$chauffeur->nom." ".$chauffeur->prenom;
                               }  	 	
                             echo Form::select('nom',$tableauSoc,['class'=>'form-control']);
                             $tableauSoc =array();
                        	 
                        	    ?></td>
                                <td scope="row">
                                    <?php
                                     foreach ($chauffeurs as $chauffeur) {
                                            $tableauSoc[$chauffeur->id]=$chauffeur->nom." ".$chauffeur->prenom;
                                            }         
                             echo Form::select('nom',$tableauSoc,['class'=>'form-control']);
                             $tableauSoc =array();
                             ?>

                                </td>
                        <td scope="row">
                            <?php
                            foreach ($autocars as $autocar) {
                                
                                    $tableau[$autocar->id]=$autocar->num_societé;     
                                
                             } 
                             echo Form::select('num_societé',$tableau,['class'=>'form-control']);
                             $tableau = array();
                                ?></td>
Posté il y a 2 ans
Avatar de H_M
H_M

Tu peux me faire un exemple avec les tableaux s'il te plait?

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Il suffit de prévoir les crochets avec le nom du champ :

Form::select('num[]',$tableau,['class'=>'form-control']); 

A l'arrivée tu boucles sur la variable.

Posté il y a 2 ans
Avatar de H_M
H_M

Salut, j'ai fait ça et au niveau du controller , j'ai mis ça :

$num[] = $request->input('num_societé'); foreach ($num as $key => $value) { $id_auto = $auto->select('id')->where('num',$num)->value('id'); $planifs->id_autocar = $value; } $planifs->save();

    Mais j'ai eu cette erreur : 
    
    Array to string conversion (SQL: insert into `planifications` (`intitulé_affectation`, `id_ligne`, `id_chauff`, `id_chauff_ac`, `id_autocar`, `updated_at`, `created_at`) values (Interurbain, 2, 1, 1, 2, 2018-06-04 22:52:39, 2018-06-04 22:52:39))
    
    Merci pour ton aide @bestmomo
Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Je n'ai pas tout analysé mais ça serait pas plutôt ça ?

$id_auto = $auto->select('id')->where('num',$key)->value('id');
Posté il y a 2 ans
Avatar de H_M
H_M

Je l'ai fait comme ça mais toujours la meme erreur :/

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

Tu as quoi dans $num ?

$num[] = $request->input('num_societé');
dd($num);

A priori les id des choix. Donc ta boucle devrait être juste :

foreach ($num as $value) {
   ...
Posté il y a 2 ans
Avatar de H_M
H_M

Voici le résultat de dd($num); array:2 [▼ 0 => "2" 1 => "1" ] D'ailleurs, dans mon formulaire y'a d'autres champs alors j'ai appliqué ton astuce d'utilisation des tableaux et c'est bien parce que maintenant dans le tableau j'arrive à voir les autres valeurs séléctionnées par l'utilisateur, mais le problème toujours est comment je vais les stocker en bdd, c'est triste parce que ça fait un bon moment que je suis bloquée dessus :(

Posté il y a 2 ans
Avatar de bestmomo
bestmomo

C'est toujours difficile de répondre en ayant une vue fractionnaire et sans pouvoir faire de test, mais dans l'idée :

$num[] = $request->input('num_societé');
foreach ($num as $value) {
    $planification = new Planification;
    $planification->id_autocar = $auto->where('num', $value)->value('id');
    $planification->save();
}
Posté il y a 2 ans
Avatar de H_M
H_M

Bonjour, Merci @bestmomo pour ton aide mais ce code n'enregiste que les valeurs de la variable $num, mais moi je veux enregistrer le tout à la fois ; J'ai essayé ça mais malheureusement je n'ai pas eu le résultat que je veux :

""" $id_ligne = $request->get('id_ligne'); $intitulé = $request->get('intitulé'); $id_chauff = $request->get('val'); $id_chauff_ac = $request->get('nom'); $id_autocar = $request->get('num_societé'); foreach($id_ligne as $value1){ $planifs = new Planification; $planifs->id_ligne = $value1; foreach ($intitulé as $value2) { $planifs->intitulé_affectation = $value2; } foreach ($id_chauff as $value3) { $planifs->id_chauff = $value3; } foreach ($id_chauff_ac as $value4) { $planifs->id_chauff_ac = $value4; } foreach ($id_autocar as $value5) { $planifs->id_autocar = $value5; } $planifs->save(); } """

Posté il y a 2 ans

Vous ne pouvez pas répondre à ce sujet.