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 :

fonction js qui ne reconnait pas le deuxième argument


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de Sianobel
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2007
    Messages : 54
    Points : 58
    Points
    58
    Par défaut fonction js qui ne reconnait pas le deuxième argument
    Bonjour,

    Je suis en train de bricoler un petit script d'autocomplete de champ input. Ceux proposés sur le net ne me plaisent pas ou je n'y comprends rien ^^

    Bref, là n'est pas la question. Tout le script fonctionne plutôt bien sauf quand je décide de cliqué sur un des choix que l'ajax me propose. En gros, il dois transmettre deux variables pour changer les valeurs de deux champs inputs. Problème, l'id chiffré passe sans problème mais pas le nom de la catégorie. Firebug me répond que le nom n'est pas définis. Je ne sais pas ce qu'il attends sur ce coup là car il me semble que tout est définis.

    fichier qui suggère
    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
    <?php
    header('Content-type: text/html; charset=utf-8');
    // on inclut la connexion
    include ("include/config.php");
     
    // on inclut la connexion
    $connexion=mysql_connect($host, $user, $pass);
    $database=mysql_select_db($nombase);
                    
    // on fait la requête
    $sql = "SELECT * FROM categorie_pub
            WHERE nom LIKE '%".$_POST['cat']."%'";
    $req = mysql_query($sql);
     
    $verif = mysql_num_rows(MYSQL_QUERY($sql));
     
    if ($verif > 0) {
                    
    $i = 0;
    echo '<ul>';
    // on boucle sur tous les éléments
    while($autoCompletion = mysql_fetch_assoc($req)){
            echo utf8_encode("<li onClick='scp($autoCompletion[id]);' >$autoCompletion[nom]</li>");
            }
            echo '</ul>';
            die();
    }
    ?>
    le formulaire
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <script type="text/javascript" src="script/browser.js"></script>
    <script type="text/javascript" src="script/fonction.js"></script>
    <script language="javascript">
    function autocomplete(saisie) {
    	var xhr = getXMLHttpRequest()
     
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
     
    		texte = xhr.responseText;
     
    		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    		if(xhr.readyState == 4 && xhr.status == 200){
    			if (saisie) {
    				if (texte) {
    					a('suggestion').innerHTML = texte + saisie;
    					a('suggestion').style.display = "block";
     
    				}			
    			} 
    			else {
    				a('suggestion').style.display = "none";
    				a('id_categorie').value = 0;
    			}
    		}
    	}
    	xhr.open("POST","categorie_pub.php",true);
     
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; Charset=utf-8");
    	xhr.send('cat='+saisie);
    }
     
    function scp(idpub,nompub) {
    	a('id_categorie').value = idpub
    	a('categorie').value = nompub
    	a('suggestion').style.display = "none";
    }
    </script>
     
    <div id="contenu_admin">
    	<form>
    		<ul>
    			<li> <label> Titre : </label> <input type="text" name="titre" value="" /></li>
    			<li> <label> Descriptif : </label> <input type="text" name="description" value="" /></li>
    			<li> <label> Catégorie : </label> <input type="text" name="categorie" id="categorie" value="" onKeyup="autocomplete(this.value);" /></li>
    				<div id="suggestion" style="display:none;"></div>
    			<li> <label> Id de la catégorie : </label> <input type="text" name="id_categorie" id="id_categorie" value="0" /></li>
    			<li> <label> Url : </label> <input type="text" name="url" value="" /></li>
    			<li> <label> Miniature : </label> <input type="text" name="image" value="" /></li>
    			<li> <label> Type de lien : </label> 
    				<SELECT NAME="type">
    					<OPTION VALUE="1">Texte
    					<OPTION VALUE="2">Mixte
    					<OPTION VALUE="3">Script
    				</SELECT>
    			</li>
    			<li> <label> Script : </label> <textarea name="script"></textarea></li>
    		</ul>
    		<input type="submit" />
    	</form>
    </div>
    Pour le moment, je ne transmets qu'une valeur car je ne sais plus ou chercher.

    Un grand merci à ceux qui s'attarderont sur le problème.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Pas très explicites tes explications...

    Ceci dit, dans ton code, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onClick='scp($autoCompletion[id]);' >
    Tu ne passes donc qu'un argument à une fonction qui en attend deux !
    Ce qui explique l'erreur.

    Du coup
    Pour le moment, je ne transmets qu'une valeur car je ne sais plus ou chercher.
    Ben, c'est pas nous qui allons deviner ce que tu veux passer comme valeur

    Firebug me répond que le nom n'est pas définis. Je ne sais pas ce qu'il attends sur ce coup là car il me semble que tout est définis.
    Il attend tout simplement le second argument que tu as dit à JavaScript que tu donnerais
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre du Club Avatar de Sianobel
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2007
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Voilà le bout ou je transmet les deux variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while($autoCompletion = mysql_fetch_assoc($req)){
    		echo utf8_encode("<li onClick='scp($autoCompletion[id],$autoCompletion[nom]);' >$autoCompletion[nom]</li>");
    	}
    Et voilà le fonction qui doit recevoir les deux arguments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function scp(idpub,nompub) {
    	a('id_categorie').value = idpub
    	a('categorie').value = nompub
    	a('suggestion').style.display = "none";
    }
    En gros, la fonction accepte seulement l'idpub mais quand je rentre un argument pour le nompub, il me fait le coup de la variable a définir alors qu'elle est définie.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    1) il serait beaucoup plus intéressant pour nous d'avoir le html/js généré, et aps le php...
    2) elle fait quoi la fonction a() ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club Avatar de Sianobel
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2007
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Bonjour, la fonction a() remplace le getElementByid et pour le html généré, ça donne quelque chose dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
    <li onClick='scp(5,Actualité);' >Actualité</li>
    <li onClick='scp(1,Internet);' >Internet</li>
    <li onClick='scp(2,Shopping);' >Shopping</li>
    </ul>
    Bien entendu, cela varie en fonction de ce qui est rentré dans le champ input.

  6. #6
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Sianobel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
    <li onClick='scp(5,Actualité);' >Actualité</li>
    <li onClick='scp(1,Internet);' >Internet</li>
    <li onClick='scp(2,Shopping);' >Shopping</li>
    </ul>
    Heu... il ne manque pas un truc ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
    <li onClick="scp(5,'Actualité');" >Actualité</li>
    <li onClick="scp(1,'Internet');" >Internet</li>
    <li onClick="scp(2,'Shopping');" >Shopping</li>
    </ul>

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    si tu souhiates passer du string ... faut en effet mettre des quotes ...
    sinon il pense avoir affaire a des variables ...

    Actualité et une variables avec un accent
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre du Club Avatar de Sianobel
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2007
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Il s'agissait bien des apostrophes. Par contre, va falloir que je remanier la ligne echo pour que ça fonctionne totalement en php. Là, j'ai mis tel quel l'html avec dedans les implantations de php pour tester.

    Merci pour vos réponses.

    Edit: Il y a un problème avec les accents? Comment l'éviter s'il vous plait car j'ai besoin que les accents passent.

    Edit2: Ça va pour les accents, ils passent tous seuls. Voici le php qui rends le script dynamique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($autoCompletion = mysql_fetch_assoc($req)){
    		echo utf8_encode("<li onClick=\"scp($autoCompletion[id],'$autoCompletion[nom]')\"; >$autoCompletion[nom]</li>");
    	}

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Souci de syntaxe php ...

    perso j'ai pris pour habitude d'utiliser les ' pour php afin de conserver les " pour html.

    desavantage les variables php ne sont plsu interpétées ...
    Enooooooooorme avantage le code est plus clair et plus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($autoCompletion = mysql_fetch_assoc($req)){
    		echo utf8_encode('<li onClick="scp('.$autoCompletion[id].',\''.$autoCompletion[nom].'\')"; >'.$autoCompletion[nom].'</li>"');
    	}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. fonction boucle des radio buttons qui ne reconnait pas le dernier radio
    Par mystro7200 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 15/09/2008, 14h06
  2. requete SQl avec la fonction max () qui ne marche pas
    Par eclipse012 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 14h32
  3. fonction header qui ne redirige pas
    Par cels dans le forum Langage
    Réponses: 8
    Dernier message: 01/11/2006, 10h12
  4. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 11h55
  5. Une requête qui ne reconnait pas is not null
    Par LeBauw dans le forum Access
    Réponses: 2
    Dernier message: 08/09/2005, 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