Bonjour,

Voila je rencontre un petit problème avec mon code.

je veux transfomer ce code php en Angularjs :

<?php 
    for($i=1; $i<=$nop; $i++){
        ?>
        <div class="form-group">     
                <label for="inputEmail"  ><?php echo $this->lang->line('options');?> <?php echo $i;?>)</label> <br>
                <input type="radio" name="score" value="<?php echo $i-1;?>" <?php if($i==1){ echo 'checked'; } ?> > Select Correct Option 
                <br><textarea  name="option[]"  class="form-control"   ></textarea>
        </div>
    <?php 
    }
    ?>

et voilla

j'ai remplacé la boucle for par ng-repeat avec une foction range pour générer le nombre de div selon le nop saisi :

    < div ng-repeat="i in range(Data.nop)>

et affichage option :

  Option {{i}}

et pour les bouton radio :

   <input type="radio" name="score" value="{{i-1}}" ng-model="score" ng-checked="i==1">

et pour le textarea :

  <textarea  ng-model="options" class="form-control" >

et pour le controlleur : je veux transformer ce code en controlleur angular js

voila la fonction en php pour inserer une question ::::::::::::::::::::::::::

   function insert_question_1(){ 
 $userdata=array(
 'question'=>$this->input->post('question'),
 'description'=>$this->input->post('description'),
 'question_type'=>$this->lang->line('multiple_choice_single_answer'),
 'cid'=>$this->input->post('cid'),
 'lid'=>$this->input->post('lid')    
 );
 $this->db->insert('savsoft_qbank',$userdata);
 $qid=$this->db->insert_id();
 foreach($this->input->post('option') as $key => $val){
     if($this->input->post('score')==$key){
         $score=1;
     }else{
         $score=0} 
$userdata=array(
 'q_option'=>$val,
 'qid'=>$qid,
 'score'=>$score,
 );
 $this->db->insert('savsoft_options',$userdata); }

 return true;

}

voilaa mon controlleur en angularjs

     quizapp.controller('QuestionController',function($scope,$http,$location,Data) {
   $scope.Data = Data;
     $scope.options=[];

        $scope.range = function(nop){

    var input = []; 
       nop = parseInt(nop);
      for (var i = 0; i < nop; i++) { 
    input.push(i+1) 
     } 
    return input;
    }

     $scope.save = function() {
     console.log($scope.Data);
         var question = 
    {
            "cid":$scope.cid,
            "nid":$scope.nid,
            "type_question" : $scope.Data.type_question,
            "question":$scope.question,
            "description":$scope.description
   };

       var res = $http.post('http://localhost/quiz/public/addQuestion',question);
        res.success(function(data, status, headers, config) {
            $scope.data = data;

           console.log($scope.data);
      angular.forEach($scope.options,function(key,val){
     // score =key, options=val
   if($scope.score==$score){
   $scope.score=1;
     }else{
   $scope.score=0;
    }
            var option ={

     "q_option":val,
    "qid":$scope.data.qid,
    "score":score
    };
       var resultat = $http.post('http://localhost/quiz/public/addOption',option);
          resultat.success(function(response, status, headers, config) {
            $scope.response = response });
         });
         });

        };

    });

    quizapp.factory('Data', function(){
        return { type_question: '' ,
          nop:''
        };
    });

Ce que j'obtiens : pas d'erreur et pas de réponse et pas d'insertion dans la base de donnés
( angular js : frontend
laravel : backend )
:(

3 réponses


Salut,

Peux-tu, s'il-te-plaît, réindenter ton code correctement ? Car là on ne comprend RIEN ^^'

Il y a une formation AngularJS sur le site, l'as-tu suivi ?

imma
Auteur

salut , pour etre plus clair voila mon besoin :

mon bute est de saisir des questions pour faire un quiz, la premier étape et de choisir le type de question et le nombre d'option pour la question , aprés cette étape je dois rediriger vers une autre page pour choisir la categorie( math pc info) et le niveau ( facile dificile) et saisir la question et les options selon le nombre saisi, cette partie contient un bouton radio avec la valeur n-1 du et ng-model=score si un bouton choisi ctd le vrai réponse donc (if($i==1){ echo 'checked') et contient aussi textarea avec ng-model =option (un tableau qui contient les options )
voila code HTML :

      <div ng-repeat="i in range(Data.nop) track by $index">
            <div class="form-group">

                <div class="col-md-6 col-xs-12">

               <li>Option {{i}}</li>
      <br>
       <textarea  ng-model="options" class="form-control"   ></textarea>
                </div>
                </div>
            </div>

// pour le controlleur voila le traitement

       quizapp.controller('QuestionController',function($scope,$http,$location,Data) {
      $scope.Data = Data;
      $scope.options=[];

 //recuperation  categories 
    var resultat=$http.get('http://localhost/quiz/public/ListeCategories')
    resultat.success(function(categories, status, headers, config) {

      $scope.categories = categories;
  });
 //recuperation  niveaux 
var resultat=$http.get('http://localhost/quiz/public/ListeNiveaux')
    resultat.success(function(niveaux, status, headers, config) {

      $scope.niveaux = niveaux;
   });
//redirection vers page
  $scope.redirect=function(){ 

  $location.path("/new_question_1");
 };

 //fonction pou le traitement nombre des option 
   $scope.range = function(nop){
  var input = []; 
  nop = parseInt(nop);
 for (var i = 0; i < nop; i++) { 
input.push(i+1) 
} 

return input;
}

 //fonction save dans la bd:
 $scope.save = function() {
 console.log($scope.Data);

  var question = 
    {
            "cid":$scope.cid,
            "nid":$scope.nid,
            "type_question" : $scope.Data.type_question,
            "question":$scope.question,
            "description":$scope.description
   };

 //enregistrer dans la table question 
var res = $http.post('http://localhost/quiz/public/addQuestion',question);
res.success(function(data, status, headers, config) {
      //récuperation qid      
           $scope.data = data;

           console.log($scope.data);
 // boucle sur les options pour enregistrer chaque options dans la table option avec oid et qid (cle etranger de la table question) et le score ( =1 si la vrai réponse )
 angular.forEach($scope.options,function(key,val){
 // score =key, options=val
   if($scope.score==key))){
         $scope.score=1;
     }else{
         $scope.score=0;
     }
 var option ={
 "qid":$scope.data.qid,
 "q_option":val,
 "score":score
};

     var resultat = $http.post('http://localhost/quiz/public/addOption',option);
       resultat.success(function(response, status, headers, config) {
           $scope.response = response

           console.log($scope.response);

        });
   });
 });

};

 });
 quizapp.factory('Data', function(){
return { type_question: '' ,
          nop:''
        };
 });