11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour !

J'ai encore une question à laquelle personne ne va répondre... Mais je la pose quand-même, sait-on jamais..........

J'utilise jQuery Tag-Editor for Pixabay
https://goodies.pixabay.com/jquery/tag-editor/demo.html,

et là je voudrais mettre dans "Initial Tags" les données renvoyées par ma WHILE Loop MySQL.

Pour schématiser, ma While loop me renvoie une liste de divs, contenant chacun un textarea théoriquement pré-rempli de tags .
Evidemment ces tags sont différents sur chacun de mes divs.... - Sinon je ne serais pas là...!

Je me disais que je pouvais commencer comme ça :


$(".myItem").each(function()
{  
   $myItem_id = $(this).attr('id');
   $.ajax({ });   /// Mais quoi après ? renvoyer chaque id en session ????? Nan !

// Donc on essaye ça  :

$(this).tagEditor({ 

 initialTags: [ <?php $id_safe = mysql_real_escape_string($id);  // $id provenant de ma while


	              $test =mysql_query("SELECT tags FROM xxx WHERE id ='".$id_safe."' ");
	               while ( $k = mysql_fetch_assoc($test) )
			       {  $all_tags = $k['tags'];
				  $tags1= explode(',', $all_tags);
                                   foreach($tags1 as $tag) echo "'$tag',"; 
                                 }
                 ?>],
/// MAIS NON, rien ne s'affiche,
/* et si j'utilise directement $tags issus de ma while mère, j'ai son contenu partout, dans chacun de mes textarea s'affichera "chat, chien, lapin", 
au lieu d'afficher pour le 1er div "oiseau, sauterelle", dans le 2e "chien, lapin", etc... */


J'ai essayé aussi avec un <?php foreach ($id as $v) { ?> <script type="text-javascript" > , tagEditor etc mais ça ne veut pas...


Besoin d'aide pour ça. Qui peut m'aider ou me dire où demander ?
L'auteur du pluggin ne voulant rien savoir....
SVP !!!

___________
2e question en rapport, ces tags sont éditables, et je voudrais proposer un autocomplete sur chacun d'entre eux, autocomplete en fonction des choix réalisés sur plusieurs multi-select dynamiquement liés... Smiley lol
Mais bon... Si déjà quelqu'un sait m'aider sur la 1ere question, je pense que je pourrais peut-être m'en sortir sur la 2e...

Merci d'avance...
Modifié par Vape6 (31 Mar 2016 - 19:39)
Personne a écrit :
Bon, on va commencer par ta première question, et non, ton code ne peut pas fonctionner en l'état car tu mets du code PHP (une boucle) dans une boucle javascript...
Et là, il s'agit d'une méconnaissance sur la différence des deux langages, l'un est un langage serveur (le PHP) qui est exécuter sur le serveur (d'où son nom Smiley langue ) et va envoyer vers ton navigateur du HTML/CSS/JS.
Et l'autre, c'est javascript qui est un langage client et va être exécuter sur ton navigateur, et donc ne peut pas ré-exécuter du PHP (sans passer par Ajax)

Donc soit tu gères tout d'un coup en PHP en faisant plusieurs requêtes SQL où tu assignes ensuite leur résultat à des variables JS :
	<script>
		<?php
			$test = ['chat', 'chien', 'lapin'];
		?>
		var test = <?php echo json_encode($test); ?>;

		console.log(test)
	</script>


Soit tu utilises Ajax, pour lancer les requêtes SQL une à une avec l'id qui va bien...
Salut,

(J'étais un peu fatiguée hier soir) et Si je récupère bien mes tags pour chacun des éléments - dans la console, en faisant
$(.mesTextarea).each(function() { 
var thisTextarea = $(this).attr('id');
$.ajax {( ....
              success: function(myTags) { console.log(myTags) // OK;  mais comment passer myTags à InitialTags  ? }
           })

Je ne sais pas comment passer le résultat dans TagEditor.

Si je dis
 $(this).tagEditor({ initialTags : [myTags]
// $(this).tagEditor étant nested dans $(.mesTextarea).each(function()  
ça ne fonctionne pas


Si je dis
$(.mesTextarea).each(function() { 
var thisTextarea = $(this).attr('id');
$.ajax {(
              success: function(myTags) { thisTextarea.val(myTags);  } //  Non plus
           })


En résumé, comment mettre dans initalTags le contenu récupéré en $.ajax ?
Merci

Modifié par Vape6 (01 Apr 2016 - 14:11)
Comme dans mon exemple, si c'est un json, tu dois pouvoir écrire directement :
$(this).tagEditor({ initialTags : myTags})

Non ?