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 :

code php à l'intérieur des balises javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut code php à l'intérieur des balises javascript
    Salut !

    j'ai un problème avec avec mon code . Je vais utiliser du code php à l'intérieur des balises <script> pour passer une variable à un lien href. Je n'ai pas réussi à avoir le bon résultat car j'ai un problème dans la syntaxe. Voici le 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
    17
    18
    19
    20
    21
     
    <script type="text/javascript">
    	function procMe(celDiv,id){
                $(celDiv).click(function (){
                    var objet =this.innerHTML;
    		<?php	
    		    $base = mysql_connect ('localhost', 'root', ''); 
    		    mysql_select_db ("mabase", $base) ; 
    		    $sql = 'SELECT id, objet FROM messages ORDER BY objet asc';
                        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    	            while ($data = mysql_fetch_array($req)){?>
    		var ch1 = '<a href="consulterMessage.php?id=<?php echo $data['id']; ?> " class="vClass" title="consulter le message">'; 
    		var a = ch1.concat(objet) +'</a>'<?php } ?>;
    		$(this).html(a);
            });
        } 
                     <?php   
                           mysql_free_result ($req); 
                           mysql_close ();
                     ?>
    </script>

    ma boucle while ne marche pas très bien et j'ai le même id pour tous mes liens. Je ne sais pas où est le problème et j'avoue que le code n'est pas propre.
    Merci d'avance

  2. #2
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    a vrai dire je ne comprends même pas comment ton php redige ton html
    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 !

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    je ne comprends pas ce que vous n'avez pas compris .
    en fait voilà le script sans le php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;
    	    var ch1 = '<a href="consulterMessage.php" class="vClass" title="consulter le message">';
    	    var a = ch1.concat(objet) +'</a>';
    	    $(this).html(a);
            });
        } 
    </script>
    et ce que je veux faire c'est passer la variable id à mon lien et ça je dois le faire avec ce code php que je n'arrive pas pour le moment à combiner avec mon script :

    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
    $base = mysql_connect ('localhost', 'root', ''); 
    mysql_select_db ("mabase", $base) ; 
     
    $sql = 'SELECT id, objet FROM messages ORDER BY objet asc';
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<b/>'.mysql_error()); 
     
    while ($data = mysql_fetch_array($req)) {
    	echo '<a href="consulterMessage.php?id='.$data['id'].'" target="_blank"></a>';
    }
     
    mysql_free_result ($req); 
    mysql_close ();
     
     
    ?>
    J'espère que le problème est plus clair maintenant.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonsoir,

    Peut-on voir le code HTML généré?
    J'ai peur que ça va redéclarer plusieurs fois les variables ch1 et a et ce sera le dernier qui sera retenue à la fin de l’exécution de la fonction.

    A+.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    oui effectivement c'est ce qui se passe
    je ne sais pas comment corriger ce problème avec la boucle while . Voilà le code html de la page


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;
    	    var ch1 = '<a href="consulterMessage.php?id=121 " class="vClass" title="consulter le message">'; 
    	    var a = ch1.concat(objet) 		
    	    var ch1 = '<a href="consulterMessage.php?id=129 " class="vClass" title="consulter le message">'; 
    	    var a = ch1.concat(objet) +'</a>';
    	$(this).html(a);
     
            });
        }

  6. #6
    Membre émérite

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Par défaut
    Ton code "fonctionne" ( http://jsfiddle.net/BAMw8/3/ )

    Tout dépend de :
    • Comment tu appelles cette fonction
    • Que dois réellement produire ce code


    Si j'analyse ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function procMe(celDiv,id){       // à quoi sert 'id' alors qu'il n'est pas utilisé ?  
        $(celDiv).click(function (){   // comme ça il faut que tu envoies un sélecteur    
            var objet =this.innerHTML; // $(this).html() ?
            var ch1 = '<a href="consulterMessage.php?id=121 " class="vClass" title="consulter le message">';  
            var a = ch1+objet+'</a>';    
            console.log(a);        
            var ch1 = '<a href="consulterMessage.php?id=129 " class="vClass" title="consulter le message">';          
            var a = ch1+objet+'</a>'; // Donc ch1 et a sont à chaque fois modifiés...
            console.log(a);   
            $(this).html(a);    // Donc 1 seul lien
        });     
    }

  7. #7
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Essaie ceci (je n'ai pas testé).

    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
    <script type="text/javascript">
    	function procMe(celDiv,id){
    		$(celDiv).click(function (){
    			var ch1,a,objet =this.innerHTML;<?php
    			$base = mysql_connect ('localhost', 'root', '');
    			mysql_select_db ("mabase", $base) ;
    			$sql = 'SELECT id, objet FROM messages ORDER BY objet asc';
    			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    			$js='';
    			while ($data = mysql_fetch_array($req)){
    				$js.="\t\t".'ch1=\'<a href="consulterMessage.php?id=\'+unescape(\''.rawurlencode($data['id']).'\')+\'" class="vClass" title="consulter le message">\';'."\n";
    				$js.="\t\tch1.concat(objet)+'</a>';\n";
    			}
    			mysql_free_result ($req);
    			mysql_close ();
    			echo $js; ?>
    			$(this).html(a);
    		});
    	}
    </script>

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    merci pour vos réponses

    Tout dépend de :
    Comment tu appelles cette fonction
    Que dois réellement produire ce code
    en fait j'ai un tableau fait avec flexigrid qui ressemble à ça http://www.flexigrid.info/ et j'ai transformé les cellules en des cellules cliquables pour pouvoir afficher des infos de la base de données pour chaque ligne du tableau et c'est ce que fait cette fonction.

    le problème est que la valeur de l'id est écrasé à chaque fois et j'ai donc le dernier id qui est transmis pour chaque lien

    c'est juste un problème de syntaxe. Eric2a le code ne marche pas il n'affiche pas ( ?id= .... ) au niveau de l'url. j'ai juste essayé le code je vais essayer de voir où se trouve l'erreur.

    Merci quand même pour vos réponses

  9. #9
    Invité
    Invité(e)
    Par défaut
    salut,

    Supposant que le code suivant te donne un resultat correct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($data = mysql_fetch_array($req)) {
    	echo '<a href="consulterMessage.php?id='.$data['id'].'" target="_blank"></a>';
    }
    Le code suivant devrait te générer un code correct (c'est un copier coller quasi).
    Regarde le html qui a été généré (code source de la page).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function procMe(celDiv,id){
                $(celDiv).click(function (){
                    var objet =this.innerHTML;
    //blabla php	   
    <?php $link = '<a href="consulterMessage.php?id='.$data['id'].'" target="_blank"  class="vClass" title="consulter le message"></a>' ?>
    		var ch1 = '<?php echo $link ?>';
    		var a = ch1.concat(objet) +'</a>'<?php } ?>;
    		$(this).html(a);
            });
        }

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    je suis toujours bloquée avec mon problème de liens et d'envoi d'id . J'ai essayé avec le code de galerien69 mais le problème est que je ne peux plus cliquer sur les champs de la cellule : je n'ai plus de lien html voilà le code source de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;	
    		var ch1 = '<a href="consulterMessage.php?id=133 class="vClass" title="consulter le message"></a>';
    		var a = ch1.concat(objet)+'</a>';		
    		var ch1 = '<a href="consulterMessage.php?id=121 class="vClass" title="consulter le message"></a>';
    		var a = ch1.concat(objet)+'</a>';			
    	        var ch1 = '<a href="consulterMessage.php?id=129 class="vClass" title="consulter le message"></a>';
    		var a = ch1.concat(objet)+'</a>';	
    	$(this).html(a);
            });
        }
    J'ai donc un lien html pour chaque id de ma table mais les liens ne fonctionnent pas

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    Déclare les variables a et ch1 avant la boucle et tu ne fais qu'une concaténation de la variable "a" dans la boucle.

    A+.

  12. #12
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 98
    Par défaut
    Salut !

    Je suis désolée mais quand vous me dites de ne construire qu'un seul lien il va m'écraser toutes les valeurs id et j'aurai la dernière valeur de la table et c'est ça qui me pose problème. voilà ce que j'ai fait :

    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
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;	
     
    	<?php	
    		$base = mysql_connect ('localhost', 'root', ''); 
    		mysql_select_db ("mabase", $base) ; 
    		$sql = 'SELECT id, objet FROM messages ORDER BY objet asc';
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    	    while ($data = mysql_fetch_array($req)){?>
    		<?php $link = '<a href="consulterMessage.php?id='.$data['id'].'" class="vClass" title="consulter le message">' ?>
    		<?php } ?>
    		var ch1 = '<?php echo $link;?>';
    		var a = ch1.concat(objet)+'</a>';
    				$(this).html(a);
            });
        }
    et voilà le html correspondant à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;	
    var ch1 = '<a href="consulterMessage.php?id=129" class="vClass" title="consulter le message">';
       var a = ch1.concat(objet)+'</a>';
       $(this).html(a);
            });
        }
    je ne peux pas déclarer ch1 à l'extérieur du while car ch1 contient les id . Peut être que je n'ai pas très bien compris ce que vous m'avez dit de faire

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Re,

    Déclare les variables a et ch1 avant la boucle et tu ne fais qu'une concaténation de la variable "a" dans la boucle.

    A+.
    Quelque chose comme ça :
    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
    function procMe(celDiv,id){
            $(celDiv).click(function (){
                var objet =this.innerHTML;
    			var a="";
    			var ch1="";
     
    	<?php	
    		$base = mysql_connect ('localhost', 'root', ''); 
    		mysql_select_db ("affilinemabdd", $base) ; 
    		$sql = 'SELECT id, objet FROM messages ORDER BY objet asc';
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    	    while ($data = mysql_fetch_array($req)){
    		$link = '<a href="consulterMessage.php?id='.$data['id'].'" class="vClass" title="consulter le message">' ?>
    		ch1 = '<?php echo $link;?>';
    		a += ch1.concat(objet)+'</a>';
    		<?php } ?>
    		$(this).html(a);
            });
        }
    A+.

Discussions similaires

  1. Code rajouté à la fin des fichiers javascript
    Par vladock dans le forum Sécurité
    Réponses: 15
    Dernier message: 23/11/2010, 11h12
  2. [MySQL] générer code php a partir des tables
    Par jrad31 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/07/2010, 09h59
  3. [MySQL] code php pour avoir des cases a cocher + FPDF
    Par kleyde89 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/06/2010, 03h49
  4. Réponses: 6
    Dernier message: 19/04/2008, 14h03

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