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 )
:(
Salut,
Peux-tu, s'il-te-plaît, réindenter ton code correctement ? Car là on ne comprend RIEN ^^'
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:''
};
});