IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Disallowed Key Character


Sujet :

CodeIgniter PHP

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut Disallowed Key Character
    Bonjour,

    Le problème semble simple mais toute mes recherche ont été dans résultat !!!!!!!

    j'ai un formulaire qui contient un tableau de salarié avec leur nombre de jours d'absences comme ça :
    Code html : 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
    <table class="table table-striped table-bordered table-hover" id="sample_1">
        <thead>
            <tr>
            	<th class="table-checkbox"><input type="checkbox" class="group-checkable" data-set="#sample_1 .checkboxes"/></th>
                <th>Nom et Prénom</th>
                <th>Jours d'absence</th>
            </tr>
        </thead>
        <tbody>
    		<?php foreach ($paie as $paie): ?>   
            <tr class="odd gradeX">
            	<td><input type="hidden" value="<?php echo $paie->getId(); ?>" name="ids['<?php echo $paie->getId(); ?>']"/>
                	<input type="checkbox" class="checkboxes" id="<?php echo $paie->getId(); ?>" value="1" />
                	</td>
                <td><?php echo $paie->getSalaries()->getNom().' '.$paie->getSalaries()->getPrenom(); ?></td>
                <td><input type="number" name="cng['<?php echo $paie->getId(); ?>']" value="<?php echo $paie->getNbJourAbsence();  ?>" /></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

    donc, en cliquant sur "Enregistrer" voila ce que je fait dans mon controlleur (pour vérifier que je reçoit bien les infos, puis je vais construire ma requête):
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $post_data = $this->input->post('cng');
     
    	 echo $post_data;

    j’obtiens alors à l'écran : Disallowed Key Characters.

    Ma question alors : qu'est ce qu'il manque pour que je puisse récupérer correctement mes ids et mes congés pour les sauvegarder en base de données correctement ?

    Merci.
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Essaie plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="cng[<?php echo $paie->getId(); ?>]"
    sinon regarde
    http://www.developpez.net/forums/d82...ey-characters/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Merci sabotage, ta solution n'a rien modifié et j'ai aussi lu les liens de l'autre thread, ils parlent de proxie ou de firewall, j'ai rien de ça

    je continue à chercher !

    Merci.
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  4. #4
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    bon, j'avance un petit peu, sur le net il faut aller voir la fonction _clean_input_keys dans system/core/Input.php (CodeIgnet 2+)
    Code php : 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
     
    function _clean_input_keys($str)
    	{
    		if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
    		{
    			exit('Disallowed Key Characters.'.$str);
    		}
     
    		// Clean UTF-8 if supported
    		if (UTF8_ENABLED === TRUE)
    		{
    			$str = $this->uni->clean_string($str);
    		}
     
    		return $str;
    	}

    j'ai ajouté le .$str en cas d'erreur pour voir mon str quelque soit le caractère, j'ai alors
    Disallowed Key Characters.'25'
    bon à priori, c'est le simple quote qui cause problème, après je ne sais pas comment l'ajouter dans ma fonction _clean_input_keys

    Et après, je pense aussi qu'une manière de résoudre le problème est d'envoyer le form avec les tableau serialiser, c'est la commande Serialize mais je n'ai pas d'idée comment l'utiliser pour concaténer toutes mes infos est ce dans la boucle ou bien par la suite ?

    Merci à vous !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  5. #5
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    j'avance , le problème est cerné, il est dans le bout de code que je met entre crochet pour ajouter l'id dans ids[] ou cng[], si j'utilise ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="hidden" value="<?php echo $paie->getId(); ?>" name="ids[]"/>
    <input type="number" name="cng[]" value="<?php echo $paie->getNbJourAbsence();  ?>" />

    j'ai bien mon array :
    array (size=2)
    'ids' =>
    array (size=3)
    0 => string '25' (length=2)
    1 => string '26' (length=2)
    2 => string '27' (length=2)
    'cng' =>
    array (size=3)
    0 => string '0' (length=1)
    1 => string '0' (length=1)
    2 => string '0' (length=1)
    Reste à bien les exploiter !!

    bon j'ai contourné le problème mais malheureusement pas d'idée sur le pourquoi de la chose !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  6. #6
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    bon, je met à Résolu le sujet, c'est bien de poser la question et de répondre tout seul

    Après avoir récupérer le tableau des données, voila le code de mon controlleur :

    Code php : 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
     
    public function enreg_absences()
    	{
     
    	 $post_data = $this->input->post();
     
    	 $ids = (isset($post_data['ids']))? $post_data['ids']:array();
    	 $cng = (isset($post_data['cng']))? $post_data['cng']:array();
     
    	 $prm1 = '';
    	 $prm2 = '';
     
             foreach ($ids as $key => $value){
    		 $prm1 = $prm1.' WHEN id ='.$value.' THEN '.$cng[$key];
    		 //echo $key.'->'.$value;
    		 //echo '<br>';
    		 $prm2 = $prm2.$value.', ';
    	 }
     
    	 $prm1 = $prm1.' ELSE nb_jour_absence
    						END';
    	 $prm2 = ' WHERE id IN ('.substr($prm2,0,-2).')';
     
    	 $query= 'UPDATE paie 
    		SET `nb_absence` = CASE '.$prm1.$prm2 ;
     
    		$db = $this->em->getConnection();
    		$stmt = $db->prepare($query);
    		$params = array();
    		$stmt->execute($params);
     
    		 redirect('paie');
    	}

    donc le but était de fabriquer une seule requête UPDATE de plusieurs lignes sous cette forme la :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE paie SET  `nb_absence` = CASE WHEN id =25 THEN 10 
                                                            WHEN id =26 THEN 20 
                                                            WHEN id =27 THEN 30 
                                                            ELSE nb_jour_absence 
                                                     END 
    WHERE id IN ( 25, 26, 27 )

    bon je vais pouvoir sortir la paie
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Disallowed Key Characters
    Par xouzi dans le forum CodeIgniter
    Réponses: 0
    Dernier message: 23/10/2011, 17h21
  2. Disallowed Key Characters
    Par Mimidoux dans le forum CodeIgniter
    Réponses: 1
    Dernier message: 23/10/2009, 19h01
  3. Virtual-key code
    Par lyrau dans le forum Windows
    Réponses: 2
    Dernier message: 29/03/2003, 19h22
  4. [XMLRAD] invalid character type
    Par Sylvain James dans le forum XMLRAD
    Réponses: 4
    Dernier message: 10/12/2002, 07h47
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo