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

JavaScript Discussion :

conversion de type


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut conversion de type
    Bonjour,

    sous IE (pas encore pu tester avec FF), je remplis une liste déroulante avec une requête SQL sur base MySQL.
    Voilà ce que j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option value='".$row['idveh']."'>".$row['num_vague']."</option>";
    $row['idveh'] est un champ de type INT(20) qui est aussi clé primaire de ma table, en auto-incrément.
    L'interpréteur HTML a l'air de bien le reconnaître en tant que INT puisque quand j'écris dans ma base à partir de mon formulaire html, les données sont cohérentes, avec un champ idveh correct.

    Mais lorsque je veux récupérer dans un script la valeur du contrôle select écrit plus haut, JavaScript me renvoie un undefined ..
    Voici mon bout de code du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    part3 = document.getElementById('vehic2');
    var txtpart3;
    if (part3.value == "-1")
    	txtpart3 = "";
    else txtpart3 = part3.value;
     
    alert(typeof(txtpart3));
    mon alert me renvoie effectivement undefined...

    Vu que je veux renvoyer cette valeur dans un script php via un XmlHttpRequest, ça me pose un gros pb.
    Pour info, le premier bout de code php que j'ai mentionné en haut est aussi transmis à ma page html via un autre XHR...

    Je pense qu'il y a un problème de conversion de type quelque part mais là je suis incapable de savoir où ??

    Auriez-vous une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Par défaut
    et un alert(part3) te donnes quoi?

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par ziggotos
    L'interpréteur HTML a l'air de bien le reconnaître en tant que INT puisque quand j'écris dans ma base à partir de mon formulaire html, les données sont cohérentes, avec un champ idveh correct.
    Non : c'est ta bdd qui fait la conversion lors de l'insert ...
    HTML ne connait que les "string", et pour JS, il faut convertir avec parseInt() ou parseFloat() ...
    Pour typeOf, la syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(typeOf txtpart3);
    A+

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Citation Envoyé par E.Bzz
    Non : c'est ta bdd qui fait la conversion lors de l'insert ...
    je comprends mieux...

    parseInt et parseFloat me renvoient NaN tous les deux...

    J'ai essayé de contourner le pb en exécutant le bout en php, à la validation de mon formulaire mais j'ai le même problème, quoique php ne me renvoie pas undefined mais Resource id #x

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    J'ai résolu le pb avec mon script php de soumission du formulaire.. Mais si vous avez des idées pour traiter le problème en JavaScript, ça m'intéresse !

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Bon, j'ai résolu mon pb en envoyant la valeur de mon 'vehic2' en argument de la fonction JavaScript..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id='vehic2' style='display:inline'>
        <select name='vehic2' onChange="identifie(vehic2.value)">
            <option value='-1'>D'abord à gauche !</option>
        </select>
    </div>
    ça c'est le code html..

    pour la mise à jour, voilà mon script 'ajaxVeh.php' qui génère mon select 'vehic2'
    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
    <?php
    Require('bdd.php');
     
    echo "<select name='vehic2' onchange='identifie(vehic2.value)'>";       
    if(isset($_POST["idVehic1"])){
        OpenBase();
        $query = "SELECT idveh,num_vague FROM vehicules WHERE type_veh=\"".$_POST["idVehic1"]."\" AND process_restit=0 ORDER BY num_vague";
        $result = mysql_query($query);
        echo '<option value="-1" selected>Choisir un véhicule</option>';
        while($row = mysql_fetch_assoc($result)){
            echo '<option value="'.$row['idveh'].'">'.$row['num_vague'].'</option>';
        }
        CloseBase();
    }
    echo "</select>";
    ?>
    Le bout de code JavaScript qui appelle :
    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
    35
    36
    37
    38
    39
    40
    41
    function identifie(p3)
    {
        var xhr1 = getXhr1();
        // On définit ce qu'on va faire quand on aura la réponse
        xhr1.onreadystatechange = function(){
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if(xhr1.readyState == 4 && xhr1.status == 200){
                leinput = xhr1.responseText;
                //alert(leinput);
                // On se sert de innerHTML pour rajouter les options a la liste
                document.getElementById('identifix').innerHTML = leinput;
            }
        }
        //On récupère l'imputation
        var part1;
        part1 = document.getElementById('imput');
        var txtpart1;
        txtpart1 = part1.value;
        //Pareil pour le véhicule et et sa vague
        var part2;
        part2 = document.getElementById('vehic1');
        var txtpart2;
        if (part2.value == '-1')
            txtpart2 = "";
        else txtpart2 = part2.value;
    				
        var txtpart3;
        if (p3 == "-1")
            txtpart3 = "";
        else txtpart3 = p3;
    				
        val = new Array(txtpart1,txtpart2,txtpart3);
    				
        // Ici on va voir comment faire du post
        xhr1.open("POST","ajaxIdt.php",true);
        // ne pas oublier ça pour le post
        xhr1.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        // ne pas oublier de poster les arguments
    								
        xhr1.send("p1="+val[0]+"&p2="+val[1]+"&p3="+val[2]);
    }

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    A lire ça je me dis que getElementById().value c'est ptêt un peu léger pour récupérer la valeur d'un select.
    getElementById().options[getElementById().selectedIndex].value serait correct. Mais ça avait l'air de marcher sur mon select précédent..

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

Discussions similaires

  1. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  2. Conversion de type
    Par sovitec dans le forum Langage
    Réponses: 5
    Dernier message: 15/12/2004, 14h29
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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