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 16 Sep 2008 à 15:10

OK ^^ :D
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 17 Sep 2008 à 08:31

voilà le zip
quelques explications.
  • common.php effectue la connexion à la BDD et inclut le fichier functions_php.php.
    j'ai en plus mis un code provisoire
    Code: Tout sélectionner
    $_SESSION['player'] = 'Fondateur';
    qui m'a servi pour tester l'ensemble, n'ayant pas accès au script de login. tu pourras enlever cette ligne dés que tu auras un login opérationnel avec inscription du nom du connecté dans la variable de session 'player'
  • dans functions_php.php:
    • j'ai ajouté une fonction get_fields qui va retourner un array contenant les champs de ta table
    • effectué quelques modifications des fonctions, notamment au niveau de addpoints. en effet cette fonction effectue des directives d'affichage, or quand on fait
      Code: Tout sélectionner
      echo ma_fonction()
      on s'attend à ce que cette fonction retourne une chaine de caractéres ou un nombre, pas qu'elle l'affiche elle-même donc cette fonction doit faire
      Code: Tout sélectionner
      return "la chaine à afficher"
      et pas
      Code: Tout sélectionner
      echo "la chaine à afficher"
      c'est à cause de ce bug que l'image à cliquer s'affichait en premier
  • dans index.php
    • inclusion de common.php, récupération du pseudo par la variable de session, appel de la fonction get_fields
    • à partir de là, avec la boucle $row qui parcourt la table et la boucle $j qui parcourt les champs, tu obtiens:
      • le nom du champ avec $fields[$j]
      • sa valeur avec $row[$j]
    • la suite devient donc simple
  • process.php
    • comme pour index.php, on inclut common.php, récupère pseudo et liste de champs.
    • Code: Tout sélectionner
      $element=$_GET['el'];
      nous indique le n° du champ qui a été cliqué. on va donc récupérer le nom du champ avec $fields[$element]
    • ce code
      Code: Tout sélectionner
      $sql_ary = array(
         $element => array('field' => $fields[$element], 'lect'=> $fields[$element])
         );
      était tout à fait inutile. en efet j'avais mal compris ta demande, je croyais que tu voulais une requête du style
      Code: Tout sélectionner
      UPDATE ma_table SET champ1=champ2+1
      donc, avec 2 champs différents, alors qu'en fait tu voulais l'incrémentation d'1 seul champ. cela simplifie considérablement les choses:
      Code: Tout sélectionner
      $element = $_GET['el'];
      $fieldname = $fields[$element];
      mysql_query("UPDATE aptitudes SET $fieldname = $fieldname +1 WHERE pseudo='$pseudo'") or die(mysql_error());
  • le javascript. j'ai optimisé et simplifié la requête ajax. en effet il y a un objet ajax nommé updater qui place directement le retour de requête dans le tag div désigné. ça donne ici pour le div action_result:
    Code: Tout sélectionner
             var myAjax = new Ajax.Updater(
                'action_result',
                url,
                {
                   method: 'get',
                   parameters: parametres
                }
             );

voilou, voilou. chez moi, en tous cas ça marche, sauf que j'ai du récupérer mon tout premier répertoire js pour que les barres s'affichent. en effet
Code: Tout sélectionner
<script type="text/javascript" src="js/bramus/jsProgressBarHandler.js"></script>
ne marchait pas parce que ton dernier zip n'avait pas de répertoire js/bramus et ton fichier jsProgressBarHandler.js était dans le répertoire js. donc cette ligne sera à adapter en fonction de l'organisation de tes répertoires
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagede Gryffondor le 17 Sep 2008 à 11:32

Ba sa marche nikel sauf (et oui et oui XD :mrgreen: ) que pour la fonction suivante:

Code: Tout sélectionner
function result_champs($result)
{
   $query_result_champs = mysql_query("SELECT ".$result." FROM aptitudes WHERE pseudo='Fondateur'") or die(mysql_error());
   $result_champs = mysql_fetch_array($query_result_champs);
   $result_champs = $result_champs[$result];
   echo "+1 pour votre aptitude de $result";
   return $result_champs;
}

l' 'echo' ne s'affiche pas lors du rajout de mes points après avoir cliqué sur l'image +.
J'ai simplement:
Points ajoutés avec succès
Bon c'est pas génant pas + que sa mais c'est toujours bien pour l'utilisateur de savoir quel point a été ajouté. ^^
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 17 Sep 2008 à 13:55

hi hi, normal, la fonction result_champs n'est plus utilisée (et j'avais pas vu que tu y avais fait cet ajout)
dans process.php remplace
Code: Tout sélectionner
      echo "Point ajouté avec succès <br />";
      $element = $_GET['el'];
      $fieldname = $fields[$element];
par
Code: Tout sélectionner
      $element = $_GET['el'];
      $fieldname = $fields[$element];
      echo "+1 pour votre aptitude de $fieldname";
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagede Gryffondor le 18 Sep 2008 à 23:41

Ba merci, je viens de tester et sa fonctionne.
Bon j'arrête de t'embêter avec ce script (sa fait quand même près d'un bon mois que tu es dessus) et je te remercie fortement :wink:

Ah vi, euh... Attend un peu... Non mais tkt, c'est pas pour modifier du code, c'est juste une demande d'explication a propos de ton petit bout de javascript ^^
J'ai a peu près compris tout le script mais quand on débute certaines choses parraissent vagues.
J'ai donc voulu moi même testé ce script pour tester ma compréhension.
J'ai imaginer un lien qui lors du onclick augmenterait une valeure de +1

Prenons par exemple une BDD mysql avec un champ nommé A ayant pour résultat 0.
Voici le code PHP qui augmente la valeur du champs lors du onclick sur le lien:
Code: Tout sélectionner
<?php
if (isset($_GET['clic']))
{
    mysql_query("UPDATE ma_table SET A='".$result."' +1 WHERE pseudo = Gryffondor") or die("Erreur");
    echo "Fait";
}
else
{
    function result_champs()
    {
        $query_champs = mysql_query("SELECT 'A' FROM ma_table WHERE pseudo=Gryffondor");
        $champs_si = mysql_fetch_array($query_champs);
        $champs = $champs_si['A'];
        $result = "<div id='champs'>$champs</div>";
   return $result;
    }

    function increment()
    {
   $query_champs = mysql_query("SELECT 'A' FROM ma_table WHERE pseudo=Gryffondor");
        $champs_si = mysql_fetch_array($query_champs);
        $champs = $champs_si['A'];
   if ($champs == 0)
   {
      return '<a href="#" onclick="element_update($champs);return false;">Cliquer ici pour incrémenter la valeure</a>';
   }
        else
        {
              return 'Impossible d'incrémenter la valeure';
        }
    }
    $inc=true
    echo result_champs(); 
    echo increment($inc);
}
?>


Voici le code javascript appelé:
Code: Tout sélectionner
<script type="text/javascript">
function afficheReponse(requete) {
      alert(requete.responseText);
   }
   function element_update(inc){
      var champs = parseInt($('champs').innerHTML);
      if(champs = 0){
         var url = 'index.php?clic';
         var parametres = 'clic='+inc;

         var myAjax = new Ajax.Updater(
            'action_result',
            url,
            {
               method: 'get',
               parameters: parametres

            }
         );
         Element.update('champs', champs + 1);
      }else{
         alert('Action impossible');
      }

   }
   </script>

Je sais pas si je comprend bien ton script javascript mais normalement var champs est censé correspondre à la valeure résultant du champs de ma table et les données dynamique sont affcihés grâce à cette variable. Ainsi dans mon cas ou la variable champs vaut 0, l'URL est exécutée et la boucle if de mon code PHP l'est également (if (isset($_GET['clic']))
Cette condition est donc exécutée et la requêtte qu'elle contient aussi.
Seul soucis, la requêtte n'est pas éxécutée et lors de l'évènement onclick, j'ai la fenêtre suivante qui s'affiche:
Action impossible
Cela veut donc dire que le javascript lis la variable champs en la voyant différent de 0.

Ainsi, mon exemple d'application est totalement faussé = J'ai pas compris entièrement le script js :cry:
Je sais, je suis chiant mais j'ai envie de comprendre les scripts que j'utilise.
Donc si tu pouvais m'expliquer comment fonctionne ce script javascript, je t'en serait très reconnaissant ^^
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 19 Sep 2008 à 08:39

tu as fait une erreur ici
Code: Tout sélectionner
if(champs = 0){
le symbole '=' est un symbole d'affectation et non un symbole de comparaison
donc là, tu mets la valeur champs à zéro
pour comparer c'est ==
Code: Tout sélectionner
if(champs == 0){


nota la fonction afficheReponse(requete) ne sert plus à rien, j'avais oublié de l'enlever quand j'ai remplacé ajax.Request par ajax.Updater
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

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

Messagede Gryffondor le 19 Sep 2008 à 08:44

Ok mais le problème est persistant, la requêtte n'est pas effectuée...

PS: Ah si Spit, sa maaaarche !!! :mrgreen: Euh, effectivement, c'était un problème d'opérateur comme tu me l'avais signalé plus haut.
Ba c Cool !!!
Merci encore. Je met réglé XD :wink:
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 Gryffondor le 08 Oct 2008 à 14:05

Bonjour,

Je remonte encore ce sujet car jai encore un petit léger soucis dessus :mrgreen:
Alors Spit, déja merci encore, le script fonctionne très bien et parfaitement.
Maintenant j'ai un dernier soucis qui je pense n'a pas trop avoir avec la conception du script que Spit ma fourni mais plutôt sa serait une question d'intégration avec les bonnes fonctions à utiliser.

Je m'explique.

Quand j'appel ma page PHP (contenant le script de spit):
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>
    <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%== 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%== 0)
        {
            echo 
"</tr>\n";
        }
        
$i++;
    }
}
echo 
"</table>";
}

?>

appelé sur mon navigateur de cette manière: http://monsite.com/lescript.php, tout fonctionne niquel.
Mais sur mon site j'utilise la librairie prototype avec laquelle j'utilise la fonction Ajax.Updater() qui me permet d'afficher mes pages dynamiquement, en faite en modifiant qu'une div et donc sans rechargement intégrale de ma page. En chargeant ma page lescript.php via cette méthode Ajax, le javascript de Spit (ci-dessus) ne marche plus et du coup les images appelés grâce à ce script ne s'affiche pas non plus.

Après quelques recherches sur le web, j'ai lu qu'en utilisant la fonction eval() en javascript, je pourrais peut être remédié à ce problème (C'est ce que j'ai lu après j'en sais strictement rien) puisqu'elle permettrait de réutiliser du code javascript.

Mais je ne sais pas comment utiliser cette fonction.

Merci d'avance pour l'éclairement à ce sujet.
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 à 15:12

En chargeant ma page lescript.php via cette méthode Ajax, le javascript de Spit (ci-dessus) ne marche plus .[/quote]
euh, jusqu'à plus ample informé, le script que je t'ai fourni utilise prototype.js et sa fonction ajax_updater, alors j'aimerais bien savoir à quels tripatouillages maisons tu t'es livré pour que ça ne marche plus
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
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 à 15:24

Ba en faite, voici la page: http://last-survivor.com/ls/aptitudes.php
En y accédant directement de cette façon, c'est niquel ^^

Mais avec prototype, en y accédant avec le script suivant (page index.php):
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>


J'ai bien lescript.php qui s'affiche dans la div ayant l'id 'bloccenter' mais la progressbar n'apparait plus et en cliquant sur le bouton +, rien ne se passe. En gros, le javascript n'est plus exécuté je crois.
Pour être un peu plus clair car je crois je baffoue mes mots XD, un gars rencontrait je suppose le même problème que moi:
ça fait un peu près 1 mois que je cherche à exécuter mon code javascript contenu dans mes données chargées via AJAX. Tout le monde me dira qu’il existe eval, seulement voila, ceci ne marche uniquement pour le code éxécuté en live et non pour les déclaration de fonction.

Voici son article et il parle de prototype aussi: http://www.xorax.info/blog/programmatio ... lobal.html
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 08 Oct 2008 à 15:29

Salut à tous,

Je prends le trains en marche et je ne suis pas expert mais si tu utilises déjà prototype tu dois charger le .js dans ton header et ce n'est donc pas la peine je pense de recommencer.

Ensuite je me demande si le script de Spit ne devrait pas être lui aussi dans la page principale si possible le header plutôt que dans la page chargée par Ajax dans ton div.
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 08 Oct 2008 à 15:39

J'ai tenté ta méthode Glouton mais sa ne change rien.
Le javascript n'est toujours pas éxécuté dans ma div. :(
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 à 17:13

je vois ceci
Code: Tout sélectionner
function affdyn(div,liens)

où se trouve l'appel à ajax_updater
mais ou se trouve le code qui appelle cette fonction ?
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
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 à 17:42

Euh dans mon script il y a tout.
Bien sur j'ai inclus dans mon header le fichier prototype.js et la fonction affdyn() est donc appelé lors du onclick.
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 à 18:47

Gryffondor a écrit:Euh dans mon script il y a tout..

bon, ma boule de cristal étant brisée, j'ai plus qu'à aller me coucher 8)
Avatar de l’utilisateur
spitfire pat
Superstar
 
Messages: 14455
Inscription: 18 Sep 2004 à 15:43
Localisation: bourgogne

PrécédenteSuivante

Retourner vers Coding, Webmastering et Sécurité informatique

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré 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 •