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

Langage PHP Discussion :

Connaître dans PHP ce qui a été modifié par javascript ?


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut Connaître dans PHP ce qui a été modifié par javascript ?
    Bonjour,
    J'ai un souci avec le site internet que je suis en train de faire.
    En gros dans ma page, il y a des miniatures d'images et avec javascript et onclick dans la balise de l'image (donc avec une petite valeur de width et height); je modifie le src d'une image affichée en dessous, donc lorsque je clique sur une miniature, j'ai la même image qui s'affiche en gros (car dans cette balise img je n'ai pas changé les dimensions).

    Voilà l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo '<img src="'.$donnees['image_chemin'].'" alt="miniature" id="miniapaysage" width="192" height="136" onclick="changerimage(this.src)" />'; ?>
    Le code javascript (l'id de ma grande image est "grande"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function changerimage(srcimage)
    {
    	document.getElementById("grande").src=srcimage;
    	document.getElementById("urlimage").value = srcimage;
    }
    et dans mon index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo'<img src="'.$urlimagedepart.'" alt="image participant" id="grande" />'; ?>

    Le problème c'est que après, je ne "sais" plus quelle est la nouvelle image affichée dans la page en cours (dans mon index).

    Ma question est tout simplement : comment puis-je connaître la nouvelle url de l'image modifiée ? J'en ai besoin pour savoir de quelle image il s'agit et afficher les informations la concernant.

    (Je ne peux pas faire de formulaire avec un champs hidden, ça n'irait pas avec le modèle de la page)

    Merci pour votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    A quel moment tu voudrais récupérer l'info ? quelle action ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Eh bien en fait l'url de l'image me permet de l'identifier, donc d'aller récupérer son titre et sa description.
    Donc après avoir cliqué sur l'image, j'aimerais pouvoir connaître laquelle est-ce. Mais je n'ai trouver aucune voie pour faire transiter cette info.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Si tu veux récupérer l'url coté serveur au moment du clique sur l'image il faut que tu l'envoi en Ajax.

    vite fait ça donnerait un truc 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function getXhr(){
     
      var xhr = null;
     
      if(window.XMLHttpRequest) // Firefox et autres
         xhr = new XMLHttpRequest();
      else if(window.ActiveXObject){ // Internet Explorer
         try {
                     xhr = new ActiveXObject("Msxml2.XMLHTTP");
                 } catch (e) {
                     xhr = new ActiveXObject("Microsoft.XMLHTTP");
                 }
      }
      else { // XMLHttpRequest non supporté par le navigateur
         alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
         xhr = false;
      }
      return xhr;
    }
     
    function go(){
     
      var xhr = getXhr();
     
      // Ici comment faire du post
      xhr.open("POST","ajax.php",true);
     
      // ne pas oublier ça pour le post
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
      // ne pas oublier de poster les arguments : ici, l'url de l'image
      xhr.send(srcimage);
    }
    et tu appel la fonction go() au moment du click dans la fonction changerImage() dans le cas présent.

    ajax.php est le fichier où tu récupèrera la donnée coté serveur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Merci pour ton aide !
    Donc j'ai essayé de mettre en place ce que tu m'as dit :
    j'ai créé un nouveau fichier .js où j'ai mis les deux fonctions, en remplaçant ajax.php par mon index.php et en ajoutant go() dans ma fonction changerimage().
    mais ensuite dans mon index, comment j'accède à ce qui a été envoyé ?
    Merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Tu y accède comme une donnée post normale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $urlImage = $_POST['srcimage'];

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    J'ai essayé, mais j'ai une erreur comme quoi, srcimage est un undefined index. J'ai aussi essayé de tourner les fonctions dans tous les sens mais pas de résultat
    La console javascript de chrome me dit :
    "Uncaught TypeError: Cannot set property 'value' of null"; je ne suis pas sûr de bien comprendre.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Qu'est ce que tu essaye de faire avec srcimage coté serveur exactement ?
    Je serais toi j'essayerai de l'enregistrer dans une base ou dans un fichier.
    A quel moment il fait cette erreur exactement ?

    up: tu dois avoir un problème dans ton js de redimensionnement changement de l'image quand tu paramètre la value d'un élément html. A priori ça n'a pas l'air de venir des fonctions Ajax.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    En fait je veux juste connaître l'url pour identifier l'image cliquée, et aller chercher dans ma base sql son titre et sa description.
    Non en fait je viens de vérifier, ce que j'ai écrit concernait une de mes variables au niveau de l'erreur sur la console.
    Après il m'a écrit que lorsqu'on envoie srcimage dans go(), il ne connaissant pas srcimage; donc j'ai rajouté srcimage en argument dans go() et je l'ai envoyé aussi dans changerimage; mais j'ai toujours "undefined index", mais plus d'erreur avec la console.

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Oui effectivement, j'avais oublier d'adapter mon code au cas présent en passant srcimage à la fonction go(), mais tu as rectifié par toi même .

    A quel niveau tu as l'erreur "undefined index" ?

    Je crois que tu as un problème à ce niveau :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function changerimage(srcimage)
    {
    	document.getElementById("grande").src=srcimage;
    	document.getElementById("urlimage").value = srcimage;
     
     
    }

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Donc c'est lorsque j'essaye d'afficher $_POST['srcimage'] au niveau de mon index, sur ma page, j'ai l'encadré orange qui me dit que srcimage est undefined index; en gros je suppose qu'il ne l'a pas reçu, pourtant je n'ai pas déceler d'erreur dans la console.
    (au niveau de la pratique : j'ai mis les fonctions dans un autre fichier .js, que j'ai ajouté avec les balises <script> avant mon fichier changerimage.js; mais j'ai aussi essayé de rajouter les fonctions au-dessus dans le même fichier, mais ça ne marche pas non plus).

  12. #12
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Oui effectivement, j'avais oublier d'adapter mon code au cas présent en passant srcimage à la fonction go(), mais tu as rectifié par toi même .

    A quel niveau tu as l'erreur "undefined index" ?

    Je crois que tu as un problème à ce niveau :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function changerimage(srcimage)
    {
    	document.getElementById("grande").src=srcimage;
    	document.getElementById("urlimage").value = srcimage;
     
     
    }
    Inverse, par Exemple : srcimage = document.getElementById("grande").src;

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    En fait l'erreur de value = null que j'avais tout à l'heure, c'était pour autre chose, mais c'est innofensif pour ce que je veux faire maintenant; même en neutralisant la ligne ça ne change rien.
    Par contre je comprends pas pourquoi tu me demandes de modifier ma ligne ?
    Elle fait bien ce que je lui demande, c'est-à-dire, modifier l'image centrale en cliquant sur la miniature : la src de l'image centale prend la valeur de l'url de la miniature cliquée. En gros, si j'inverse, ça, ne marche plus.
    Mais mon problème c'est de pouvoir connaître cette valeur d'url modifiée dans mon index.

  14. #14
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Citation Envoyé par ALeX850 Voir le message
    Donc c'est lorsque j'essaye d'afficher $_POST['srcimage'] au niveau de mon index, sur ma page, j'ai l'encadré orange qui me dit que srcimage est undefined index;
    Tu ne peux pas faire ça car la variable $_POST['srcimage'] n'existe qu'au moment où tu l'envoi dans ajax.php ou index.php. Si tu affiche index.php même juste après tu n'y aura donc pas accés. Il faut que tu l'enregistre dans ta base ou dans un fichier juste après son l'avoir récupéré dans index.php et que tu affiche l'enregistrement par la suite.

    Si tu veux rafficher la donnée directement sur la page en cours sans avoir à la recharger pour faire ta vérif tu peux le faire en ajax en rajoutant ce code dans go()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // On défini ce qu'on va faire quand on aura la réponse
      xhr.onreadystatechange = function(){
     
      	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      	if(xhr.readyState == 4 && xhr.status == 200){
          reponse = xhr.responseText;
      		// On se sert de innerHTML pour afficher la donnée dans la page actuelle
      		document.getElementById(un Id que tu aura défini dans ton html).innerHTML = reponse;
     
      	}
      }

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    En gros, est-ce qu'il faudrait que je fasse un script php (qui sera la destination de go()) qui modifie une entrée d'une table, par exemple "url derniere image cliquée"; puis j'irais la chercher ensuite pour l'afficher ?
    Mais si je fais ça, n'y a-t-il pas un problème si deux personnes, imaginons, clique sur une image dans le même laps de temps ?

  16. #16
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Oui c'est exactement ça.

    Pour ton problème de gestion pour plusieurs utilisateurs c'est autre chose. Il faut que tu gère des sessions voir des comptes utilisateur avec inscription, authentification....

    Mais essaye déjà comme ça et si ça marche n'oublie pas de mettre le post en résolu.

    Pour la gestion des comptes tu pourra créer un autre post par la suite.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Bah j'ai déjà fait un système de sessions et de comptes utilisateur sur le site. Mais je vois pas trop l'intérêt des comptes utilisateurs à ce niveau là vu qu'il faut que tout le monde puisse voir les infos; donc faut que je gère tous les visiteurs indépendemment non ?
    Bon je vais essayer ça, merci encore pour ton aide.

  18. #18
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 351
    Par défaut
    Citation Envoyé par ALeX850 Voir le message
    Mais je vois pas trop l'intérêt des comptes utilisateurs à ce niveau là vu qu'il faut que tout le monde puisse voir les infos;
    Si tu veux vraiment pas gérer ça avec des comptes utilisateurs tu peux aussi passer par des cookies pour retenir les infos de personnalisations de chaque utilisateur.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    Après avoir essayé toute la journée, je n'y arrive toujours pas:
    J'ai réfléchi à plein de méthodes différentes sans succès.

    Finalement j'ai essayé de faire comme tu as proposé, mais au début je n'arrivais pas à recevoir la donnée, donc j'ai regardé des tutos sur AJAX, et j'ai modifié ma fonction de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function changerImage(srcimage)
    {
    	var xhr = getXMLHttpRequest();
    	var urlimage = encodeURIComponent(srcimage);
    	xhr.open("GET", "enregistrerurl.php?src=" + urlimage, true);
    	xhr.send(null);
            document.getElementById("grande").src=srcimage;
    	document.getElementById("urlimage").value = srcimage;
    }
    Je ne sais pas pourquoi, mais si je mettais "document.getElementById("grande").src=srcimage; et document.getElementById("urlimage").value = srcimage;" aau début, ça ne marchait pas.

    et après dans enregistrerurl.php je fais les traitements, et ensuite bien sûr je me suis rendu compte que de faire ça, ça ne pouvait pas marcher car de toute manière la page n'était pas régénérée !!

    Il n'y a rien à faire, j'ai pas le niveau pour comprendre correctement les tutos sur AJAX (alors que j'avais vu le système de callback avec GTK); je ne vois absolument pas comment afficher le titre et la description.

    Alors j'ai pensé à une solution où j'aurais en permanence dans ma page un tableau à jour contenant l'url avec le titre et la description correspondante, mais je ne sais pas comment l'utiliser en javascript au moment où le onclick de l'image est déclencher; j'ai cherché mais à vrai dire je n'ai pas trouvé, alors si vous pouviez m'aider sur ce point, je vous remercie.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 36
    Par défaut
    En fait non, le mieux que je puisse faire c'est :
    lors du traitement en PHP, je vérifie dans la BDD à quel titre, quelle description correspond src image, puis je renvoie une chaine, et dans la callback je parse la chaine pour faire les modifs avec innerHTML.

    Mais plusieurs problèmes:
    est ce que lors du onclick je peux passer en paramètre et la srcimage dont j'ai absolument besoin et la fonction callback qui modifiera les données avec la réponse du serveur ?

    De toute manière, j'ai fais des tests en suivant les tutos, mais je n'arrive pas à avoir la moindre réaction basique :

    J'ai au préalable ajouter le script de création de XHR
    Puis ensuite j'ai le .JS suivant:

    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
     function changerImage(callback) {
    	var xhr = getXMLHttpRequest();
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			callback(xhr.responseText);
    		}
    	};
     
    	xhr.open("GET", "enregistrerurl.php", true);
    	xhr.send(null);
    }
     
    function readData(sData) {
    	alert(sData);
    }
    Le traitement en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php header("Content-Type: text/plain");
    	echo "OK"; ?>
    Et enfin je l'appelle lors du clic sur une image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="'.$donnees['image_chemin'].'" alt="Miniature" id="miniaportrait" width="136" height="192" onclick="changerImage(readData);" onMouseOver="Javascript:this.width=165;this.height=206;" onMouseOut="Javascript:this.width=136;this.height=192;" />';
    Et quand je clique je n'ai rien qui se passe ! pourtant il me semblait que c'était le test le plus basique que je puisse faire.

    Merci de m'éclairer

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD17] Comment savoir ce qui a été modifié par l'utilisateur ?
    Par meganulos dans le forum WinDev
    Réponses: 8
    Dernier message: 24/10/2013, 16h32
  2. Réponses: 1
    Dernier message: 16/11/2007, 10h28
  3. Réponses: 4
    Dernier message: 08/02/2007, 20h01
  4. [Excel VBA]fonction dans une cellule qui modifie une autre cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/01/2007, 17h43
  5. HTML modifié par Javascript
    Par Warz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 21h53

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