Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2011, 14h35   #1
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
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 :
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
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 14h51   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
a vrai dire je ne comprends même pas comment ton php redige ton html
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 15h04   #3
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
je ne comprends pas ce que vous n'avez pas compris .
en fait voilà le script sans le php :

Code :
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 :
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.
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 15h18   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 269
Points : 7 269
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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 15h26   #5
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
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 :
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);
 
        });
    }
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 17h54   #6
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
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 :
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
    });     
}
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 18h21   #7
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

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

Code php :
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>
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 21h10   #8
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
merci pour vos réponses

Citation:
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
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 15h00   #9
Membre éclairé
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 256
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 256
Points : 320
Points : 320
salut,

Supposant que le code suivant te donne un resultat correct :
Code :
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 :
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);
        });
    }
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 14h46   #10
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
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 :
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
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h02   #11
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 269
Points : 7 269
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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h39   #12
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 98
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 98
Points : 19
Points : 19
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 :
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 :
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
bulldo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 15h49   #13
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 269
Points : 7 269
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 :
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+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h16.


 
 
 
 
Partenaires

Hébergement Web