Résultats d'une table dans un tableau: question subcidiaire

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans ce forum.

Modérateur: Equipe

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 08 Oct 2008 à 19:00

Je suis pas sur qu'on se comprend :roll: Pourtant voici le script:
Code: Tout sélectionner
<script type="text/javascript">
function affdyn(div,liens)
{
   var div = div;
   var url = liens;
   var MyAjax = new Ajax.Updater(div,url,{method: 'get'});   
}
</script>
<div class="aptitudes"><a href="#" onClick="affdyn('bloccenter','lescript.php')"></a></div>
<div id="bloccenter">// Contenu via méthode Ajax chargé dynamiquement</div>

Je peux rien mettre de + hormis que si mapage lescript.php contient du code javascript, ce qui est le cas avec:
Code: Tout sélectionner
<!-- jsProgressBarHandler prerequisites : prototype.js -->
   <script type="text/javascript" src="js/prototype/prototype.js"></script>

   <!-- jsProgressBarHandler core -->
   <script type="text/javascript" src="js/bramus/jsProgressBarHandler.js"></script>
   <script type="text/javascript">
   /**
    *
    * @access public
    * @return void
    **/
   function afficheReponse(requete) {
      alert(requete.responseText);
   }
   function element_update(element){
      var distrib = parseInt($('distrib').innerHTML);
      if(distrib>0){
         myJsProgressBarHandler.setPercentage('element'+element, '+1');
         var url = 'aptitudes.php?el';
         var parametres = 'el='+element;

         var myAjax = new Ajax.Updater(
            'action_result',
            url,
            {
               method: 'get',
               parameters: parametres
            }
         );
         Element.update('distrib', distrib - 1);
      }
   }
   </script>

Ba prototype efface tout ce qui se trouve entre les balise <script type="text/javascript"></script> donc tous les codes javascript.
Je l'ai su car en affichant la source de la page sur mon navigateur, le code javascript n'apparaissait pu.
Après je peux pas donner d'avantage d'info, pas plus que j'en ai moi même...
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede spitfire pat le 08 Oct 2008 à 20:31

ta fonction affdyn lance une requête ajax sur un script php qui ne fait rien à part contenir des fonctions javascript qui ne sont pas appelées, du moins pour ce que tu m'en as montré
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14453
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 08 Oct 2008 à 21:24

Ba je sais pas trop comment m'expliquer...
Si tu veux on peut faire sa, sa sera peut être plus simple:
Code: Tout sélectionner
<div class="aptitudes"><a href="#" onClick="new Ajax.Updater(bloccenter,lescript1.php,{method: 'get'})')"></a></div>
<div class="aptitudes"><a href="#" onClick="new Ajax.Updater(bloccenter,lescript2.php,{method: 'get'})"></a></div>
<div class="aptitudes"><a href="#" onClick="new Ajax.Updater(bloccenter,lescript3.php,{method: 'get'})"></a></div>
<div id="bloccenter">// lescript1 ou lescript2 ou le script3 chargé dynamiquement selon le onClick sélectionné</div>

Mais je suppose qu'à ce stade tu as compris le fonctionnement de ce petit bout de script. Au cas où, il permet de changer ma div 'bloccenter' par un contenu correspondant au fichier passer en paramètre dans le onClick sélectionné (donc pas de rechargement de ma page au complet, seulement le contenu de ma div qui change).

Supposons que tout soit clair la... Il est évident que ma fonction affdyn précédente faisait bien quelque chose à part contenir des fonctions javascripts.
La preuve en est puisque ma div 'bloccenter' change de contenu selon le onClick.

Et donc mon seul soucis est que le javascript placé dans mes fichiers lescriptX.php disparait lors de leur inclusion dans 'bloccenter'.
Mon problème ne peut être plus simple que cela pourtant la solution est plus rigide que ce dernier.

Voici la fonction Ajax.Updater:
Code: Tout sélectionner
Ajax.Updater = Class.create(Ajax.Request, {
  initialize: function($super, container, url, options) {
    this.container = {
      success: (container.success || container),
      failure: (container.failure || (container.success ? null : container))
    };

    options = Object.clone(options);
    var onComplete = options.onComplete;
    options.onComplete = (function(response, json) {
      this.updateContent(response.responseText);
      if (Object.isFunction(onComplete)) onComplete(response, json);
    }).bind(this);

    $super(url, options);
  },

  updateContent: function(responseText) {
    var receiver = this.container[this.success() ? 'success' : 'failure'],
        options = this.options;

    if (!options.evalScripts) responseText = responseText.stripScripts();

    if (receiver = $(receiver)) {
      if (options.insertion) {
        if (Object.isString(options.insertion)) {
          var insertion = { }; insertion[options.insertion] = responseText;
          receiver.insert(insertion);
        }
        else options.insertion(receiver, responseText);
      }
      else receiver.update(responseText);
    }
  }
});

Tiré de prototype.js
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede spitfire pat le 09 Oct 2008 à 04:39

euh, il est inutile de me donner des extraits de prototype.js, pour mémoire c'est moi qui t'ai fait découvrir la fonction ajax.updater 8)
et tu n's pas compris ce que je voulais dire.
je reprends ton précédent post
Code: Tout sélectionner
<div class="aptitudes"><a href="#" onClick="affdyn('bloccenter','lescript.php')"></a></div>
au vu de ta fonction affdyn, une requête ajax va être lancée vers lescript.php et dont le résultat s'affichera dans le div bloccenter.

mais du contenu de lescript.php tu ne me montres que des fonctions javascript. soit tu ne m'en as pas montré le contenu complet (et alors COMMENT VEUX-TU que je devine pourquoi ça ne marche pas ?) soit il est complet et dans ce cas ta requête ajax ne fera RIEN
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14453
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 09 Oct 2008 à 16:00

Ok ok, j'ai compris. Mais en faite, je vais te mettre le contenu complet avec un fichier zip contenant tous les fichiers néccéssaires au fonctionnement du script.
Cependant, la où je voulais en venir, ce n'est pas dans le fonctionnement du script en lui même qu'il y a un soucis car le script fonctionne correctement sans l'utilisation de Ajax.Updater() pour afficher la page dynamiquement mais avec, le code javascript est éffacé quelque soit le fichier contenant du javascript donc le problème n'est pas lié au module de progressbar.
Code: Tout sélectionner
<?php
session_start(); // On démarre la session AVANT toute chose
include('../common.php');

if (isset($_GET['el']))
{
   $pseudo = $_SESSION['player'];
   $fields = get_fields();
   $query_apt_distrib = mysql_query("SELECT distribution FROM aptitudes WHERE pseudo='$pseudo'") or die(mysql_error());
   $apt_distrib = mysql_fetch_array($query_apt_distrib);
   $apt_distrib = $apt_distrib['distribution'];
   if ($apt_distrib > 0)
   {
      $element = $_GET['el'];
      $fieldname = $fields[$element];
   
      mysql_query("UPDATE aptitudes SET distribution='".$apt_distrib."'-1 WHERE pseudo='$pseudo'") or die(mysql_error());
      echo "<span class='ok'> Vous avez ajouté 1 point supplémentaire<br />pour votre aptitude de $fieldname!</span> <br />";
      
      mysql_query("UPDATE aptitudes SET $fieldname = $fieldname +1 WHERE pseudo='$pseudo'") or die(mysql_error());
   }
   else
   {
      echo "<span class='no'>Tous les points ont été consommés !</span>";
   }
}
else
{
$pseudo = $_SESSION['player'];
$titlepage = 'Bienvenue '.$pseudo.'! vous êtes un survivant.';

?>
<link href="styles/frame.css" rel="stylesheet" media="screen" />
<!-- jsProgressBarHandler prerequisites : prototype.js -->
   <script type="text/javascript" src="../js/prototype/prototype.js"></script>

   <!-- jsProgressBarHandler core -->
   <script type="text/javascript" src="../js/bramus/jsProgressBarHandler.js"></script>
   <script type="text/javascript">
   /**
    *
    * @access public
    * @return void
    **/
   function afficheReponse(requete) {
      alert(requete.responseText);
   }
   element_update=function(){
      var distrib = parseInt($('distrib').innerHTML);
      if(distrib>0){
         myJsProgressBarHandler.setPercentage('element'+element, '+1');
         var url = 'aptitudes.php?el';
         var parametres = 'el='+element;

         var myAjax = new Ajax.Updater(
            'action_result',
            url,
            {
               evalScripts:true,
               method: 'get',
               parameters: parametres
            }
         );
         Element.update('distrib', distrib - 1);
      }
   }
   </script>
   <div id="cadre_center_frame">
<?php
echo "<br /><div id='action_result'></div>";
echo "<br />" . aptitude_distrib($pseudo);
$fields = get_fields();
$nb_fields = sizeof($fields);
$sql = "select * from aptitudes WHERE pseudo='$pseudo'";
$result = mysql_query($sql) or die(mysql_error());
$i=0;
echo '<table border="0" align="center">' . "\n";
while($row = mysql_fetch_row($result))
{
   for($j=1; $j<($nb_fields -1);$j++)
   {
      if ($i%1 == 0)
      {
         echo'<tr>';
      }
      echo "<td>";
      $element = $fields[$j];
      $value = $row[$j];
      echo '<td>' . $element . '</td> <td><span class="progressBar" id="element' . $j . '">   ' . $value . '</span></td> <td>' . addpoints($j) . '</td>';
      echo "</td>\n";
      if ($i%1 == 0)
      {
         echo "</tr>\n";
      }
      $i++;
   }
}
echo "</table>";
}

?>
   </div>

Voici le zip complet: ZZZZZIIIIIIIIPPPPP
Voila :wink:

Edit: J'ai oublié de te dire comment tester le problème XD. Euh alors sur index.php tu clic sur le bouton 'aptitudes' (le script ne devrait pas marcher) et enfin tu teste en y accédant via: http://repertoirelocale/aptitudes.php, donc en tapant le chemin complet vers le script (le script devrait fonctionner la).
Dernière édition par Gryffondor le 09 Oct 2008 à 17:21, édité 2 fois.
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede glouton le 09 Oct 2008 à 16:22

Salut,

C'est bien pour ça que je proposais d'extérioriser le javascript contenu dans le fichier que tu charges dans ton DIV. Il y a de forte chance pour qu'il faille modifier le script mais de toute façon il est souvent voir toujours préférable d'extérioriser ses javascripts. Les super puristes vous dirons même qu'il ne doit jamais y avoir le moindre script au sein du HTML et que tout doit être dans des fichiers .js appeler dans le header.
glouton c'est wolverine en anglais.
C'est petit, tout rond et ça bouffe tout ! ;)
Web2Com | Ouverture Facile | Le Nid Barbar
Avatar de l’utilisateur
glouton
Maître-posteur
Maître-posteur
 
Messages: 483
Inscription: 26 Sep 2008 à 00:41
Localisation: Youhou ! Je suis là. Pourquoi ne me voyez-vous pas ?

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 09 Oct 2008 à 16:48

Non mais c'est pas à cause de sa car en extériosant le javascript comme tu dis, j'ai toujours le même problème.

Rappel: Fichier zip dans mon précédent message

Edit: J'ai oublié de te dire comment tester le problème XD. Euh alors sur index.php tu clic sur le bouton 'aptitudes' (le script ne devrait pas marcher) et enfin tu teste en y accédant via: http://repertoirelocale/aptitudes.php, donc en tapant le chemin complet vers le script (le script devrait fonctionner la)
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede spitfire pat le 09 Oct 2008 à 18:11

eh bien je n'ai pas la moinde idée pourquoi ça ne marche pas
mais tes scripts sont bien inutilement compliqués et tu abuses des requêtes ajax pour pas grand-chose
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14453
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 09 Oct 2008 à 18:39

Oui, c'est un problème a réglé via Prototype en lui même selon leur site officiel.
J'ai shoppé la soluce sur leur site mais je vois pas comment l'utiliser:
About evalScripts and defining functions

If you use evalScripts: true, any <script> block will be evaluated. This does not mean it will get included in the page: they won't. Their content will simply be passed to the native eval() function. There are two consequences to this:

* The local scope will be that of Prototype's internal processing function. Anything in your script declared with var will be discarded momentarily after evaluation, and at any rate will be invisible to the remainder of the page scripts.
* If you define functions in there, you need to actually create them, otherwise they won't be accessible to the remainder of the page scripts. That is, the following code won't work:

Code: Tout sélectionner
// This kind of script won't work if processed by Ajax.Updater:
function coolFunc() {
  // Amazing stuff!   

}

You will need to use the following syntax:

Code: Tout sélectionner
// This kind of script WILL work if processed by Ajax.Updater:
coolFunc = function() {
  // Amazing stuff!  

}

That’s a common trickster, biting beginners in the ankle. So watch out!

En gros si je me trompe guère, sa dit que je devrais utiliser evalScripts: true en paramètre de Ajax.Updater() et que une fonction déclarée comme ceci:
Code: Tout sélectionner
function coolFunc() {
  // Amazing stuff!   

ne fonctionne pas et n'est pas lu (évaluée) par une page chargée avec Ajax.Updater()
Tandis que qu'une fonction déclarée comme ci après fonctionnera:
Code: Tout sélectionner
coolFunc = function() {
  // Amazing stuff!   
[/code]

Après je vois pas comment m'en sortir même si il semblerait que j'ai la solution a mon problème.
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede spitfire pat le 10 Oct 2008 à 17:45

Gryffondor a écrit:Après je vois pas comment m'en sortir même si il semblerait que j'ai la solution a mon problème.

ben non, ça aiderait éventuellement à la fonction appelée par le clic du bouton, mais pas l'affichage de tes barres.
j'ai fait des essais en réduisant aptitudes.php à un simple
Code: Tout sélectionner
<div id="progressbar"> 9</div>
et rien à faire, le script progressbar n'est pas appelé si ce code est passé à travers une requête ajax
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14453
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

Re: Résultats d'une table dans un tableau: question subcidiaire

Messagede Gryffondor le 10 Oct 2008 à 17:52

Hum, c'est bien embêttant puisque toutes les pages de mon site sont affichés grâce à la méthode Ajax.Updater() et mon site va faire un peu cloche avec une page qui sort du lot :( .

Dites moi qu'en informatique tout est possible SVP !!! :cry:
Last Survivor: La fin du monde ne fait que commencer...: Jeu de rôle en ligne massivement multijoueur. Ouverture en exclusivité nationale le 15 novembre 2008!
... Et seulement en france!
Serez vous le Last Survivor?
http://www.last-survivor.com
Avatar de l’utilisateur
Gryffondor
Maître des floodeurs
Maître des floodeurs
 
Messages: 2142
Inscription: 31 Juil 2006 à 19:48
Localisation: A la recherches des reliques mortelles

Précédente

Retourner vers Coding, Webmastering et Sécurité informatique

Qui est en ligne

Utilisateurs parcourant ce forum: spitfire pat et 1 invité

Liens : phpBB.biz • phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB-Services.com • phpBB3 Styles • phpBB podpora • Net Avenir • PromoBenef • Ticket Gagnant •