Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

CodeIgniter PHP Discussion :

Saisie de commantaires


Sujet :

CodeIgniter PHP

  1. #1
    Membre à l'essai
    Saisie de commantaires
    Bonjour j'essaye de développer une application avec des critères, sous critères et commentaires associés à chaque sous-critère.
    Mon problème: j'essaye d'afficher les commentaires de manière associé au sous-critère mais en vain... j'ai toujours des erreurs. Comme je suis un novice sur CodeIgniter et PhP , j'espérais un peu d'aide...Voila Merci d'avance !

    Le blocage se situe à cet endroit là dans le model (c'est la partie que je modifie et cela ne fonctionne plus depuis que je l'ai changé):
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public function get_sous_crit($idCt) 
    	{
            $query = $this->db->query('SELECT idSousCritere,libelle,bareme FROM sous_criteres WHERE idCritere=' . $idCt . '');
            $souscritere = array();
     
    		 foreach ($query->result() as $row) 
    		{
    			$cmt = array();
    			$cmt[$this->set_comments($row->idSousCritere)];
     
    			$souscritere[] = $row->libelle . '  <input type="number" step="0.25" min="0" max="'.$row->bareme.'" onchange="calc_note_critere(' . $idCt . ');calc_note_module();" class="crit' . $idCt . '" name="scrit_' . $row->idSousCritere . '" required > /' . $row->bareme;
    			$Elem = $souscritere."&nbsp;&nbsp".$cmt;
            }
     
    		    return $Elem;
     
        }
    	//SAISIE des commentaires sur chaque sous-critère
    	public function set_comments($id)
    	{
    		$com = array();
    		$com["<textarea class='comm_".$id."' name='comm_".$id."' rows=4 cols=20>veuillez saisir votre commentaire...</textarea>"];
    		return $com;
    	}
        //Récupère tous les critères puis génrations des inputs en fonction du barème.
        public function get_crit($module) {
            $query = $this->db->query('SELECT idCritere,libelle,bareme,idModule FROM criteres WHERE idModule=' . $module . '');
    		$critere = array();
            foreach ($query->result() as $row) {
                $critere[$row->libelle . "    <input type='number' step='0.25' min='0' max='" . $row->bareme . "' value='0' id='note_crit' onchange='calc_note_module();' class='note_crit" . $row->idCritere . "' name='note_crit" . $row->idCritere . "'/> / " . $row->bareme] = $this->get_sous_crit($row->idCritere);
            }		
     
            return $critere;
        }


    J'arrive juste à afficher une textearea mais tous les autres éléments comme les critères et sous critères disparaissent. Si vous pouvez me dire si il y a des erreurs comme sur le type de $cmt dont je ne suis pas certain... ça serait sympa.
    Message d'erreur:

  2. #2
    Membre éprouvé
    Bonsoir,
    apparemment tu as résolu ton soucis mais je vois des problèmes dans tes codes, du html qui se promène dans ton modèle n'est pas une bonne idée,
    tout ça devrait être dans une vue, tu concatènes des $id dans ta requête attention risque d'injection SQL
    Par exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $this->db->query('SELECT idSousCritere,libelle,bareme FROM sous_criteres WHERE idCritere=' . $idCt . '');
    peut s'écrire de la manière suivante
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $this->db->query('SELECT idSousCritere,libelle,bareme FROM sous_criteres WHERE idCritere = ?', array($idCt));


    Tu devrais sûrement revoir ta conception....
    Le bienfait n'est jamais perdu

  3. #3
    Membre à l'essai
    Bonjour,

    Merci de ta réponse et excuses moi pour ce retour tardif. Je vais voir si je peux repasser cela dans la vue à ce stade si possible, sinon je vais remplacer les requêtes de façon à éviter la concaténation, Merci beaucoup de ton aide !