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

Langage PHP Discussion :

Génération de boutons radios et de champs texte


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut Génération de boutons radios et de champs texte
    Bonjour tout le monde,

    Je génère sur le clic d'un lien un bouton radio qui a l'id <gras></gras> ainsi qu'une zone de texte et ceci en PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $retour.="<td align=\"center\"><input type=\"radio\"";
    $retour.= "value=\"".$_POST['id']."_".$resultat_rubriques['ID']."_".$resultat_gradations['Numero_gradations']."\" name=\"".$resultat_rubriques['ID']."\" checked=\"checked\" onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset[Colonnes_ou_lignes]."');$('#text_complement_info').attr('disabled', true);\"> <input type=\"text\" class=\"text_complement_info\"/></td>";
    Premier problème, le bouton radio ne s'affiche pas, voici le code généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input value="2_63_1" name="63" checked="checked" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes');$('#text_complement_info').attr(" disabled="disabled" ,="" true);="" type="radio"> <input class="text_complement_info" type="text"></td>value="2_63_1" name="63" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes')" checked="checked" /&gt;
    Je génère aussi deux autres boutons radios qui porte les id <gras>2_63_2</gras> et <gras>2_63_3</gras>.

    J'ai aussi des problèmes avec ces boutons radios, ils n'apparaissent pas, voici le code PHP :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $retour.="<td align=\"center\"><input type=\"radio\"";
    $retour.= "value=\"".$_POST['id']."_".$resultat_rubriques['ID']."_".$resultat_gradations['Numero_gradations']."\" name=\"".$resultat_rubriques['ID']."\" checked=\"checked\" onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset[Colonnes_ou_lignes]."');$('#text_complement_info').attr(\"disabled\", false);\"> <input type=\"text\" class=\"text_complement_info\"/></td>";
    Voici le code généré :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td align="center"><input value="2_63_2" name="63" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes'); ;$('#text_complement_info').attr(" disabled="disabled" ,="" false);="" type="radio"> <input type="text"></td><td align="center"><input value="2_63_3" name="63" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes'); ;$('#text_complement_info').attr(" disabled="disabled" ,="" false);="" type="radio"> <input type="text"></td>
    Voyez-vous les erreurs de syntaxes ?

    Je vous remercie d'avance pour votre aide.

    beegees

  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
    Par défaut
    Le code PHP que tu montres, ne donnes pas le code HTML que tu obtiens.

    Est-ce que tu as fais un minimum de debugage, par exemple en retirant ton evenement onclick ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Chacun à sa façon de coder, évidemment, mais personnellement je ferais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $retour = '<td align="center">';
    $retour = '<input type="radio" value="'.$_POST['id'].'_'.$resultat_rubriques['ID'].'_'.$resultat_gradations['Numero_gradations'].'" name="'.$resultat_rubriques['ID'].'"  checked="checked" onclick="Coter(this.value,document.getElementById(\'liste_et\').value, \''.$resultat_fieldset['Colonnes_ou_lignes'].'\');$(\'#text_complement_info\').attr(\'disabled\', true)" />';
    $retour .= '<input type="text" class="text_complement_info" />';
    $retour .= '</td>';
    Des simple quote en Php, et échappement au niveau des chaines en JS.

    Coté erreur, il manque la fermeture de parenthèse de la fonction Coter(js).
    Il manque des quotes pour le tableau $resultat_fieldset[Colonnes_ou_lignes]
    Il y a un ="" dans le HTML généré, je ne sais pas d'où il provient (le code Php me semble pas le générer).
    De même que le code généré donne ceci : <input type="text"> alors que coté Php il y a ceci : <input type=\"text\" class=\"text_complement_info\"/>


    Donc comme dit Sabotage, le code Php ne correspondrait pas au code HTML, ou inversement


    Mise à par ça, je remarque que tu utilise JQuery, du coup, pourquoi ne pas l'exploiter ?

    Un truc du genre (dans le head, et le bouton radio aurait comme ID le_id _du_radio) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $(document).ready(function() {
        function Coter() {... }
     
        $('#le_id _du_radio').click(function() {
            coter($(this).val(), $('liste_et').val(), '<?php echo $resultat_fieldset['Colonnes_ou_lignes'] ?>');
            $('#text_complement_info').attr('disabled', true);
        }
    }
    Plus de prise de tête pour les échappements.
    Franchement pas essayé, c'est juste pour exemple

  4. #4
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Bonjour à vous deux et merci pour vos réponses.

    J'ai donc amélioré mon code :

    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
    if($points_speciaux == '2_63_1')
    									{
    										$retour.= "onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset[Colonnes_ou_lignes]."'); $('#text_complement_info').attr('disabled', true);\" ";
    									}								
    									//pour le point 2 de etudiant evalue le matire de stage, rubrique 4, bouton radio 2 et 3 rarement ou jamais
    									elseif(($points_speciaux == '2_63_2')||($points_speciaux == '2_63_3'))
    									{
    										$retour.=  "onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset[Colonnes_ou_lignes]."'); $('#text_complement_info').attr(\"disabled\", false);\"> <input type=\"text\" class=\"text_complement_info\"/>";
    									}
    									else
    									{
    										//ici, pas besoin de input text
    										$retour.= "onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset[Colonnes_ou_lignes]."')\"";
    									}
    									//suite du bouton radio et de l'input text (cela me permet de ne pas devoir taper 3 fois le même code pour la création de ces inputs)
    									$retour.= " value=\"".$_POST['id']."_".$resultat_rubriques['ID']."_".$resultat_gradations['Numero_gradations']."\" name=\"".$resultat_rubriques['ID']."\" checked=\"checked\" ></td>";
    Je vérifie donc si je crée le bouton radio dont l'id vaut 2_63_1 et ensuite un elseif pour les boutons radio 2_63_2 et 2_63_3 et ensuite un else pour les autres cas.

    Cela m'affiche 3 colonnes, avec dans la première colonne un bouton radio (résultat attendu), dans la seconde, un bouton radio désactivé et la zone de texte juste en dessous et dans la 3e colonne, une bouton radio désactivé avec une zone de texte en dessous.

    Les boutons radios ne devraient pas être désactivés mais les zones de textes devraient être désactivées si le bouton radio 2_63_1 est coché.

    Voici le code généré actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr>
    <td>
    <a>S’est-il directement occupé de vous ?
    Si rarement ou jamais, qui s’occupait de vous ?
    </a>
    </td>
    <td align="center"><input onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes'); $('#text_complement_info').attr('disabled', true);" value="2_63_1" name="63" checked="checked" type="radio"></td><td align="center"><input value="2_63_2" name="63" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes'); ;$('#text_complement_info').attr(" disabled="disabled" ,="" false);="" type="radio"> <input type="text"></td><td align="center"><input value="2_63_3" name="63" onclick="Coter(this.value,document.getElementById('liste_et').value,'lignes'); ;$('#text_complement_info').attr(" disabled="disabled" ,="" false);="" type="radio"> <input type="text"></td></tr>
    Encore merci pour votre aide et bon long WE.

    beegees

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Tu oubli toujours les quotes ici : $resultat_fieldset[Colonnes_ou_lignes]
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $retour.= "onclick=\"Coter(this.value,document.getElementById('liste_et').value,'".$resultat_fieldset["Colonnes_ou_lignes"]."'); $('#text_complement_info').attr('disabled', true);\" ";
    Je remarque toujours ceci : ="" false

    Comme je ne le vois pas du tout dans ton code, j'ai l'impresion que c'est le tableau $resultat_fieldset[Colonnes_ou_lignes] (le même qui manque les quotes d'ailleurs) qui génèrerait ce code.
    Ca va devrait provoquer une erreur pour les disabled.

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Pour mon "impression", elle me parais finalement impossible.

    A mon avis, le true et false ici -> attr('disabled', true) serait généré par un code Php, non ?
    Ou alors c'est le disabled qui serait généré (et aboutir à une mauvais chaine)
    Ou alors cette partie entièrement : $('#text_complement_info').attr('disabled', true)

    Montre tu tout le code ?

Discussions similaires

  1. [WD-2010] Boutons radio, variables et champs Word
    Par canary dans le forum VBA Word
    Réponses: 12
    Dernier message: 28/12/2012, 14h36
  2. Donner le focus a un bouton radio si focus input texte
    Par flo57570 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/09/2010, 10h51
  3. (debutant) bouton qui manipule un champs texte
    Par soiz775 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/02/2009, 17h33
  4. bouton radio et zone de texte
    Par manu80000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2007, 09h14
  5. [FLASH 8] Bouton qui rempli un champ texte
    Par touriste13 dans le forum Flash
    Réponses: 2
    Dernier message: 10/05/2006, 10h26

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