saveAll et tableau imbriqué

Par romses, il y a 10 ans


salut à tous je sais ma question est stupide, mais je n'ai pas pu résoudre le problème
en effet j'ai dans mes données postes les informations suivantes:

array( 'Note' => array( 'sequences_id' => '1', 'filieres_id' => '18', 'matieres_id' => 'Informatique' ), 'noteobtenu0' => '7844', 'noteobtenu1' => '4541', 'noteobtenu2' => '5211', 'noteobtenu3' => '2311', 'noteobtenu4' => '21122', 'noteobtenu5' => '565' )

j'aimerai les sauvegarde en un cout dans ma table note(id,sequences_id,filieres_id,matieres_id,noteobtenu)
en effet chaque ligne doit avoir une note, exemple
(1,1,18,Informatique,7844),(2,1,18,Informatique,4541),(3,1,18,Informatique,5211) ainsi de ssuite
je ne sais pas si quelqu'un voit de quoi je veut parler

6 réponses

Arkantos, il y a 10 ans

Bonjour,

Je n'ai pas bien compris ton problème, mais tu veux arriver à ce résultat ? (avec les ID en plus, mais elles seront ajoutées automatiquement)

array (size=6)
    0 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '7844' (length=4)
    1 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '4541' (length=4)
    2 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '5211' (length=4)
    3 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '2311' (length=4)
    4 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '21122' (length=5)
    5 => 
      array (size=4)
        'sequences_id' => string '1' (length=1)
        'filieres_id' => string '18' (length=2)
        'matieres_id' => string 'Informatique' (length=12)
        'noteobtenu' => string '565' (length=3)

Si oui, voilà le code qui le permet :

<?php
      $data = [
          'Note' => [
              'sequences_id' => '1',
              'filieres_id' => '18',
              'matieres_id' => 'Informatique'
          ],
          'noteobtenu0' => '7844',
          'noteobtenu1' => '4541',
          'noteobtenu2' => '5211',
          'noteobtenu3' => '2311',
          'noteobtenu4' => '21122',
          'noteobtenu5' => '565'
      ];

      $results = [];

      foreach($data as $key => $note){
          if($key != 'Note'){
              $data['Note']['noteobtenu'] = $note;
              $results[] = $data['Note'];
          }
      }

      // var_dump($results);

En espérant avoir résolu ton problème,
Arkantos.

romses, il y a 10 ans

Merci Akantos tu es un genie t'a tout compris d'un coup, et bien si tu étais ds mon pays on prendrais une bierre (hiiiiii juste pour rigolé ) merci

Arkantos, il y a 10 ans

De rien, ravi d'avoir pu t'aider !
A bientôt,

Arkantos

romses, il y a 10 ans

ayant modifier mon form j'obteins ceci qui est plus comprehensible

array( 'Note' => array( 'sequences_id' => '1', 'filieres_id' => '18', 'matieres_id' => 'Informatique', (int) 52 => array( 'noteobtenu' => '4' ), (int) 55 => array( 'noteobtenu' => '1' ), (int) 51 => array( 'noteobtenu' => '3' ), (int) 53 => array( 'noteobtenu' => '2' ), (int) 56 => array( 'noteobtenu' => '1' ), (int) 54 => array( 'noteobtenu' => '0' ) ) )

dans le helpers j'ai ceci :

<?php echo $this->Form->input('Note.' . $idstudent .'.noteobtenu', array('label' => '','class'=>'form-control classmatiere noteeleve ','onkeyup' => 'verif(this);','type' => 'text','required' => true)); ?>

du coup je pense être proche du but selon la procédure de Arkantos, mais y'a une autre pour plus ganger en temps?

Arkantos, il y a 10 ans

Re,
En soi je pense que pour arriver au résultat voulu, la méthode proposée plus haut et la plus simple à mettre en place.
Niveau temps, il ne devrait pas y avoir de soucis tu sais, à moins que tu doivent enregistrer les notes de 10000 élèves d'une traite. ;)

romses, il y a 10 ans

merci Arkantos, mais avec ce code je serai obligé de sauvegarder ligne par ligne parcontre moi je veus utiliser saveMany pour tous les sauvegarder en fesant ceci:

$var = array('sequences_id','filieres_id','matieres_id'); foreach ($noteall as $key => $value) { $i=0; if(!(in_array($key, $var))) { $donne['Note'][$i]['students_id'] = $key; $donne['Note'][$i]['notestudent'] = $value; $donne['Note'][$i]['sequences_id'] = $noteall['sequences_id']; $donne['Note'][$i]['filieres_id'] = $noteall['filieres_id']; $donne['Note'][$i]['matieres_id'] = $noteall['matieres_id']; debug($donne); } }

je parviens à avoir les listes possibles mais pas sous forme de tableau indicé comment mettre sous la forme de tableau numeroté?